react-native-bg-geolocation 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/BgGeolocation.podspec +39 -0
  2. package/LICENSE +20 -0
  3. package/README.md +366 -0
  4. package/android/build.gradle +69 -0
  5. package/android/src/main/AndroidManifest.xml +53 -0
  6. package/android/src/main/java/com/bggeolocation/BgGeolocationActivityRecognitionReceiver.kt +116 -0
  7. package/android/src/main/java/com/bggeolocation/BgGeolocationBootReceiver.kt +44 -0
  8. package/android/src/main/java/com/bggeolocation/BgGeolocationForegroundService.kt +373 -0
  9. package/android/src/main/java/com/bggeolocation/BgGeolocationGeofenceReceiver.kt +55 -0
  10. package/android/src/main/java/com/bggeolocation/BgGeolocationHeadlessTask.kt +138 -0
  11. package/android/src/main/java/com/bggeolocation/BgGeolocationModule.kt +1030 -0
  12. package/android/src/main/java/com/bggeolocation/BgGeolocationMotionStateMachine.kt +159 -0
  13. package/android/src/main/java/com/bggeolocation/BgGeolocationPackage.kt +31 -0
  14. package/android/src/main/res/drawable/bg_geo_notification.xml +9 -0
  15. package/ios/BgGeolocation.h +14 -0
  16. package/ios/BgGeolocation.mm +709 -0
  17. package/ios/engine/AtomicBoolean.swift +48 -0
  18. package/ios/engine/BGActivityChangeEvent.swift +20 -0
  19. package/ios/engine/BGActivityConfig.swift +71 -0
  20. package/ios/engine/BGAppConfig.swift +92 -0
  21. package/ios/engine/BGAppState.swift +147 -0
  22. package/ios/engine/BGAuthorization.swift +85 -0
  23. package/ios/engine/BGAuthorizationAlertPresenter.swift +39 -0
  24. package/ios/engine/BGAuthorizationConfig.swift +50 -0
  25. package/ios/engine/BGAuthorizationEvent.swift +40 -0
  26. package/ios/engine/BGBackgroundTaskManager.swift +143 -0
  27. package/ios/engine/BGCLRouter.swift +101 -0
  28. package/ios/engine/BGCallback.swift +19 -0
  29. package/ios/engine/BGConfig.swift +440 -0
  30. package/ios/engine/BGConfigModuleBase.swift +180 -0
  31. package/ios/engine/BGConfigOLD.swift +582 -0
  32. package/ios/engine/BGConnectivityChangeEvent.swift +15 -0
  33. package/ios/engine/BGCrashDetector.swift +122 -0
  34. package/ios/engine/BGCurrentPositionRequest.swift +87 -0
  35. package/ios/engine/BGDataStore.swift +75 -0
  36. package/ios/engine/BGDatabase.swift +677 -0
  37. package/ios/engine/BGDatabasePool.swift +220 -0
  38. package/ios/engine/BGDatabaseQueue.swift +215 -0
  39. package/ios/engine/BGDateUtils.swift +26 -0
  40. package/ios/engine/BGDeviceInfo.swift +54 -0
  41. package/ios/engine/BGDeviceManager.swift +65 -0
  42. package/ios/engine/BGEnabledChangeEvent.swift +11 -0
  43. package/ios/engine/BGEnv.swift +17 -0
  44. package/ios/engine/BGEventBus.swift +83 -0
  45. package/ios/engine/BGEventManager.swift +169 -0
  46. package/ios/engine/BGEventNames.swift +51 -0
  47. package/ios/engine/BGGeofence.swift +233 -0
  48. package/ios/engine/BGGeofenceDAO.swift +152 -0
  49. package/ios/engine/BGGeofenceEvent.swift +42 -0
  50. package/ios/engine/BGGeofenceLocationRequest.swift +94 -0
  51. package/ios/engine/BGGeofenceManager.swift +315 -0
  52. package/ios/engine/BGGeofenceTransition.swift +97 -0
  53. package/ios/engine/BGGeofencesChangeEvent.swift +26 -0
  54. package/ios/engine/BGGeolocationConfig.swift +136 -0
  55. package/ios/engine/BGHeartbeatEvent.swift +31 -0
  56. package/ios/engine/BGHeartbeatService.swift +51 -0
  57. package/ios/engine/BGHttpConfig.swift +105 -0
  58. package/ios/engine/BGHttpErrorCodes.swift +63 -0
  59. package/ios/engine/BGHttpEvent.swift +34 -0
  60. package/ios/engine/BGHttpRequest.swift +126 -0
  61. package/ios/engine/BGHttpResponse.swift +93 -0
  62. package/ios/engine/BGHttpService.swift +428 -0
  63. package/ios/engine/BGKalmanFilter.swift +105 -0
  64. package/ios/engine/BGLMActionNames.swift +55 -0
  65. package/ios/engine/BGLicenseManager.swift +26 -0
  66. package/ios/engine/BGLiveActivityManager.swift +327 -0
  67. package/ios/engine/BGLocation.swift +311 -0
  68. package/ios/engine/BGLocationAuthorization.swift +427 -0
  69. package/ios/engine/BGLocationDAO.swift +252 -0
  70. package/ios/engine/BGLocationErrors.swift +28 -0
  71. package/ios/engine/BGLocationEvent.swift +43 -0
  72. package/ios/engine/BGLocationFilter.swift +82 -0
  73. package/ios/engine/BGLocationFilterConfig.swift +57 -0
  74. package/ios/engine/BGLocationHelper.swift +54 -0
  75. package/ios/engine/BGLocationManager.swift +662 -0
  76. package/ios/engine/BGLocationMetricsEngine.swift +116 -0
  77. package/ios/engine/BGLocationRequestService.swift +459 -0
  78. package/ios/engine/BGLocationSatisfier.swift +14 -0
  79. package/ios/engine/BGLocationStreamEvent.swift +27 -0
  80. package/ios/engine/BGLog.swift +337 -0
  81. package/ios/engine/BGLogLevel.swift +26 -0
  82. package/ios/engine/BGLoggerConfig.swift +60 -0
  83. package/ios/engine/BGMotionActivity.swift +31 -0
  84. package/ios/engine/BGMotionActivityClassifier.swift +108 -0
  85. package/ios/engine/BGMotionActivityManagerAdapter.swift +40 -0
  86. package/ios/engine/BGMotionActivitySource.swift +46 -0
  87. package/ios/engine/BGMotionDetector.swift +377 -0
  88. package/ios/engine/BGMotionPermissionManager.swift +50 -0
  89. package/ios/engine/BGNativeLogger.swift +48 -0
  90. package/ios/engine/BGNotificaitons.swift +37 -0
  91. package/ios/engine/BGOdometer.swift +66 -0
  92. package/ios/engine/BGPersistenceConfig.swift +29 -0
  93. package/ios/engine/BGPolygonStreamRequest.swift +48 -0
  94. package/ios/engine/BGPowerSaveChangeEvent.swift +12 -0
  95. package/ios/engine/BGPropertySpec.swift +29 -0
  96. package/ios/engine/BGProviderChangeEvent.swift +31 -0
  97. package/ios/engine/BGQueue.swift +50 -0
  98. package/ios/engine/BGRPC.swift +194 -0
  99. package/ios/engine/BGReachability.swift +58 -0
  100. package/ios/engine/BGResultSet.swift +157 -0
  101. package/ios/engine/BGSchedule.swift +228 -0
  102. package/ios/engine/BGScheduleEvent.swift +13 -0
  103. package/ios/engine/BGScheduler.swift +116 -0
  104. package/ios/engine/BGSingleLocationRequest.swift +49 -0
  105. package/ios/engine/BGStreamLocationRequest.swift +42 -0
  106. package/ios/engine/BGTemplate.swift +54 -0
  107. package/ios/engine/BGTimerService.swift +46 -0
  108. package/ios/engine/BGTrackingAudioManager.swift +286 -0
  109. package/ios/engine/BGTrackingService.swift +879 -0
  110. package/ios/engine/BGWatchPositionRequest.swift +63 -0
  111. package/ios/engine/DatabaseQueue.swift +47 -0
  112. package/ios/engine/LogQuery.swift +10 -0
  113. package/ios/engine/SQLQuery.swift +65 -0
  114. package/ios/engine/TransistorAuthorizationToken.swift +182 -0
  115. package/ios/liveactivity/BGLiveTrackingAttributes.swift +52 -0
  116. package/ios/locationpush/BGLocationPushDeliverer.swift +260 -0
  117. package/ios/locationpush/BGLocationPushService.swift +161 -0
  118. package/ios/locationpush/BGLocationPushShared.swift +98 -0
  119. package/ios/locationpush/BGLocationPushSocketClient.swift +198 -0
  120. package/lib/module/NativeBgGeolocation.js +5 -0
  121. package/lib/module/NativeBgGeolocation.js.map +1 -0
  122. package/lib/module/events.js +20 -0
  123. package/lib/module/events.js.map +1 -0
  124. package/lib/module/index.js +706 -0
  125. package/lib/module/index.js.map +1 -0
  126. package/lib/module/package.json +1 -0
  127. package/lib/module/types.js +2 -0
  128. package/lib/module/types.js.map +1 -0
  129. package/lib/typescript/package.json +1 -0
  130. package/lib/typescript/src/NativeBgGeolocation.d.ts +57 -0
  131. package/lib/typescript/src/NativeBgGeolocation.d.ts.map +1 -0
  132. package/lib/typescript/src/events.d.ts +18 -0
  133. package/lib/typescript/src/events.d.ts.map +1 -0
  134. package/lib/typescript/src/index.d.ts +238 -0
  135. package/lib/typescript/src/index.d.ts.map +1 -0
  136. package/lib/typescript/src/types.d.ts +229 -0
  137. package/lib/typescript/src/types.d.ts.map +1 -0
  138. package/package.json +141 -0
  139. package/src/NativeBgGeolocation.ts +236 -0
  140. package/src/events.ts +17 -0
  141. package/src/index.tsx +935 -0
  142. package/src/types.ts +254 -0
package/src/types.ts ADDED
@@ -0,0 +1,254 @@
1
+ // ─── Core data types ────────────────────────────────────────────────────────
2
+
3
+ export interface Location {
4
+ uuid: string;
5
+ timestamp: string;
6
+ coords: {
7
+ latitude: number;
8
+ longitude: number;
9
+ accuracy: number;
10
+ altitude: number;
11
+ altitudeAccuracy: number;
12
+ heading: number;
13
+ speed: number;
14
+ };
15
+ activity: {
16
+ type: string;
17
+ confidence: number;
18
+ };
19
+ battery: {
20
+ level: number;
21
+ is_charging: boolean;
22
+ };
23
+ is_moving: boolean;
24
+ odometer: number;
25
+ extras?: Record<string, unknown>;
26
+ }
27
+
28
+ export interface LocationError {
29
+ code: number;
30
+ message?: string;
31
+ }
32
+
33
+ export interface Geofence {
34
+ identifier: string;
35
+ latitude: number;
36
+ longitude: number;
37
+ radius: number;
38
+ notifyOnEntry?: boolean;
39
+ notifyOnExit?: boolean;
40
+ notifyOnDwell?: boolean;
41
+ loiteringDelay?: number;
42
+ extras?: Record<string, unknown>;
43
+ }
44
+
45
+ export interface GeofenceEvent {
46
+ identifier: string;
47
+ action: 'ENTER' | 'EXIT' | 'DWELL';
48
+ location: Location;
49
+ }
50
+
51
+ export interface MotionChangeEvent {
52
+ isMoving: boolean;
53
+ location: Location;
54
+ }
55
+
56
+ export interface HeartbeatEvent {
57
+ location?: Location;
58
+ shakes?: number;
59
+ }
60
+
61
+ export interface HttpEvent {
62
+ status: number;
63
+ responseText: string;
64
+ success: boolean;
65
+ }
66
+
67
+ export interface ProviderChangeEvent {
68
+ status: number;
69
+ enabled: boolean;
70
+ gps: boolean;
71
+ network: boolean;
72
+ accuracyAuthorization: number;
73
+ }
74
+
75
+ export interface ActivityChangeEvent {
76
+ activity: string;
77
+ confidence: number;
78
+ }
79
+
80
+ /** Payload delivered to a headless task: { name, params }. */
81
+ export interface HeadlessEvent {
82
+ name: string;
83
+ params: any;
84
+ }
85
+
86
+ /** Subscription returned by every event listener; call `.remove()` to unsubscribe. */
87
+ export interface Subscription {
88
+ remove(): void;
89
+ }
90
+
91
+ // ─── Config (nested, matching react-native-background-geolocation) ────────────
92
+
93
+ export interface GeolocationConfig {
94
+ desiredAccuracy?: number;
95
+ distanceFilter?: number;
96
+ locationUpdateInterval?: number;
97
+ fastestLocationUpdateInterval?: number;
98
+ deferTime?: number;
99
+ activityType?: number;
100
+ useSignificantChangesOnly?: boolean;
101
+ pausesLocationUpdatesAutomatically?: boolean;
102
+ showsBackgroundLocationIndicator?: boolean;
103
+ isMoving?: boolean;
104
+ stopTimeout?: number;
105
+ stopDetectionDelay?: number;
106
+ disableStopDetection?: boolean;
107
+ disableMotionActivityUpdates?: boolean;
108
+ locationAuthorizationRequest?: 'Always' | 'WhenInUse' | 'Any';
109
+ geofenceProximityRadius?: number;
110
+ geofenceInitialTriggerEntry?: boolean;
111
+ }
112
+
113
+ export interface NotificationConfig {
114
+ title?: string;
115
+ text?: string;
116
+ color?: string;
117
+ channelName?: string;
118
+ smallIcon?: string;
119
+ largeIcon?: string;
120
+ priority?: number;
121
+ sticky?: boolean;
122
+ strings?: Record<string, string>;
123
+ }
124
+
125
+ export interface AppConfig {
126
+ stopOnTerminate?: boolean;
127
+ startOnBoot?: boolean;
128
+ enableHeadless?: boolean;
129
+ heartbeatInterval?: number;
130
+ preventSuspend?: boolean;
131
+ foregroundService?: boolean;
132
+ /** iOS 16.2+: show tracking status on the Lock Screen and Dynamic Island. */
133
+ liveActivityEnabled?: boolean;
134
+ liveActivityTitle?: string;
135
+ liveActivitySubtitle?: string;
136
+ /** Minimum seconds between local ActivityKit updates. */
137
+ liveActivityUpdateInterval?: number;
138
+ /** Seconds before the displayed state is marked stale. */
139
+ liveActivityStaleSeconds?: number;
140
+ /** Request an ActivityKit APNs token for server-driven updates. */
141
+ liveActivityPushUpdates?: boolean;
142
+ /**
143
+ * iOS 15+: enable the Location Push Service Extension flow. When the host app
144
+ * registers a location-push token and your server sends an APNs background
145
+ * push to it, iOS wakes the extension to capture and upload one location —
146
+ * even when the app is force-quit. Requires the Apple-approved
147
+ * `com.apple.developer.location.push` entitlement, an App Group shared with
148
+ * the extension, and "Always" location authorization.
149
+ */
150
+ locationPushEnabled?: boolean;
151
+ /** iOS: start an audible audio session while tracking is enabled. */
152
+ trackingAudioEnabled?: boolean;
153
+ /** iOS tracking tone volume from 0.01 through 1.0. */
154
+ trackingAudioVolume?: number;
155
+ /** iOS: mix the tracking sound with other apps instead of interrupting them. */
156
+ trackingAudioMixWithOthers?: boolean;
157
+ notification?: NotificationConfig;
158
+ backgroundPermissionRationale?: {
159
+ title?: string;
160
+ message?: string;
161
+ positiveAction?: string;
162
+ negativeAction?: string;
163
+ };
164
+ }
165
+
166
+ export interface LoggerConfig {
167
+ debug?: boolean;
168
+ logLevel?: number;
169
+ logMaxDays?: number;
170
+ }
171
+
172
+ export interface PersistenceConfig {
173
+ url?: string;
174
+ method?: string;
175
+ headers?: Record<string, string>;
176
+ params?: Record<string, unknown>;
177
+ autoSync?: boolean;
178
+ autoSyncThreshold?: number;
179
+ batchSync?: boolean;
180
+ maxBatchSize?: number;
181
+ maxRecordsToPersist?: number;
182
+ maxDaysToPersist?: number;
183
+ persistMode?: number;
184
+ }
185
+
186
+ export interface LiveActivityState {
187
+ supported: boolean;
188
+ enabled: boolean;
189
+ active: boolean;
190
+ activityId?: string;
191
+ /**
192
+ * ActivityKit APNs token. Send this to your server and use the
193
+ * `<bundle-id>.push-type.liveactivity` APNs topic for remote updates.
194
+ */
195
+ pushToken?: string;
196
+ }
197
+
198
+ export interface TrackingAudioState {
199
+ enabled: boolean;
200
+ requested: boolean;
201
+ active: boolean;
202
+ audible: boolean;
203
+ volume: number;
204
+ /** Audio playback has no iOS runtime permission prompt. */
205
+ permissionRequired?: false;
206
+ /** `notRequired` for playback-only audio. */
207
+ authorizationStatus?: 'notRequired';
208
+ backgroundModeDeclared?: boolean;
209
+ nowPlayingActive?: boolean;
210
+ error?: string;
211
+ }
212
+
213
+ /**
214
+ * Config accepts EITHER the modern nested shape:
215
+ * { geolocation: {...}, app: {...}, logger: {...}, persistence: {...} }
216
+ * OR a flat shape (legacy) — both are supported by `ready`/`setConfig`.
217
+ */
218
+ export interface Config {
219
+ reset?: boolean;
220
+ geolocation?: GeolocationConfig;
221
+ app?: AppConfig;
222
+ logger?: LoggerConfig;
223
+ persistence?: PersistenceConfig;
224
+ // Allow flat keys too for backwards compatibility
225
+ [key: string]: any;
226
+ }
227
+
228
+ export interface State extends Record<string, any> {
229
+ enabled: boolean;
230
+ schedulerEnabled: boolean;
231
+ trackingMode: number;
232
+ odometer: number;
233
+ liveActivity?: LiveActivityState;
234
+ trackingAudio?: TrackingAudioState;
235
+ }
236
+
237
+ export interface DeviceInfo {
238
+ uuid: string;
239
+ model: string;
240
+ platform: string;
241
+ manufacturer: string;
242
+ version: string;
243
+ framework: string;
244
+ frameworkVersion: string;
245
+ }
246
+
247
+ export interface Sensors {
248
+ platform: string;
249
+ accelerometer: boolean;
250
+ gyroscope: boolean;
251
+ magnetometer: boolean;
252
+ motionHardware: boolean;
253
+ motionAuthorizationStatus?: number;
254
+ }