react-native-nitro-geolocation 1.2.6 → 1.3.1
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.
- package/README.md +61 -272
- package/android/build.gradle +1 -0
- package/android/src/main/AndroidManifest.xml +39 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidFusedLocationProvider.kt +310 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidFusedRequestFactory.kt +31 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidGeolocationConversions.kt +71 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidGeolocationErrors.kt +85 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidGeolocationOptions.kt +92 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidLocationSettings.kt +3 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidProviderRoute.kt +74 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/NitroBackgroundLocation.kt +132 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/NitroGeolocation.kt +219 -476
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/AndroidBackgroundHttpSync.kt +134 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/AndroidBackgroundPermissions.kt +196 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/AndroidBackgroundSerialization.kt +266 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroActivityRecognitionReceiver.kt +13 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundEventHub.kt +65 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundHeadlessTaskService.kt +58 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundLocationController.kt +711 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundLocationService.kt +48 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundNotificationFactory.kt +37 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundStore.kt +655 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBootReceiver.kt +26 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroGeofenceReceiver.kt +14 -0
- package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroLocationUpdateReceiver.kt +37 -0
- package/android/src/test/java/com/margelo/nitro/nitrogeolocation/AndroidFusedLocationProviderTest.kt +64 -0
- package/android/src/test/java/com/margelo/nitro/nitrogeolocation/AndroidProviderRouteTest.kt +116 -0
- package/ios/IOSBackgroundHttpSync.swift +126 -0
- package/ios/IOSBackgroundLocationDelegate.swift +36 -0
- package/ios/IOSBackgroundMotion.swift +55 -0
- package/ios/IOSBackgroundSerialization.swift +539 -0
- package/ios/IOSGeolocationConversions.swift +131 -0
- package/ios/IOSGeolocationDelegate.swift +31 -0
- package/ios/IOSGeolocationErrors.swift +39 -0
- package/ios/IOSGeolocationOptions.swift +135 -0
- package/ios/NitroBackgroundLocation.swift +849 -0
- package/ios/NitroGeolocation.swift +14 -347
- package/nitrogen/generated/android/c++/JActivityRecognitionOptions.hpp +69 -0
- package/nitrogen/generated/android/c++/JAndroidBackgroundLocationOptions.hpp +74 -0
- package/nitrogen/generated/android/c++/JAndroidBackgroundLocationStatus.hpp +67 -0
- package/nitrogen/generated/android/c++/JAndroidBackgroundProvider.hpp +61 -0
- package/nitrogen/generated/android/c++/JAndroidForegroundServiceOptions.hpp +90 -0
- package/nitrogen/generated/android/c++/JBackgroundEventEnvelope.hpp +129 -0
- package/nitrogen/generated/android/c++/JBackgroundEventType.hpp +70 -0
- package/nitrogen/generated/android/c++/JBackgroundHttpMethod.hpp +61 -0
- package/nitrogen/generated/android/c++/JBackgroundHttpSyncOptions.hpp +131 -0
- package/nitrogen/generated/android/c++/JBackgroundHttpSyncResult.hpp +111 -0
- package/nitrogen/generated/android/c++/JBackgroundLocation.hpp +110 -0
- package/nitrogen/generated/android/c++/JBackgroundLocationOptions.hpp +162 -0
- package/nitrogen/generated/android/c++/JBackgroundLocationSource.hpp +73 -0
- package/nitrogen/generated/android/c++/JBackgroundLocationState.hpp +70 -0
- package/nitrogen/generated/android/c++/JBackgroundLocationStatus.hpp +126 -0
- package/nitrogen/generated/android/c++/JBackgroundPermissionResult.hpp +79 -0
- package/nitrogen/generated/android/c++/JBackgroundPermissionStatus.hpp +64 -0
- package/nitrogen/generated/android/c++/JBackgroundTrackingMode.hpp +61 -0
- package/nitrogen/generated/android/c++/JBatterySnapshot.hpp +61 -0
- package/nitrogen/generated/android/c++/JDetectedActivity.hpp +66 -0
- package/nitrogen/generated/android/c++/JDetectedActivityType.hpp +76 -0
- package/nitrogen/generated/android/c++/JFunc_void_BackgroundEventEnvelope.hpp +114 -0
- package/nitrogen/generated/android/c++/JFunc_void_BackgroundLocation.hpp +95 -0
- package/nitrogen/generated/android/c++/JGeofenceEvent.hpp +94 -0
- package/nitrogen/generated/android/c++/JGeofenceRegion.hpp +112 -0
- package/nitrogen/generated/android/c++/JGeofenceTransition.hpp +61 -0
- package/nitrogen/generated/android/c++/JGeofencingOptions.hpp +82 -0
- package/nitrogen/generated/android/c++/JGetStoredBackgroundEventsOptions.hpp +90 -0
- package/nitrogen/generated/android/c++/JGetStoredBackgroundLocationsOptions.hpp +69 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundLocationSpec.cpp +662 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundLocationSpec.hpp +89 -0
- package/nitrogen/generated/android/c++/JIOSBackgroundActivityType.hpp +67 -0
- package/nitrogen/generated/android/c++/JIOSBackgroundLocationOptions.hpp +79 -0
- package/nitrogen/generated/android/c++/JIOSBackgroundLocationStatus.hpp +61 -0
- package/nitrogen/generated/android/c++/JLocationProviderStatus.hpp +5 -1
- package/nitrogen/generated/android/c++/JStoredBackgroundEventEnvelope.hpp +115 -0
- package/nitrogen/generated/android/c++/JStoredBackgroundLocation.hpp +122 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean_String_Double.cpp +34 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean_String_Double.hpp +100 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/ActivityRecognitionOptions.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidBackgroundLocationOptions.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidBackgroundLocationStatus.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidBackgroundProvider.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidForegroundServiceOptions.kt +91 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundEventEnvelope.kt +96 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundEventType.kt +27 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundHttpMethod.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundHttpSyncOptions.kt +101 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundHttpSyncResult.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocation.kt +96 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationOptions.kt +136 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationSource.kt +28 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationState.kt +27 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationStatus.kt +116 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundPermissionResult.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundPermissionStatus.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundTrackingMode.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BatterySnapshot.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/DetectedActivity.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/DetectedActivityType.kt +29 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/Func_void_BackgroundEventEnvelope.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/Func_void_BackgroundLocation.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofenceEvent.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofenceRegion.kt +96 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofenceTransition.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofencingOptions.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GetStoredBackgroundEventsOptions.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GetStoredBackgroundLocationsOptions.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/HybridNitroBackgroundLocationSpec.kt +174 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/IOSBackgroundActivityType.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/IOSBackgroundLocationOptions.kt +76 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/IOSBackgroundLocationStatus.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/LocationProviderStatus.kt +7 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/StoredBackgroundEventEnvelope.kt +76 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/StoredBackgroundLocation.kt +111 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/Variant_NullType_Boolean_String_Double.kt +88 -0
- package/nitrogen/generated/android/nitrogeolocation+autolinking.cmake +3 -0
- package/nitrogen/generated/android/nitrogeolocationOnLoad.cpp +20 -0
- package/nitrogen/generated/ios/NitroGeolocation-Swift-Cxx-Bridge.cpp +104 -15
- package/nitrogen/generated/ios/NitroGeolocation-Swift-Cxx-Bridge.hpp +1107 -50
- package/nitrogen/generated/ios/NitroGeolocation-Swift-Cxx-Umbrella.hpp +102 -0
- package/nitrogen/generated/ios/NitroGeolocationAutolinking.mm +8 -0
- package/nitrogen/generated/ios/NitroGeolocationAutolinking.swift +15 -3
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundLocationSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundLocationSpecSwift.hpp +416 -0
- package/nitrogen/generated/ios/swift/ActivityRecognitionOptions.swift +96 -0
- package/nitrogen/generated/ios/swift/AndroidBackgroundLocationOptions.swift +76 -0
- package/nitrogen/generated/ios/swift/AndroidBackgroundLocationStatus.swift +58 -0
- package/nitrogen/generated/ios/swift/AndroidBackgroundProvider.swift +44 -0
- package/nitrogen/generated/ios/swift/AndroidForegroundServiceOptions.swift +160 -0
- package/nitrogen/generated/ios/swift/BackgroundEventEnvelope.swift +110 -0
- package/nitrogen/generated/ios/swift/BackgroundEventType.swift +56 -0
- package/nitrogen/generated/ios/swift/BackgroundHttpMethod.swift +44 -0
- package/nitrogen/generated/ios/swift/BackgroundHttpSyncOptions.swift +259 -0
- package/nitrogen/generated/ios/swift/BackgroundHttpSyncResult.swift +87 -0
- package/nitrogen/generated/ios/swift/BackgroundLocation.swift +118 -0
- package/nitrogen/generated/ios/swift/BackgroundLocationOptions.swift +292 -0
- package/nitrogen/generated/ios/swift/BackgroundLocationSource.swift +60 -0
- package/nitrogen/generated/ios/swift/BackgroundLocationState.swift +56 -0
- package/nitrogen/generated/ios/swift/BackgroundLocationStatus.swift +124 -0
- package/nitrogen/generated/ios/swift/BackgroundPermissionResult.swift +81 -0
- package/nitrogen/generated/ios/swift/BackgroundPermissionStatus.swift +48 -0
- package/nitrogen/generated/ios/swift/BackgroundTrackingMode.swift +44 -0
- package/nitrogen/generated/ios/swift/BatterySnapshot.swift +60 -0
- package/nitrogen/generated/ios/swift/DetectedActivity.swift +39 -0
- package/nitrogen/generated/ios/swift/DetectedActivityType.swift +64 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundEventEnvelope.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundHttpSyncResult.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundLocation.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundLocationStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundPermissionResult.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_BackgroundLocationOptions_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_GeofenceRegion_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_StoredBackgroundEventEnvelope_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_StoredBackgroundLocation_.swift +46 -0
- package/nitrogen/generated/ios/swift/GeofenceEvent.swift +50 -0
- package/nitrogen/generated/ios/swift/GeofenceRegion.swift +195 -0
- package/nitrogen/generated/ios/swift/GeofenceTransition.swift +44 -0
- package/nitrogen/generated/ios/swift/GeofencingOptions.swift +66 -0
- package/nitrogen/generated/ios/swift/GetStoredBackgroundEventsOptions.swift +102 -0
- package/nitrogen/generated/ios/swift/GetStoredBackgroundLocationsOptions.swift +96 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundLocationSpec.swift +81 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundLocationSpec_cxx.swift +654 -0
- package/nitrogen/generated/ios/swift/IOSBackgroundActivityType.swift +52 -0
- package/nitrogen/generated/ios/swift/IOSBackgroundLocationOptions.swift +125 -0
- package/nitrogen/generated/ios/swift/IOSBackgroundLocationStatus.swift +34 -0
- package/nitrogen/generated/ios/swift/LocationProviderStatus.swift +19 -1
- package/nitrogen/generated/ios/swift/StoredBackgroundEventEnvelope.swift +54 -0
- package/nitrogen/generated/ios/swift/StoredBackgroundLocation.swift +120 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Bool_String_Double.swift +34 -0
- package/nitrogen/generated/shared/c++/ActivityRecognitionOptions.hpp +95 -0
- package/nitrogen/generated/shared/c++/AndroidBackgroundLocationOptions.hpp +100 -0
- package/nitrogen/generated/shared/c++/AndroidBackgroundLocationStatus.hpp +93 -0
- package/nitrogen/generated/shared/c++/AndroidBackgroundProvider.hpp +80 -0
- package/nitrogen/generated/shared/c++/AndroidForegroundServiceOptions.hpp +116 -0
- package/nitrogen/generated/shared/c++/BackgroundEventEnvelope.hpp +140 -0
- package/nitrogen/generated/shared/c++/BackgroundEventType.hpp +92 -0
- package/nitrogen/generated/shared/c++/BackgroundHttpMethod.hpp +80 -0
- package/nitrogen/generated/shared/c++/BackgroundHttpSyncOptions.hpp +129 -0
- package/nitrogen/generated/shared/c++/BackgroundHttpSyncResult.hpp +101 -0
- package/nitrogen/generated/shared/c++/BackgroundLocation.hpp +134 -0
- package/nitrogen/generated/shared/c++/BackgroundLocationOptions.hpp +174 -0
- package/nitrogen/generated/shared/c++/BackgroundLocationSource.hpp +96 -0
- package/nitrogen/generated/shared/c++/BackgroundLocationState.hpp +92 -0
- package/nitrogen/generated/shared/c++/BackgroundLocationStatus.hpp +158 -0
- package/nitrogen/generated/shared/c++/BackgroundPermissionResult.hpp +107 -0
- package/nitrogen/generated/shared/c++/BackgroundPermissionStatus.hpp +84 -0
- package/nitrogen/generated/shared/c++/BackgroundTrackingMode.hpp +80 -0
- package/nitrogen/generated/shared/c++/BatterySnapshot.hpp +87 -0
- package/nitrogen/generated/shared/c++/DetectedActivity.hpp +92 -0
- package/nitrogen/generated/shared/c++/DetectedActivityType.hpp +100 -0
- package/nitrogen/generated/shared/c++/GeofenceEvent.hpp +103 -0
- package/nitrogen/generated/shared/c++/GeofenceRegion.hpp +123 -0
- package/nitrogen/generated/shared/c++/GeofenceTransition.hpp +80 -0
- package/nitrogen/generated/shared/c++/GeofencingOptions.hpp +90 -0
- package/nitrogen/generated/shared/c++/GetStoredBackgroundEventsOptions.hpp +98 -0
- package/nitrogen/generated/shared/c++/GetStoredBackgroundLocationsOptions.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundLocationSpec.cpp +47 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundLocationSpec.hpp +133 -0
- package/nitrogen/generated/shared/c++/IOSBackgroundActivityType.hpp +88 -0
- package/nitrogen/generated/shared/c++/IOSBackgroundLocationOptions.hpp +105 -0
- package/nitrogen/generated/shared/c++/IOSBackgroundLocationStatus.hpp +87 -0
- package/nitrogen/generated/shared/c++/LocationProviderStatus.hpp +5 -1
- package/nitrogen/generated/shared/c++/StoredBackgroundEventEnvelope.hpp +108 -0
- package/nitrogen/generated/shared/c++/StoredBackgroundLocation.hpp +146 -0
- package/package.json +17 -6
- package/src/NitroGeolocation.nitro.ts +4 -4
- package/src/api/getCurrentPosition.ts +1 -1
- package/src/api/requestLocationSettings.ts +3 -2
- package/src/background/NitroBackgroundLocation.nitro.ts +83 -0
- package/src/background/index.ts +200 -0
- package/src/background/index.web.ts +120 -0
- package/src/background/task.ts +13 -0
- package/src/background/types.ts +328 -0
- package/src/compat/index.web.ts +141 -0
- package/src/index.tsx +3 -0
- package/src/index.web.tsx +41 -0
- package/src/publicTypes.ts +6 -5
- package/src/types.ts +3 -0
- package/src/web/browser.ts +171 -0
- package/src/web/index.ts +167 -0
- package/src/web/useWatchPosition.ts +76 -0
- package/src/web/watch.ts +81 -0
- package/src/devtools/index.test.ts +0 -54
- package/src/utils/errors.test.ts +0 -65
- package/src/utils/provider.test.ts +0 -303
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
LocationError,
|
|
3
|
+
PermissionStatus
|
|
4
|
+
} from "../NitroGeolocation.nitro";
|
|
5
|
+
import type {
|
|
6
|
+
AccuracyAuthorization,
|
|
7
|
+
AndroidGranularity,
|
|
8
|
+
GeolocationResponse,
|
|
9
|
+
LocationAccuracyOptions,
|
|
10
|
+
LocationProviderStatus,
|
|
11
|
+
LocationProviderUsed
|
|
12
|
+
} from "../publicTypes";
|
|
13
|
+
|
|
14
|
+
export type BackgroundPermissionStatus =
|
|
15
|
+
| "granted"
|
|
16
|
+
| "denied"
|
|
17
|
+
| "restricted"
|
|
18
|
+
| "undetermined";
|
|
19
|
+
|
|
20
|
+
export interface BackgroundPermissionResult {
|
|
21
|
+
foreground: PermissionStatus;
|
|
22
|
+
background: BackgroundPermissionStatus;
|
|
23
|
+
accuracyAuthorization?: AccuracyAuthorization;
|
|
24
|
+
canRequestBackgroundInline?: boolean;
|
|
25
|
+
needsSettingsRedirect?: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type BackgroundLocationState =
|
|
29
|
+
| "idle"
|
|
30
|
+
| "starting"
|
|
31
|
+
| "running"
|
|
32
|
+
| "stopping"
|
|
33
|
+
| "stopped"
|
|
34
|
+
| "error";
|
|
35
|
+
|
|
36
|
+
export interface AndroidBackgroundLocationStatus {
|
|
37
|
+
isForegroundServiceRunning: boolean;
|
|
38
|
+
isIgnoringBatteryOptimizations?: boolean;
|
|
39
|
+
notificationPermission?: PermissionStatus;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface IOSBackgroundLocationStatus {
|
|
43
|
+
allowsBackgroundLocationUpdates: boolean;
|
|
44
|
+
significantChangesEnabled: boolean;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface BackgroundLocationStatus {
|
|
48
|
+
state: BackgroundLocationState;
|
|
49
|
+
isRunning: boolean;
|
|
50
|
+
isConfigured: boolean;
|
|
51
|
+
foregroundPermission: PermissionStatus;
|
|
52
|
+
backgroundPermission: BackgroundPermissionStatus;
|
|
53
|
+
accuracyAuthorization?: AccuracyAuthorization;
|
|
54
|
+
locationServicesEnabled: boolean;
|
|
55
|
+
providerStatus?: LocationProviderStatus;
|
|
56
|
+
storedLocationCount: number;
|
|
57
|
+
storedEventCount: number;
|
|
58
|
+
geofenceCount: number;
|
|
59
|
+
android?: AndroidBackgroundLocationStatus;
|
|
60
|
+
ios?: IOSBackgroundLocationStatus;
|
|
61
|
+
lastError?: LocationError;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export type BackgroundTrackingMode =
|
|
65
|
+
| "continuous"
|
|
66
|
+
| "significantChanges"
|
|
67
|
+
| "activityAware";
|
|
68
|
+
|
|
69
|
+
export interface BackgroundLocationOptions {
|
|
70
|
+
trackingMode?: BackgroundTrackingMode;
|
|
71
|
+
accuracy?: LocationAccuracyOptions;
|
|
72
|
+
granularity?: AndroidGranularity;
|
|
73
|
+
interval?: number;
|
|
74
|
+
fastestInterval?: number;
|
|
75
|
+
distanceFilter?: number;
|
|
76
|
+
maxUpdateDelay?: number;
|
|
77
|
+
waitForAccurateLocation?: boolean;
|
|
78
|
+
persist?: boolean;
|
|
79
|
+
maxStoredLocations?: number;
|
|
80
|
+
maxStoredEvents?: number;
|
|
81
|
+
stopOnTerminate?: boolean;
|
|
82
|
+
startOnBoot?: boolean;
|
|
83
|
+
android?: AndroidBackgroundLocationOptions;
|
|
84
|
+
ios?: IOSBackgroundLocationOptions;
|
|
85
|
+
geofencing?: GeofencingOptions;
|
|
86
|
+
activityRecognition?: ActivityRecognitionOptions;
|
|
87
|
+
sync?: BackgroundHttpSyncOptions;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export type AndroidBackgroundProvider =
|
|
91
|
+
| "auto"
|
|
92
|
+
| "playServices"
|
|
93
|
+
| "android_platform";
|
|
94
|
+
|
|
95
|
+
export interface AndroidBackgroundLocationOptions {
|
|
96
|
+
locationProvider?: AndroidBackgroundProvider;
|
|
97
|
+
foregroundService: AndroidForegroundServiceOptions;
|
|
98
|
+
requestNotificationPermission?: boolean;
|
|
99
|
+
requestIgnoreBatteryOptimizations?: boolean;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface AndroidForegroundServiceOptions {
|
|
103
|
+
notificationId?: number;
|
|
104
|
+
notificationTitle: string;
|
|
105
|
+
notificationText: string;
|
|
106
|
+
notificationChannelId?: string;
|
|
107
|
+
notificationChannelName?: string;
|
|
108
|
+
notificationChannelDescription?: string;
|
|
109
|
+
notificationIcon?: string;
|
|
110
|
+
notificationColor?: string;
|
|
111
|
+
stopActionTitle?: string;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export type IOSBackgroundActivityType =
|
|
115
|
+
| "other"
|
|
116
|
+
| "automotiveNavigation"
|
|
117
|
+
| "fitness"
|
|
118
|
+
| "otherNavigation"
|
|
119
|
+
| "airborne";
|
|
120
|
+
|
|
121
|
+
export interface IOSBackgroundLocationOptions {
|
|
122
|
+
activityType?: IOSBackgroundActivityType;
|
|
123
|
+
pausesLocationUpdatesAutomatically?: boolean;
|
|
124
|
+
showsBackgroundLocationIndicator?: boolean;
|
|
125
|
+
useSignificantChanges?: boolean;
|
|
126
|
+
deferredUpdatesDistance?: number;
|
|
127
|
+
deferredUpdatesInterval?: number;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export type BackgroundLocationSource =
|
|
131
|
+
| "foregroundService"
|
|
132
|
+
| "background"
|
|
133
|
+
| "significantChange"
|
|
134
|
+
| "geofence"
|
|
135
|
+
| "deferred"
|
|
136
|
+
| "manual"
|
|
137
|
+
| "unknown";
|
|
138
|
+
|
|
139
|
+
export interface BatterySnapshot {
|
|
140
|
+
level?: number;
|
|
141
|
+
isCharging?: boolean;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface BackgroundLocation extends GeolocationResponse {
|
|
145
|
+
id?: string;
|
|
146
|
+
source: BackgroundLocationSource;
|
|
147
|
+
isFromBackground: boolean;
|
|
148
|
+
provider?: LocationProviderUsed;
|
|
149
|
+
mocked?: boolean;
|
|
150
|
+
recordedAt: number;
|
|
151
|
+
activity?: DetectedActivity;
|
|
152
|
+
battery?: BatterySnapshot;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export interface StoredBackgroundLocation extends BackgroundLocation {
|
|
156
|
+
id: string;
|
|
157
|
+
deliveredToJS: boolean;
|
|
158
|
+
synced: boolean;
|
|
159
|
+
createdAt: number;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export type BackgroundEventType =
|
|
163
|
+
| "location"
|
|
164
|
+
| "geofence"
|
|
165
|
+
| "activity"
|
|
166
|
+
| "providerChange"
|
|
167
|
+
| "httpSync"
|
|
168
|
+
| "error";
|
|
169
|
+
|
|
170
|
+
export interface BackgroundEventBase {
|
|
171
|
+
id: string;
|
|
172
|
+
type: BackgroundEventType;
|
|
173
|
+
timestamp: number;
|
|
174
|
+
deliveredToJS: boolean;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export interface BackgroundLocationEvent extends BackgroundEventBase {
|
|
178
|
+
type: "location";
|
|
179
|
+
location: BackgroundLocation;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export interface BackgroundGeofenceEventEnvelope extends BackgroundEventBase {
|
|
183
|
+
type: "geofence";
|
|
184
|
+
geofence: GeofenceEvent;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface BackgroundActivityEventEnvelope extends BackgroundEventBase {
|
|
188
|
+
type: "activity";
|
|
189
|
+
activity: DetectedActivity;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export interface BackgroundProviderChangeEvent extends BackgroundEventBase {
|
|
193
|
+
type: "providerChange";
|
|
194
|
+
providerStatus: LocationProviderStatus;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export interface BackgroundHttpSyncEvent extends BackgroundEventBase {
|
|
198
|
+
type: "httpSync";
|
|
199
|
+
result: BackgroundHttpSyncResult;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export interface BackgroundErrorEvent extends BackgroundEventBase {
|
|
203
|
+
type: "error";
|
|
204
|
+
error: LocationError;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export interface BackgroundEventEnvelope extends BackgroundEventBase {
|
|
208
|
+
location?: BackgroundLocation;
|
|
209
|
+
geofence?: GeofenceEvent;
|
|
210
|
+
activity?: DetectedActivity;
|
|
211
|
+
providerStatus?: LocationProviderStatus;
|
|
212
|
+
result?: BackgroundHttpSyncResult;
|
|
213
|
+
error?: LocationError;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export type BackgroundEvent =
|
|
217
|
+
| BackgroundLocationEvent
|
|
218
|
+
| BackgroundGeofenceEventEnvelope
|
|
219
|
+
| BackgroundActivityEventEnvelope
|
|
220
|
+
| BackgroundProviderChangeEvent
|
|
221
|
+
| BackgroundHttpSyncEvent
|
|
222
|
+
| BackgroundErrorEvent;
|
|
223
|
+
|
|
224
|
+
export type GeofenceTransition = "enter" | "exit" | "dwell";
|
|
225
|
+
|
|
226
|
+
export interface GeofenceRegion {
|
|
227
|
+
identifier: string;
|
|
228
|
+
latitude: number;
|
|
229
|
+
longitude: number;
|
|
230
|
+
radius: number;
|
|
231
|
+
notifyOnEntry?: boolean;
|
|
232
|
+
notifyOnExit?: boolean;
|
|
233
|
+
notifyOnDwell?: boolean;
|
|
234
|
+
loiteringDelay?: number;
|
|
235
|
+
expirationDuration?: number;
|
|
236
|
+
metadata?: Record<string, string | number | boolean | null>;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export interface GeofencingOptions {
|
|
240
|
+
initialTrigger?: GeofenceTransition[];
|
|
241
|
+
notificationResponsiveness?: number;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export interface GeofenceEvent {
|
|
245
|
+
region: GeofenceRegion;
|
|
246
|
+
transition: GeofenceTransition;
|
|
247
|
+
location?: BackgroundLocation;
|
|
248
|
+
timestamp: number;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export type DetectedActivityType =
|
|
252
|
+
| "still"
|
|
253
|
+
| "walking"
|
|
254
|
+
| "running"
|
|
255
|
+
| "onFoot"
|
|
256
|
+
| "onBicycle"
|
|
257
|
+
| "inVehicle"
|
|
258
|
+
| "tilting"
|
|
259
|
+
| "unknown";
|
|
260
|
+
|
|
261
|
+
export interface DetectedActivity {
|
|
262
|
+
type: DetectedActivityType;
|
|
263
|
+
confidence: number;
|
|
264
|
+
timestamp: number;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export interface ActivityRecognitionOptions {
|
|
268
|
+
enabled?: boolean;
|
|
269
|
+
interval?: number;
|
|
270
|
+
stopOnStill?: boolean;
|
|
271
|
+
minimumConfidence?: number;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
export type BackgroundHttpMethod = "POST" | "PUT" | "PATCH";
|
|
275
|
+
|
|
276
|
+
export interface BackgroundHttpSyncOptions {
|
|
277
|
+
url: string;
|
|
278
|
+
method?: BackgroundHttpMethod;
|
|
279
|
+
headers?: Record<string, string>;
|
|
280
|
+
batch?: boolean;
|
|
281
|
+
batchSize?: number;
|
|
282
|
+
syncThreshold?: number;
|
|
283
|
+
syncInterval?: number;
|
|
284
|
+
retry?: boolean;
|
|
285
|
+
maxRetries?: number;
|
|
286
|
+
bodyTemplate?: Record<string, string | number | boolean | null>;
|
|
287
|
+
autoClear?: boolean;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export interface BackgroundHttpSyncResult {
|
|
291
|
+
success: boolean;
|
|
292
|
+
statusCode?: number;
|
|
293
|
+
syncedLocationIds: string[];
|
|
294
|
+
failedLocationIds: string[];
|
|
295
|
+
error?: string;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export interface StoredBackgroundEvent extends BackgroundEventBase {
|
|
299
|
+
event: BackgroundEvent;
|
|
300
|
+
createdAt: number;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export interface StoredBackgroundEventEnvelope extends BackgroundEventBase {
|
|
304
|
+
event: BackgroundEventEnvelope;
|
|
305
|
+
createdAt: number;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export interface GetStoredBackgroundLocationsOptions {
|
|
309
|
+
limit?: number;
|
|
310
|
+
since?: number;
|
|
311
|
+
includeDelivered?: boolean;
|
|
312
|
+
includeSynced?: boolean;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface GetStoredBackgroundEventsOptions {
|
|
316
|
+
types?: BackgroundEventType[];
|
|
317
|
+
limit?: number;
|
|
318
|
+
since?: number;
|
|
319
|
+
includeDelivered?: boolean;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export interface BackgroundSubscription {
|
|
323
|
+
remove(): void;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
export type BackgroundTaskHandler = (
|
|
327
|
+
event: BackgroundEvent
|
|
328
|
+
) => void | Promise<void>;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CompatGeolocationConfiguration,
|
|
3
|
+
CompatGeolocationError,
|
|
4
|
+
CompatGeolocationOptions,
|
|
5
|
+
CompatGeolocationResponse
|
|
6
|
+
} from "../publicTypes";
|
|
7
|
+
import type { BrowserPosition, BrowserPositionError } from "../web/browser";
|
|
8
|
+
import { getGeolocation } from "../web/browser";
|
|
9
|
+
|
|
10
|
+
export type {
|
|
11
|
+
CompatGeolocationConfiguration as GeolocationConfiguration,
|
|
12
|
+
CompatGeolocationResponse as GeolocationResponse,
|
|
13
|
+
CompatGeolocationError as GeolocationError,
|
|
14
|
+
CompatGeolocationOptions as GeolocationOptions
|
|
15
|
+
} from "../publicTypes";
|
|
16
|
+
|
|
17
|
+
function mapPosition(pos: BrowserPosition): CompatGeolocationResponse {
|
|
18
|
+
return {
|
|
19
|
+
coords: {
|
|
20
|
+
latitude: pos.coords.latitude,
|
|
21
|
+
longitude: pos.coords.longitude,
|
|
22
|
+
altitude: pos.coords.altitude,
|
|
23
|
+
accuracy: pos.coords.accuracy,
|
|
24
|
+
altitudeAccuracy: pos.coords.altitudeAccuracy,
|
|
25
|
+
heading: pos.coords.heading,
|
|
26
|
+
speed: pos.coords.speed
|
|
27
|
+
},
|
|
28
|
+
timestamp: pos.timestamp
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function mapError(err: BrowserPositionError): CompatGeolocationError {
|
|
33
|
+
return {
|
|
34
|
+
code: err.code,
|
|
35
|
+
message: err.message,
|
|
36
|
+
PERMISSION_DENIED: 1,
|
|
37
|
+
POSITION_UNAVAILABLE: 2,
|
|
38
|
+
TIMEOUT: 3
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function setRNConfiguration(
|
|
43
|
+
_config: CompatGeolocationConfiguration
|
|
44
|
+
): void {}
|
|
45
|
+
|
|
46
|
+
export function requestAuthorization(
|
|
47
|
+
success?: () => void,
|
|
48
|
+
_error?: (error: CompatGeolocationError) => void
|
|
49
|
+
): void {
|
|
50
|
+
success?.();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function getCurrentPosition(
|
|
54
|
+
success: (position: CompatGeolocationResponse) => void,
|
|
55
|
+
error?: (error: CompatGeolocationError) => void,
|
|
56
|
+
options?: CompatGeolocationOptions
|
|
57
|
+
): void {
|
|
58
|
+
const geo = getGeolocation();
|
|
59
|
+
if (!geo) {
|
|
60
|
+
error?.({
|
|
61
|
+
code: 2,
|
|
62
|
+
message: "Browser geolocation is unavailable.",
|
|
63
|
+
PERMISSION_DENIED: 1,
|
|
64
|
+
POSITION_UNAVAILABLE: 2,
|
|
65
|
+
TIMEOUT: 3
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
geo.getCurrentPosition(
|
|
70
|
+
(pos) => success(mapPosition(pos)),
|
|
71
|
+
error ? (err) => error(mapError(err)) : undefined,
|
|
72
|
+
options
|
|
73
|
+
? {
|
|
74
|
+
timeout: options.timeout,
|
|
75
|
+
maximumAge: options.maximumAge,
|
|
76
|
+
enableHighAccuracy: options.enableHighAccuracy
|
|
77
|
+
}
|
|
78
|
+
: undefined
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const activeWatches = new Set<number>();
|
|
83
|
+
|
|
84
|
+
export function watchPosition(
|
|
85
|
+
success: (position: CompatGeolocationResponse) => void,
|
|
86
|
+
error?: (error: CompatGeolocationError) => void,
|
|
87
|
+
options?: CompatGeolocationOptions
|
|
88
|
+
): number {
|
|
89
|
+
const geo = getGeolocation();
|
|
90
|
+
if (!geo) {
|
|
91
|
+
error?.({
|
|
92
|
+
code: 2,
|
|
93
|
+
message: "Browser geolocation is unavailable.",
|
|
94
|
+
PERMISSION_DENIED: 1,
|
|
95
|
+
POSITION_UNAVAILABLE: 2,
|
|
96
|
+
TIMEOUT: 3
|
|
97
|
+
});
|
|
98
|
+
return -1;
|
|
99
|
+
}
|
|
100
|
+
const watchId = geo.watchPosition(
|
|
101
|
+
(pos) => success(mapPosition(pos)),
|
|
102
|
+
error ? (err) => error(mapError(err)) : undefined,
|
|
103
|
+
options
|
|
104
|
+
? {
|
|
105
|
+
timeout: options.timeout,
|
|
106
|
+
maximumAge: options.maximumAge,
|
|
107
|
+
enableHighAccuracy: options.enableHighAccuracy
|
|
108
|
+
}
|
|
109
|
+
: undefined
|
|
110
|
+
);
|
|
111
|
+
activeWatches.add(watchId);
|
|
112
|
+
return watchId;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function clearWatch(watchId: number): void {
|
|
116
|
+
getGeolocation()?.clearWatch(watchId);
|
|
117
|
+
activeWatches.delete(watchId);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function stopObserving(): void {
|
|
121
|
+
const geo = getGeolocation();
|
|
122
|
+
if (!geo) {
|
|
123
|
+
activeWatches.clear();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
for (const watchId of activeWatches) {
|
|
127
|
+
geo.clearWatch(watchId);
|
|
128
|
+
}
|
|
129
|
+
activeWatches.clear();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const Geolocation = {
|
|
133
|
+
setRNConfiguration,
|
|
134
|
+
requestAuthorization,
|
|
135
|
+
getCurrentPosition,
|
|
136
|
+
watchPosition,
|
|
137
|
+
clearWatch,
|
|
138
|
+
stopObserving
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export default Geolocation;
|
package/src/index.tsx
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser implementation for the Modern API.
|
|
3
|
+
*
|
|
4
|
+
* This entry intentionally avoids Nitro native imports so web bundlers can use
|
|
5
|
+
* the package root without loading native bindings.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export * from "./web";
|
|
9
|
+
export * from "./background/index.web";
|
|
10
|
+
|
|
11
|
+
export type {
|
|
12
|
+
PermissionStatus,
|
|
13
|
+
LocationRequestOptions,
|
|
14
|
+
LocationSettingsOptions,
|
|
15
|
+
LocationError
|
|
16
|
+
} from "./NitroGeolocation.nitro";
|
|
17
|
+
|
|
18
|
+
export type {
|
|
19
|
+
GeolocationResponse,
|
|
20
|
+
GeolocationCoordinates,
|
|
21
|
+
LocationProviderStatus,
|
|
22
|
+
LocationAvailability,
|
|
23
|
+
GeocodingCoordinates,
|
|
24
|
+
GeocodedLocation,
|
|
25
|
+
ReverseGeocodedAddress,
|
|
26
|
+
AndroidAccuracyPreset,
|
|
27
|
+
AndroidGranularity,
|
|
28
|
+
IOSAccuracyPreset,
|
|
29
|
+
AccuracyAuthorization,
|
|
30
|
+
IOSActivityType,
|
|
31
|
+
LocationAccuracyOptions,
|
|
32
|
+
Heading,
|
|
33
|
+
HeadingOptions,
|
|
34
|
+
AuthorizationLevel,
|
|
35
|
+
LocationProvider,
|
|
36
|
+
LocationProviderUsed,
|
|
37
|
+
GeolocationConfiguration,
|
|
38
|
+
ModernGeolocationConfiguration
|
|
39
|
+
} from "./publicTypes";
|
|
40
|
+
|
|
41
|
+
export * from "./utils";
|
package/src/publicTypes.ts
CHANGED
|
@@ -73,8 +73,9 @@ export type GeolocationConfiguration = Omit<
|
|
|
73
73
|
/**
|
|
74
74
|
* Android location provider.
|
|
75
75
|
*
|
|
76
|
-
* `auto`
|
|
77
|
-
*
|
|
76
|
+
* `auto` and `playServices` prefer Google Play Services fused location when
|
|
77
|
+
* available and fall back to Android's platform provider. Use `android` to
|
|
78
|
+
* force Android's platform `LocationManager` path.
|
|
78
79
|
*/
|
|
79
80
|
locationProvider?: LocationProvider;
|
|
80
81
|
};
|
|
@@ -90,10 +91,10 @@ export type CompatGeolocationConfiguration = Omit<
|
|
|
90
91
|
"locationProvider"
|
|
91
92
|
> & {
|
|
92
93
|
/**
|
|
93
|
-
* Android location provider.
|
|
94
|
+
* Android location provider compatibility option.
|
|
94
95
|
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
96
|
+
* Preserved for the legacy `/compat` configuration surface. Use the Modern
|
|
97
|
+
* API root import when you need Android fused/provider selection.
|
|
97
98
|
*/
|
|
98
99
|
locationProvider?: LocationProvider;
|
|
99
100
|
};
|
package/src/types.ts
CHANGED
|
@@ -112,6 +112,9 @@ export interface LocationProviderStatus {
|
|
|
112
112
|
/** Android-only passive provider availability. Undefined on iOS. */
|
|
113
113
|
passiveAvailable?: boolean;
|
|
114
114
|
|
|
115
|
+
/** Android-only Google Play Services availability. Undefined on iOS. */
|
|
116
|
+
googlePlayServicesAvailable?: boolean;
|
|
117
|
+
|
|
115
118
|
/**
|
|
116
119
|
* Android-only Google Location Accuracy state when Google Play Services
|
|
117
120
|
* exposes it. Undefined on iOS or when unavailable.
|