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
package/README.md
CHANGED
|
@@ -4,10 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
**Nitro-powered geolocation for modern React Native apps**
|
|
6
6
|
|
|
7
|
-
A native iOS/Android geolocation module for React Native 0.75+
|
|
8
|
-
Architecture
|
|
7
|
+
A native iOS/Android geolocation module for React Native 0.75+ apps using the
|
|
8
|
+
New Architecture and Nitro Modules. Start by replacing
|
|
9
9
|
[`@react-native-community/geolocation`](https://github.com/michalchudziak/react-native-geolocation)
|
|
10
10
|
with `/compat`, then move to a typed Modern API when you are ready.
|
|
11
|
+
The current release line adds web support for Modern and `/compat` foreground
|
|
12
|
+
geolocation plus a native Background Location API for tracking, geofencing,
|
|
13
|
+
storage recovery, Headless JS, and HTTP sync.
|
|
11
14
|
|
|
12
15
|
- 🎯 **Simple functional API** — Direct function calls, no complex abstractions
|
|
13
16
|
- ⚡ **JSI-powered performance** — Direct native calls without Bridge overhead
|
|
@@ -31,23 +34,25 @@ Full documentation available at:
|
|
|
31
34
|
|
|
32
35
|
| Use case | Recommendation |
|
|
33
36
|
|---|---|
|
|
34
|
-
| Bare React Native 0.75+ app | Use Nitro Geolocation |
|
|
37
|
+
| Bare React Native 0.75+ app with New Architecture/Nitro enabled | Use Nitro Geolocation |
|
|
35
38
|
| Migrating from `@react-native-community/geolocation` | Start with `/compat` |
|
|
36
39
|
| New Architecture / Nitro-based app | Recommended |
|
|
37
40
|
| Expo development build or custom native build | Supported with native setup |
|
|
38
41
|
| Expo managed app without native rebuild | Use `expo-location` |
|
|
39
|
-
| Web support required | Use
|
|
40
|
-
| Full background tracking / geofencing | Use
|
|
42
|
+
| Web support required | Use the Modern API root import or `/compat` callback API |
|
|
43
|
+
| Full background tracking / geofencing | Use `react-native-nitro-geolocation/background` |
|
|
41
44
|
|
|
42
|
-
Web is
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
Web support is available for the Modern API root import and the `/compat`
|
|
46
|
+
subpath. Browser builds resolve both entries to implementations backed by
|
|
47
|
+
`navigator.geolocation` and do not load Nitro native bindings. Background
|
|
48
|
+
location remains native-only.
|
|
45
49
|
|
|
46
50
|
---
|
|
47
51
|
|
|
48
52
|
## 🧭 Introduction
|
|
49
53
|
|
|
50
|
-
React Native Nitro Geolocation provides **
|
|
54
|
+
React Native Nitro Geolocation provides **three public API surfaces** to fit
|
|
55
|
+
your needs:
|
|
51
56
|
|
|
52
57
|
### 1. Modern API (Recommended)
|
|
53
58
|
|
|
@@ -57,88 +62,27 @@ React Native Nitro Geolocation provides **two APIs** to fit your needs:
|
|
|
57
62
|
import {
|
|
58
63
|
setConfiguration,
|
|
59
64
|
requestPermission,
|
|
60
|
-
requestLocationSettings,
|
|
61
|
-
getLocationAvailability,
|
|
62
65
|
getCurrentPosition,
|
|
63
|
-
getLastKnownPosition,
|
|
64
|
-
geocode,
|
|
65
|
-
reverseGeocode,
|
|
66
|
-
getHeading,
|
|
67
|
-
watchHeading,
|
|
68
|
-
unwatch,
|
|
69
|
-
getAccuracyAuthorization,
|
|
70
|
-
requestTemporaryFullAccuracy,
|
|
71
|
-
useWatchPosition,
|
|
72
66
|
} from "react-native-nitro-geolocation";
|
|
73
67
|
|
|
74
|
-
// Configure once at app startup
|
|
75
68
|
setConfiguration({
|
|
76
69
|
authorizationLevel: "whenInUse",
|
|
77
70
|
locationProvider: "auto",
|
|
78
71
|
});
|
|
79
72
|
|
|
80
|
-
// Request permission
|
|
81
73
|
const status = await requestPermission();
|
|
82
74
|
|
|
83
|
-
|
|
84
|
-
await
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const availability = await getLocationAvailability();
|
|
88
|
-
|
|
89
|
-
// Get current location
|
|
90
|
-
const position = await getCurrentPosition({
|
|
91
|
-
accuracy: { android: "high", ios: "best" },
|
|
92
|
-
granularity: "permission",
|
|
93
|
-
waitForAccurateLocation: true,
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
// v1.2+: read cached location explicitly without starting a fresh request
|
|
97
|
-
const cached = await getLastKnownPosition({
|
|
98
|
-
maximumAge: 60_000,
|
|
99
|
-
accuracy: { android: "balanced", ios: "hundredMeters" },
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
// v1.2+: convert between addresses and coordinates with native geocoders
|
|
103
|
-
const locations = await geocode("City Hall, Seoul, South Korea");
|
|
104
|
-
const addresses = await reverseGeocode({
|
|
105
|
-
latitude: 37.5665,
|
|
106
|
-
longitude: 126.978,
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
// v1.2+: inspect precise/reduced accuracy authorization
|
|
110
|
-
const accuracyAuthorization = await getAccuracyAuthorization();
|
|
111
|
-
if (accuracyAuthorization === "reduced") {
|
|
112
|
-
await requestTemporaryFullAccuracy("TurnByTurnNavigation");
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// v1.2+: read and watch compass heading
|
|
116
|
-
const heading = await getHeading();
|
|
117
|
-
const headingToken = watchHeading((nextHeading) => {
|
|
118
|
-
console.log(nextHeading.magneticHeading);
|
|
119
|
-
});
|
|
120
|
-
unwatch(headingToken);
|
|
121
|
-
|
|
122
|
-
// Continuous tracking with hook
|
|
123
|
-
function LocationTracker() {
|
|
124
|
-
const { position, error, isWatching } = useWatchPosition({
|
|
125
|
-
enabled: true,
|
|
126
|
-
accuracy: { android: "high", ios: "bestForNavigation" },
|
|
127
|
-
distanceFilter: 10,
|
|
75
|
+
if (status === "granted") {
|
|
76
|
+
const position = await getCurrentPosition({
|
|
77
|
+
accuracy: { android: "high", ios: "best" },
|
|
78
|
+
timeout: 15_000,
|
|
128
79
|
});
|
|
129
|
-
|
|
130
|
-
if (error) return <Text>Error: {error.message}</Text>;
|
|
131
|
-
if (!position) return <Text>Waiting...</Text>;
|
|
132
|
-
|
|
133
|
-
return (
|
|
134
|
-
<Text>
|
|
135
|
-
{position.coords.latitude}, {position.coords.longitude}
|
|
136
|
-
</Text>
|
|
137
|
-
);
|
|
138
80
|
}
|
|
139
81
|
```
|
|
140
82
|
|
|
141
|
-
|
|
83
|
+
See the [Modern API guide](https://react-native-nitro-geolocation.pages.dev/guide/modern-api)
|
|
84
|
+
for watches, geocoding, heading, cached reads, Android settings, and iOS
|
|
85
|
+
accuracy authorization.
|
|
142
86
|
|
|
143
87
|
### 2. Compat API (Compatibility)
|
|
144
88
|
|
|
@@ -158,18 +102,22 @@ const watchId = Geolocation.watchPosition((position) => console.log(position));
|
|
|
158
102
|
Geolocation.clearWatch(watchId);
|
|
159
103
|
```
|
|
160
104
|
|
|
161
|
-
|
|
105
|
+
The `/compat` subpath covers the core native community API, including
|
|
106
|
+
`setRNConfiguration`, `requestAuthorization`, `getCurrentPosition`,
|
|
107
|
+
`watchPosition`, `clearWatch`, and `stopObserving`. It also has a browser entry
|
|
108
|
+
for callback-style foreground geolocation. See the
|
|
109
|
+
[Compat API guide](https://react-native-nitro-geolocation.pages.dev/guide/compat-api)
|
|
110
|
+
for the full compatibility matrix and option notes.
|
|
111
|
+
|
|
112
|
+
### 3. Background API
|
|
113
|
+
|
|
114
|
+
Native background tracking, geofencing, activity events, Android Headless JS,
|
|
115
|
+
HTTP sync, and stored event recovery should use the explicit background subpath.
|
|
162
116
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
| `getCurrentPosition` | Supported | Keeps the legacy callback and error shape. |
|
|
168
|
-
| `watchPosition` | Supported | Returns a numeric watch id. |
|
|
169
|
-
| `clearWatch` | Supported | Clears a watch id from `watchPosition`. |
|
|
170
|
-
| `stopObserving` | Supported | Preserved for legacy cleanup compatibility. |
|
|
171
|
-
| `navigator.geolocation` polyfill | Not supported in `v1.2.x` | Planned for `v1.3`. |
|
|
172
|
-
| Web | Not supported in `v1.2.x` | Planned as a `/compat` browser fallback in `v1.3`. |
|
|
117
|
+
Background location is native-only. Browser builds expose unsupported stubs so
|
|
118
|
+
web bundles can still import shared code safely. Start with the
|
|
119
|
+
[Background Location guide](https://react-native-nitro-geolocation.pages.dev/background/overview)
|
|
120
|
+
for permissions, start/stop, geofencing, storage recovery, and native sync.
|
|
173
121
|
|
|
174
122
|
---
|
|
175
123
|
|
|
@@ -204,6 +152,9 @@ Add permissions to your **Info.plist**:
|
|
|
204
152
|
<string>This app requires access to your location at all times.</string>
|
|
205
153
|
```
|
|
206
154
|
|
|
155
|
+
For background tracking, also enable the `location` background mode in
|
|
156
|
+
`UIBackgroundModes`.
|
|
157
|
+
|
|
207
158
|
---
|
|
208
159
|
|
|
209
160
|
### 3. Android Setup
|
|
@@ -221,218 +172,56 @@ Optional (for background):
|
|
|
221
172
|
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
|
222
173
|
```
|
|
223
174
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
- Uses Google Play Services fused location when `locationProvider:
|
|
229
|
-
"playServices"` is set.
|
|
230
|
-
- Keeps `locationProvider: "auto"` on Android's platform `LocationManager` by
|
|
231
|
-
default. Set `playServices` explicitly when you want fused location behavior.
|
|
232
|
-
- Supports native settings resolution through `requestLocationSettings`.
|
|
233
|
-
- Supports approximate/coarse location handling through permissions and
|
|
234
|
-
Android `granularity`.
|
|
235
|
-
- Supports explicit cached reads through `getLastKnownPosition`.
|
|
236
|
-
- Provides structured Modern API errors such as `PLAY_SERVICE_NOT_AVAILABLE`,
|
|
237
|
-
`SETTINGS_NOT_SATISFIED`, and `TIMEOUT`.
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
### 5. Expo Development Builds
|
|
242
|
-
|
|
243
|
-
This package requires native Nitro bindings, so it is not an Expo Go module.
|
|
244
|
-
Use Expo prebuild, a development build, or another custom native build flow,
|
|
245
|
-
then apply the same iOS and Android native permission setup shown above.
|
|
246
|
-
|
|
247
|
-
Managed Expo apps that cannot rebuild native code should use `expo-location`.
|
|
248
|
-
See the [Expo development build guide](https://react-native-nitro-geolocation.pages.dev/guide/expo-development-build)
|
|
249
|
-
for the supported setup path.
|
|
175
|
+
Full background tracking uses a foreground service on Android. Add the full
|
|
176
|
+
permission set from the Android background setup guide when using
|
|
177
|
+
`react-native-nitro-geolocation/background`, including Android 13+
|
|
178
|
+
`POST_NOTIFICATIONS` for the tracking notification.
|
|
250
179
|
|
|
251
180
|
---
|
|
252
181
|
|
|
253
|
-
###
|
|
254
|
-
|
|
255
|
-
#### DevTools Plugin (Rozenite)
|
|
182
|
+
### 4. DevTools Plugin
|
|
256
183
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
> **API Compatibility**: Only works with the Modern API. Does not support the Compat API (`/compat`).
|
|
184
|
+
Use the Rozenite DevTools plugin to mock locations during development with an
|
|
185
|
+
interactive map. It works with the Modern API root import.
|
|
260
186
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-

|
|
187
|
+

|
|
264
188
|
|
|
265
189
|
```bash
|
|
266
|
-
npm install @react-native-nitro-geolocation/rozenite-plugin
|
|
267
|
-
# or
|
|
268
190
|
yarn add @react-native-nitro-geolocation/rozenite-plugin
|
|
269
191
|
```
|
|
270
192
|
|
|
271
|
-
**Setup**:
|
|
272
|
-
|
|
273
193
|
```tsx
|
|
274
194
|
import {
|
|
275
|
-
useGeolocationDevTools,
|
|
276
195
|
createPosition,
|
|
196
|
+
useGeolocationDevTools,
|
|
277
197
|
} from "@react-native-nitro-geolocation/rozenite-plugin";
|
|
278
198
|
|
|
279
199
|
function App() {
|
|
280
|
-
// Enable location mocking in development
|
|
281
200
|
useGeolocationDevTools({
|
|
282
201
|
initialPosition: createPosition("Seoul, South Korea"),
|
|
283
202
|
});
|
|
284
203
|
|
|
285
|
-
return <
|
|
204
|
+
return <RootNavigator />;
|
|
286
205
|
}
|
|
287
206
|
```
|
|
288
207
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
- 📍 Click to set location instantly
|
|
293
|
-
- ⌨️ Arrow key navigation for precise control
|
|
294
|
-
- 🏙️ 20 pre-configured city presets
|
|
295
|
-
- ✏️ Manual latitude/longitude input
|
|
296
|
-
- 📊 Real-time heading, speed, and accuracy calculation
|
|
297
|
-
- 🌓 Dark mode support
|
|
298
|
-
|
|
299
|
-
[See full DevTools guide →](https://react-native-nitro-geolocation.pages.dev/guide/devtools)
|
|
300
|
-
|
|
301
|
-
---
|
|
302
|
-
|
|
303
|
-
### 7. Usage
|
|
304
|
-
|
|
305
|
-
#### Modern API (Recommended)
|
|
306
|
-
|
|
307
|
-
```tsx
|
|
308
|
-
// Get current location
|
|
309
|
-
const position = await getCurrentPosition({
|
|
310
|
-
accuracy: { android: "high", ios: "best" },
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
// Real-time tracking with hook
|
|
314
|
-
const { position, error } = useWatchPosition({
|
|
315
|
-
enabled: true,
|
|
316
|
-
accuracy: { android: "balanced", ios: "nearestTenMeters" },
|
|
317
|
-
distanceFilter: 10
|
|
318
|
-
});
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
Accuracy presets are available since `v1.2`.
|
|
322
|
-
|
|
323
|
-
`getLastKnownPosition(options?)`, `getLocationAvailability()`, `getHeading()`,
|
|
324
|
-
`watchHeading()`, `geocode(address)`, `reverseGeocode(coords)`, selected
|
|
325
|
-
Android request options (`granularity`, `waitForAccurateLocation`,
|
|
326
|
-
`maxUpdateAge`, `maxUpdateDelay`, and `maxUpdates`), iOS tuning options
|
|
327
|
-
(`activityType`, `pausesLocationUpdatesAutomatically`, and
|
|
328
|
-
`showsBackgroundLocationIndicator`), `getAccuracyAuthorization()`, and
|
|
329
|
-
`requestTemporaryFullAccuracy(purposeKey)` are available since `v1.2`.
|
|
330
|
-
|
|
331
|
-
`enableHighAccuracy` is deprecated in the Modern API and remains supported only
|
|
332
|
-
for v1 compatibility. Prefer `accuracy`; when `accuracy.android` or
|
|
333
|
-
`accuracy.ios` is provided for the current platform, that explicit preset takes
|
|
334
|
-
precedence over the boolean. `enableHighAccuracy` is expected to be removed from
|
|
335
|
-
the Modern API in v2.
|
|
336
|
-
|
|
337
|
-
The `/compat` API keeps `enableHighAccuracy` for drop-in compatibility with
|
|
338
|
-
`@react-native-community/geolocation`.
|
|
339
|
-
|
|
340
|
-
#### Compat API (Compatibility)
|
|
341
|
-
|
|
342
|
-
```tsx
|
|
343
|
-
import Geolocation from "react-native-nitro-geolocation/compat";
|
|
344
|
-
|
|
345
|
-
Geolocation.getCurrentPosition((pos) => console.log(pos));
|
|
346
|
-
const watchId = Geolocation.watchPosition((pos) => console.log(pos));
|
|
347
|
-
Geolocation.clearWatch(watchId);
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
---
|
|
351
|
-
|
|
352
|
-
---
|
|
353
|
-
|
|
354
|
-
## 🔄 Migration
|
|
355
|
-
|
|
356
|
-
### From `@react-native-community/geolocation`
|
|
357
|
-
|
|
358
|
-
The safest migration is two-step: switch imports to `/compat` first, verify
|
|
359
|
-
the app, then move call sites to the Modern API where it improves ownership,
|
|
360
|
-
permission timing, cache behavior, or Android settings handling.
|
|
361
|
-
|
|
362
|
-
For Modern API migration, install the Agent Skills-compatible migration
|
|
363
|
-
playbook from this repository. It is migration assistance for coding agents, not
|
|
364
|
-
a fully automatic migration. The skill first runs a package-manager-aware
|
|
365
|
-
compat bootstrap script that installs the Nitro packages, rewrites legacy import
|
|
366
|
-
sources to `/compat`, and removes `@react-native-community/geolocation`. After
|
|
367
|
-
that safe mechanical step, it guides the agent to refactor compat call sites to
|
|
368
|
-
Modern API best practices using explicit criteria for permission timing, React
|
|
369
|
-
lifecycle ownership, watch cleanup, cache-vs-fresh location reads, accuracy, and
|
|
370
|
-
Android provider/settings handling.
|
|
371
|
-
|
|
372
|
-
With the Vercel Labs `skills` CLI:
|
|
373
|
-
|
|
374
|
-
```bash
|
|
375
|
-
npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
The skill source is
|
|
379
|
-
[`skills/community-migration/SKILL.md`](https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration).
|
|
380
|
-
The bundled bootstrap script is
|
|
381
|
-
[`skills/community-migration/scripts/migrate-to-compat.mjs`](https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration/scripts/migrate-to-compat.mjs).
|
|
382
|
-
|
|
383
|
-
For a drop-in compatibility migration, change the import to use `/compat`:
|
|
384
|
-
|
|
385
|
-
```diff
|
|
386
|
-
- import Geolocation from '@react-native-community/geolocation';
|
|
387
|
-
+ import Geolocation from 'react-native-nitro-geolocation/compat';
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
Then migrate individual call sites to the Modern API:
|
|
391
|
-
|
|
392
|
-
```diff
|
|
393
|
-
- Geolocation.getCurrentPosition(onSuccess, onError, {
|
|
394
|
-
- enableHighAccuracy: true,
|
|
395
|
-
- timeout: 15000,
|
|
396
|
-
- });
|
|
397
|
-
+ const position = await getCurrentPosition({
|
|
398
|
-
+ accuracy: { android: "high", ios: "best" },
|
|
399
|
-
+ timeout: 15000,
|
|
400
|
-
+ });
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
See [Community Migration](https://react-native-nitro-geolocation.pages.dev/guide/community-migration)
|
|
404
|
-
for the full community import → `/compat` → Modern API path.
|
|
405
|
-
|
|
406
|
-
### From `react-native-geolocation-service`
|
|
407
|
-
|
|
408
|
-
Apps currently using `react-native-geolocation-service` should migrate directly
|
|
409
|
-
to the Modern API. Do not route this path through `/compat`; the service package
|
|
410
|
-
has Android fused-provider, settings-dialog, `mocked`/`provider`, and
|
|
411
|
-
provider-related error behavior that maps more naturally to Modern APIs.
|
|
412
|
-
|
|
413
|
-
Install the dedicated Agent Skills-compatible migration playbook:
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
npx skills add jingjing2222/react-native-nitro-geolocation --skill service-migration
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
See [Service Migration](https://react-native-nitro-geolocation.pages.dev/guide/service-migration)
|
|
420
|
-
for the direct service → Modern API path.
|
|
208
|
+
The plugin requires Rozenite DevTools in your app. See the
|
|
209
|
+
[DevTools Plugin guide](https://react-native-nitro-geolocation.pages.dev/guide/devtools)
|
|
210
|
+
for setup, presets, troubleshooting, and the demo.
|
|
421
211
|
|
|
422
212
|
---
|
|
423
213
|
|
|
424
|
-
|
|
214
|
+
### 5. Continue In The Docs
|
|
425
215
|
|
|
426
|
-
|
|
427
|
-
5 runs on an iPhone 14 Pro with React Native 0.81.4. It measures the
|
|
428
|
-
JS-to-native path for cached locations, not cold GPS acquisition, permission
|
|
429
|
-
dialogs, provider availability, or OS throttling.
|
|
216
|
+
Use the docs site for the detailed flows:
|
|
430
217
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
218
|
+
- [Quick Start](https://react-native-nitro-geolocation.pages.dev/guide/quick-start) - install, set native permissions, and read your first location.
|
|
219
|
+
- [Modern API](https://react-native-nitro-geolocation.pages.dev/guide/modern-api) - accuracy presets, watches, Android settings, cached reads, geocoding, heading, and iOS accuracy authorization.
|
|
220
|
+
- [Compat API](https://react-native-nitro-geolocation.pages.dev/guide/compat-api) - callback compatibility and web behavior.
|
|
221
|
+
- [Background Location](https://react-native-nitro-geolocation.pages.dev/background/overview) - native background tracking, geofencing, storage recovery, Headless JS, and HTTP sync.
|
|
222
|
+
- [Migration Assistance](https://react-native-nitro-geolocation.pages.dev/guide/migration-assistance) - choose the community or service migration path.
|
|
223
|
+
- [Expo Development Builds](https://react-native-nitro-geolocation.pages.dev/guide/expo-development-build) - use the package in Expo custom native builds.
|
|
224
|
+
- [DevTools Plugin](https://react-native-nitro-geolocation.pages.dev/guide/devtools) - mock locations during development.
|
|
436
225
|
|
|
437
226
|
## 📖 Learn More
|
|
438
227
|
|
package/android/build.gradle
CHANGED
|
@@ -131,4 +131,5 @@ dependencies {
|
|
|
131
131
|
implementation "com.google.android.gms:play-services-location:${getExtOrDefaultValue('playServicesLocationVersion', '21.3.0')}"
|
|
132
132
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
133
133
|
implementation project(":react-native-nitro-modules")
|
|
134
|
+
testImplementation "junit:junit:4.13.2"
|
|
134
135
|
}
|
|
@@ -1,2 +1,41 @@
|
|
|
1
1
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
3
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
|
|
4
|
+
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
|
5
|
+
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
|
|
6
|
+
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
7
|
+
|
|
8
|
+
<application>
|
|
9
|
+
<service
|
|
10
|
+
android:name=".background.NitroBackgroundLocationService"
|
|
11
|
+
android:exported="false"
|
|
12
|
+
android:foregroundServiceType="location" />
|
|
13
|
+
|
|
14
|
+
<service
|
|
15
|
+
android:name=".background.NitroBackgroundHeadlessTaskService"
|
|
16
|
+
android:exported="false" />
|
|
17
|
+
|
|
18
|
+
<receiver
|
|
19
|
+
android:name=".background.NitroLocationUpdateReceiver"
|
|
20
|
+
android:exported="false" />
|
|
21
|
+
|
|
22
|
+
<receiver
|
|
23
|
+
android:name=".background.NitroGeofenceReceiver"
|
|
24
|
+
android:exported="false" />
|
|
25
|
+
|
|
26
|
+
<receiver
|
|
27
|
+
android:name=".background.NitroActivityRecognitionReceiver"
|
|
28
|
+
android:exported="false" />
|
|
29
|
+
|
|
30
|
+
<receiver
|
|
31
|
+
android:name=".background.NitroBootReceiver"
|
|
32
|
+
android:enabled="true"
|
|
33
|
+
android:exported="true"
|
|
34
|
+
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
|
|
35
|
+
<intent-filter>
|
|
36
|
+
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
|
37
|
+
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
|
|
38
|
+
</intent-filter>
|
|
39
|
+
</receiver>
|
|
40
|
+
</application>
|
|
2
41
|
</manifest>
|