react-native-nitro-background-geolocation 0.1.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.
- package/NitroBackgroundGeolocation.podspec +29 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +133 -0
- package/android/src/main/AndroidManifest.xml +65 -0
- package/android/src/main/cpp/cpp-adapter.cpp +11 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ConfigMapper.kt +332 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt +23 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt +66 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocation.kt +538 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocationPackage.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ReactNativeHeadlessTaskRunner.kt +62 -0
- package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +542 -0
- package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
- package/android/src/main/java/com/marianhello/bgloc/Config.java +652 -0
- package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
- package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +168 -0
- package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
- package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +186 -0
- package/android/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
- package/android/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
- package/android/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
- package/android/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
- package/android/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
- package/android/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
- package/android/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
- package/android/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
- package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
- package/android/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +61 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +280 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +586 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +142 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +17 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +760 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +140 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +246 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +233 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
- package/android/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
- package/android/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
- package/android/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
- package/android/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
- package/android/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
- package/android/src/main/java/com/marianhello/utils/Convert.java +56 -0
- package/android/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
- package/android/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
- package/android/src/main/java/org/apache/commons/io/Charsets.java +153 -0
- package/android/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
- package/android/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
- package/android/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
- package/android/src/main/res/values/strings.xml +6 -0
- package/android/src/main/res/xml/authenticator.xml +7 -0
- package/android/src/main/res/xml/syncadapter.xml +9 -0
- package/app.plugin.js +64 -0
- package/ios/NitroBackgroundGeolocation.swift +719 -0
- package/ios/NitroBackgroundGeolocationBootstrap.m +98 -0
- package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
- package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
- package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
- package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
- package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
- package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
- package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
- package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
- package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
- package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
- package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
- package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +62 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +650 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +184 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +523 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.m +308 -0
- package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
- package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
- package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
- package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
- package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +218 -0
- package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
- package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
- package/ios/common/BackgroundGeolocation/Reachability.m +474 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
- package/lib/module/NitroBackgroundGeolocation.nitro.js +172 -0
- package/lib/module/NitroBackgroundGeolocation.nitro.js.map +1 -0
- package/lib/module/headless.js +72 -0
- package/lib/module/headless.js.map +1 -0
- package/lib/module/index.js +60 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts +616 -0
- package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts.map +1 -0
- package/lib/typescript/src/headless.d.ts +40 -0
- package/lib/typescript/src/headless.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +8 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/nitro.json +23 -0
- package/nitrogen/generated/android/c++/JActivity.hpp +61 -0
- package/nitrogen/generated/android/c++/JAuthorizationStatus.hpp +61 -0
- package/nitrogen/generated/android/c++/JBackgroundGeolocationError.hpp +61 -0
- package/nitrogen/generated/android/c++/JConfigureOptions.hpp +179 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_Activity.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_AuthorizationStatus.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_BackgroundGeolocationError.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_Location.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_StationaryLocation.hpp +78 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.cpp +530 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.hpp +90 -0
- package/nitrogen/generated/android/c++/JLocation.hpp +105 -0
- package/nitrogen/generated/android/c++/JLocationAccuracy.hpp +64 -0
- package/nitrogen/generated/android/c++/JLocationOptions.hpp +65 -0
- package/nitrogen/generated/android/c++/JLocationProvider.hpp +61 -0
- package/nitrogen/generated/android/c++/JLogEntry.hpp +73 -0
- package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +67 -0
- package/nitrogen/generated/android/c++/JServiceStatus.hpp +66 -0
- package/nitrogen/generated/android/c++/JStationaryLocation.hpp +109 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.hpp +69 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.cpp +33 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.hpp +77 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Activity.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/AuthorizationStatus.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/BackgroundGeolocationError.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ConfigureOptions.kt +182 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Activity.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_AuthorizationStatus.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_BackgroundGeolocationError.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Location.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_StationaryLocation.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/HybridNitroBackgroundGeolocationSpec.kt +218 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Location.kt +111 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationAccuracy.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationOptions.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationProvider.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LogEntry.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/NativeLogLevel.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ServiceStatus.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/StationaryLocation.kt +116 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_AnyMap.kt +63 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Boolean.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Double.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationAccuracy.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationProvider.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Map_String__String_.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_String.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/nitrobackgroundgeolocationOnLoad.kt +35 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake +88 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle +27 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.cpp +66 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.hpp +34 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb +62 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.cpp +129 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.hpp +911 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Umbrella.hpp +88 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.swift +26 -0
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.hpp +335 -0
- package/nitrogen/generated/ios/swift/Activity.swift +34 -0
- package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
- package/nitrogen/generated/ios/swift/BackgroundGeolocationError.swift +34 -0
- package/nitrogen/generated/ios/swift/ConfigureOptions.swift +1037 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_Activity.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_AuthorizationStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundGeolocationError.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_ConfigureOptions.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_Location.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_ServiceStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_StationaryLocation.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_StationaryLocation_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_Location_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_LogEntry_.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec.swift +82 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec_cxx.swift +675 -0
- package/nitrogen/generated/ios/swift/Location.swift +89 -0
- package/nitrogen/generated/ios/swift/LocationAccuracy.swift +48 -0
- package/nitrogen/generated/ios/swift/LocationOptions.swift +78 -0
- package/nitrogen/generated/ios/swift/LocationProvider.swift +44 -0
- package/nitrogen/generated/ios/swift/LogEntry.swift +49 -0
- package/nitrogen/generated/ios/swift/NativeLogLevel.swift +52 -0
- package/nitrogen/generated/ios/swift/ServiceStatus.swift +39 -0
- package/nitrogen/generated/ios/swift/StationaryLocation.swift +94 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_AnyMap.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Bool.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Dictionary_String__String_.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_LocationAccuracy.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_LocationProvider.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
- package/nitrogen/generated/shared/c++/Activity.hpp +87 -0
- package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +63 -0
- package/nitrogen/generated/shared/c++/BackgroundGeolocationError.hpp +87 -0
- package/nitrogen/generated/shared/c++/ConfigureOptions.hpp +197 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.cpp +48 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.hpp +121 -0
- package/nitrogen/generated/shared/c++/Location.hpp +131 -0
- package/nitrogen/generated/shared/c++/LocationAccuracy.hpp +69 -0
- package/nitrogen/generated/shared/c++/LocationOptions.hpp +91 -0
- package/nitrogen/generated/shared/c++/LocationProvider.hpp +63 -0
- package/nitrogen/generated/shared/c++/LogEntry.hpp +99 -0
- package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +65 -0
- package/nitrogen/generated/shared/c++/ServiceStatus.hpp +92 -0
- package/nitrogen/generated/shared/c++/StationaryLocation.hpp +135 -0
- package/package.json +112 -0
- package/react-native.config.js +10 -0
- package/src/NitroBackgroundGeolocation.nitro.ts +656 -0
- package/src/headless.ts +91 -0
- package/src/index.tsx +100 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = "NitroBackgroundGeolocation"
|
|
7
|
+
s.version = package["version"]
|
|
8
|
+
s.summary = package["description"]
|
|
9
|
+
s.homepage = package["homepage"]
|
|
10
|
+
s.license = package["license"]
|
|
11
|
+
s.authors = package["author"]
|
|
12
|
+
|
|
13
|
+
s.platforms = { :ios => min_ios_version_supported }
|
|
14
|
+
s.source = { :git => "https://github.com/atoui-zahreddine/react-native-nitro-background-geolocation.git", :tag => "#{s.version}" }
|
|
15
|
+
|
|
16
|
+
s.source_files = [
|
|
17
|
+
"ios/**/*.{swift,h,m,mm}",
|
|
18
|
+
"cpp/**/*.{hpp,cpp}",
|
|
19
|
+
]
|
|
20
|
+
s.public_header_files = "ios/common/BackgroundGeolocation/**/*.h"
|
|
21
|
+
|
|
22
|
+
s.dependency 'React-jsi'
|
|
23
|
+
s.dependency 'React-callinvoker'
|
|
24
|
+
|
|
25
|
+
load 'nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb'
|
|
26
|
+
add_nitrogen_files(s)
|
|
27
|
+
|
|
28
|
+
install_modules_dependencies(s)
|
|
29
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
project(nitrobackgroundgeolocation)
|
|
2
|
+
cmake_minimum_required(VERSION 3.9.0)
|
|
3
|
+
|
|
4
|
+
set(PACKAGE_NAME nitrobackgroundgeolocation)
|
|
5
|
+
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
6
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
7
|
+
|
|
8
|
+
# Define C++ library and add all sources
|
|
9
|
+
add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp)
|
|
10
|
+
|
|
11
|
+
# Add Nitrogen specs :)
|
|
12
|
+
include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake)
|
|
13
|
+
|
|
14
|
+
# Set up local includes
|
|
15
|
+
include_directories("src/main/cpp" "../cpp")
|
|
16
|
+
|
|
17
|
+
find_library(LOG_LIB log)
|
|
18
|
+
|
|
19
|
+
# Link all libraries together
|
|
20
|
+
target_link_libraries(
|
|
21
|
+
${PACKAGE_NAME}
|
|
22
|
+
${LOG_LIB}
|
|
23
|
+
android # <-- Android core
|
|
24
|
+
)
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
buildscript {
|
|
2
|
+
ext.NitroBackgroundGeolocation = [
|
|
3
|
+
kotlinVersion: "2.0.21",
|
|
4
|
+
minSdkVersion: 24,
|
|
5
|
+
compileSdkVersion: 36,
|
|
6
|
+
targetSdkVersion: 36
|
|
7
|
+
]
|
|
8
|
+
|
|
9
|
+
ext.getExtOrDefault = { prop ->
|
|
10
|
+
if (rootProject.ext.has(prop)) {
|
|
11
|
+
return rootProject.ext.get(prop)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return NitroBackgroundGeolocation[prop]
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
repositories {
|
|
18
|
+
google()
|
|
19
|
+
mavenCentral()
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
dependencies {
|
|
23
|
+
classpath "com.android.tools.build:gradle:8.7.2"
|
|
24
|
+
// noinspection DifferentKotlinGradleVersion
|
|
25
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def reactNativeArchitectures() {
|
|
30
|
+
def value = rootProject.getProperties().get("reactNativeArchitectures")
|
|
31
|
+
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
apply plugin: "com.android.library"
|
|
35
|
+
apply plugin: "kotlin-android"
|
|
36
|
+
apply from: '../nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle'
|
|
37
|
+
|
|
38
|
+
apply plugin: "com.facebook.react"
|
|
39
|
+
|
|
40
|
+
android {
|
|
41
|
+
namespace "com.margelo.nitro.nitrobackgroundgeolocation"
|
|
42
|
+
|
|
43
|
+
compileSdkVersion getExtOrDefault("compileSdkVersion")
|
|
44
|
+
|
|
45
|
+
defaultConfig {
|
|
46
|
+
minSdkVersion getExtOrDefault("minSdkVersion")
|
|
47
|
+
targetSdkVersion getExtOrDefault("targetSdkVersion")
|
|
48
|
+
|
|
49
|
+
externalNativeBuild {
|
|
50
|
+
cmake {
|
|
51
|
+
cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
|
|
52
|
+
arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
|
|
53
|
+
abiFilters (*reactNativeArchitectures())
|
|
54
|
+
|
|
55
|
+
buildTypes {
|
|
56
|
+
debug {
|
|
57
|
+
cppFlags "-O1 -g"
|
|
58
|
+
}
|
|
59
|
+
release {
|
|
60
|
+
cppFlags "-O2"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
externalNativeBuild {
|
|
68
|
+
cmake {
|
|
69
|
+
path "CMakeLists.txt"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
packagingOptions {
|
|
74
|
+
excludes = [
|
|
75
|
+
"META-INF",
|
|
76
|
+
"META-INF/**",
|
|
77
|
+
"**/libc++_shared.so",
|
|
78
|
+
"**/libfbjni.so",
|
|
79
|
+
"**/libjsi.so",
|
|
80
|
+
"**/libfolly_json.so",
|
|
81
|
+
"**/libfolly_runtime.so",
|
|
82
|
+
"**/libglog.so",
|
|
83
|
+
"**/libhermes.so",
|
|
84
|
+
"**/libhermes-executor-debug.so",
|
|
85
|
+
"**/libhermes_executor.so",
|
|
86
|
+
"**/libreactnative.so",
|
|
87
|
+
"**/libreactnativejni.so",
|
|
88
|
+
"**/libturbomodulejsijni.so",
|
|
89
|
+
"**/libreact_nativemodule_core.so",
|
|
90
|
+
"**/libjscexecutor.so"
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
buildFeatures {
|
|
95
|
+
buildConfig true
|
|
96
|
+
prefab true
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
buildTypes {
|
|
100
|
+
release {
|
|
101
|
+
minifyEnabled false
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
lint {
|
|
106
|
+
disable "GradleCompatible"
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
compileOptions {
|
|
110
|
+
sourceCompatibility JavaVersion.VERSION_1_8
|
|
111
|
+
targetCompatibility JavaVersion.VERSION_1_8
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
repositories {
|
|
116
|
+
maven { url 'https://jitpack.io' }
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
dependencies {
|
|
120
|
+
implementation "com.facebook.react:react-android"
|
|
121
|
+
implementation project(":react-native-nitro-modules")
|
|
122
|
+
|
|
123
|
+
// Background geolocation native dependencies
|
|
124
|
+
implementation "com.google.android.gms:play-services-location:21.3.0"
|
|
125
|
+
implementation "com.github.tony19:logback-android:2.0.1"
|
|
126
|
+
implementation "org.slf4j:slf4j-api:1.7.36"
|
|
127
|
+
implementation "androidx.appcompat:appcompat:1.7.0"
|
|
128
|
+
implementation "androidx.lifecycle:lifecycle-process:2.8.7"
|
|
129
|
+
implementation("io.github.nishkarsh:android-permissions:2.1.8") {
|
|
130
|
+
exclude group: 'com.android.support', module: 'appcompat-v7'
|
|
131
|
+
}
|
|
132
|
+
implementation "com.github.jparkie:promise:1.0.3"
|
|
133
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
|
+
|
|
3
|
+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
4
|
+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
5
|
+
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
|
6
|
+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
7
|
+
<uses-permission android:name="android.permission.INTERNET" />
|
|
8
|
+
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
9
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
10
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
|
|
11
|
+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
12
|
+
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
|
13
|
+
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
|
|
14
|
+
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
|
|
15
|
+
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
|
|
16
|
+
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
|
|
17
|
+
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
|
|
18
|
+
|
|
19
|
+
<uses-feature android:name="android.hardware.location" android:required="false" />
|
|
20
|
+
|
|
21
|
+
<application>
|
|
22
|
+
<service
|
|
23
|
+
android:name="com.marianhello.bgloc.sync.SyncService"
|
|
24
|
+
android:exported="true"
|
|
25
|
+
android:process=":sync">
|
|
26
|
+
<intent-filter>
|
|
27
|
+
<action android:name="android.content.SyncAdapter"/>
|
|
28
|
+
</intent-filter>
|
|
29
|
+
<meta-data android:name="android.content.SyncAdapter"
|
|
30
|
+
android:resource="@xml/syncadapter"/>
|
|
31
|
+
</service>
|
|
32
|
+
<service
|
|
33
|
+
android:name="com.marianhello.bgloc.sync.AuthenticatorService"
|
|
34
|
+
android:exported="false">
|
|
35
|
+
<intent-filter>
|
|
36
|
+
<action android:name="android.accounts.AccountAuthenticator"/>
|
|
37
|
+
</intent-filter>
|
|
38
|
+
<meta-data
|
|
39
|
+
android:name="android.accounts.AccountAuthenticator"
|
|
40
|
+
android:resource="@xml/authenticator" />
|
|
41
|
+
</service>
|
|
42
|
+
<provider
|
|
43
|
+
android:name="com.marianhello.bgloc.data.provider.LocationContentProvider"
|
|
44
|
+
android:authorities="${applicationId}.bgloc.provider"
|
|
45
|
+
android:exported="false"
|
|
46
|
+
android:syncable="true"/>
|
|
47
|
+
<service
|
|
48
|
+
android:name="com.marianhello.bgloc.service.LocationServiceImpl"
|
|
49
|
+
android:enabled="true"
|
|
50
|
+
android:exported="false"
|
|
51
|
+
android:foregroundServiceType="location" />
|
|
52
|
+
<receiver
|
|
53
|
+
android:name="com.marianhello.bgloc.BootCompletedReceiver"
|
|
54
|
+
android:enabled="true"
|
|
55
|
+
android:exported="true">
|
|
56
|
+
<intent-filter>
|
|
57
|
+
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
|
58
|
+
</intent-filter>
|
|
59
|
+
</receiver>
|
|
60
|
+
<service
|
|
61
|
+
android:name="com.margelo.nitro.nitrobackgroundgeolocation.HeadlessTaskService"
|
|
62
|
+
android:enabled="true"
|
|
63
|
+
android:exported="false" />
|
|
64
|
+
</application>
|
|
65
|
+
</manifest>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#include <jni.h>
|
|
2
|
+
#include "nitrobackgroundgeolocationOnLoad.hpp"
|
|
3
|
+
|
|
4
|
+
#include <fbjni/fbjni.h>
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
|
|
8
|
+
return facebook::jni::initialize(vm, []() {
|
|
9
|
+
margelo::nitro::nitrobackgroundgeolocation::registerAllNatives();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
package com.margelo.nitro.nitrobackgroundgeolocation
|
|
2
|
+
|
|
3
|
+
import com.marianhello.bgloc.Config
|
|
4
|
+
import com.marianhello.bgloc.data.BackgroundActivity
|
|
5
|
+
import com.marianhello.bgloc.data.BackgroundLocation
|
|
6
|
+
import com.marianhello.bgloc.data.HashMapLocationTemplate
|
|
7
|
+
import com.marianhello.bgloc.data.LocationTemplateFactory
|
|
8
|
+
import com.margelo.nitro.core.AnyMap
|
|
9
|
+
import java.util.HashMap
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Maps between Nitrogen-generated data classes and the Java facade types.
|
|
13
|
+
*/
|
|
14
|
+
object ConfigMapper {
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Apply a Nitrogen [ConfigureOptions] struct to a resolved Java [Config].
|
|
18
|
+
* Omitted fields are left unchanged, explicit `null` resets to defaults, and
|
|
19
|
+
* iOS-only fields are ignored on Android.
|
|
20
|
+
*/
|
|
21
|
+
val defaults = Config.getDefault()
|
|
22
|
+
fun applyNativeConfig(config: Config, options: ConfigureOptions) {
|
|
23
|
+
applyDouble(options.stationaryRadius, onValue = { config.setStationaryRadius(it.toFloat()) }, onNull = {
|
|
24
|
+
config.setStationaryRadius(defaults.stationaryRadius ?: 50f)
|
|
25
|
+
})
|
|
26
|
+
applyDouble(options.distanceFilter, onValue = { config.setDistanceFilter(it.toInt()) }, onNull = {
|
|
27
|
+
config.setDistanceFilter(defaults.distanceFilter)
|
|
28
|
+
})
|
|
29
|
+
applyLocationAccuracy(options.desiredAccuracy, onValue = { config.setDesiredAccuracy(it.value) }, onNull = {
|
|
30
|
+
config.setDesiredAccuracy(defaults.desiredAccuracy)
|
|
31
|
+
})
|
|
32
|
+
applyBoolean(options.debug, onValue = { config.setDebugging(it) }, onNull = {
|
|
33
|
+
config.setDebugging(defaults.isDebugging)
|
|
34
|
+
})
|
|
35
|
+
applyBoolean(options.stopOnTerminate, onValue = { config.setStopOnTerminate(it) }, onNull = {
|
|
36
|
+
config.setStopOnTerminate(defaults.stopOnTerminate)
|
|
37
|
+
})
|
|
38
|
+
applyBoolean(options.startOnBoot, onValue = { config.setStartOnBoot(it) }, onNull = {
|
|
39
|
+
config.setStartOnBoot(defaults.startOnBoot)
|
|
40
|
+
})
|
|
41
|
+
applyBoolean(options.startForeground, onValue = { config.setStartForeground(it) }, onNull = {
|
|
42
|
+
config.setStartForeground(defaults.startForeground)
|
|
43
|
+
})
|
|
44
|
+
applyBoolean(options.notificationsEnabled, onValue = { config.setNotificationsEnabled(it) }, onNull = {
|
|
45
|
+
config.setNotificationsEnabled(defaults.notificationsEnabled)
|
|
46
|
+
})
|
|
47
|
+
applyLocationProvider(options.locationProvider, onValue = { config.setLocationProvider(it.value) }, onNull = {
|
|
48
|
+
config.setLocationProvider(defaults.locationProvider)
|
|
49
|
+
})
|
|
50
|
+
applyDouble(options.interval, onValue = { config.setInterval(it.toInt()) }, onNull = {
|
|
51
|
+
config.setInterval(defaults.interval)
|
|
52
|
+
})
|
|
53
|
+
applyDouble(options.fastestInterval, onValue = { config.setFastestInterval(it.toInt()) }, onNull = {
|
|
54
|
+
config.setFastestInterval(defaults.fastestInterval)
|
|
55
|
+
})
|
|
56
|
+
applyDouble(options.activitiesInterval, onValue = { config.setActivitiesInterval(it.toInt()) }, onNull = {
|
|
57
|
+
config.setActivitiesInterval(defaults.activitiesInterval)
|
|
58
|
+
})
|
|
59
|
+
applyBoolean(options.stopOnStillActivity, onValue = { config.setStopOnStillActivity(it) }, onNull = {
|
|
60
|
+
config.setStopOnStillActivity(defaults.stopOnStillActivity)
|
|
61
|
+
})
|
|
62
|
+
applyString(options.notificationTitle, onValue = { config.setNotificationTitle(it) }, onNull = {
|
|
63
|
+
config.setNotificationTitle(defaults.notificationTitle)
|
|
64
|
+
})
|
|
65
|
+
applyString(options.notificationText, onValue = { config.setNotificationText(it) }, onNull = {
|
|
66
|
+
config.setNotificationText(defaults.notificationText)
|
|
67
|
+
})
|
|
68
|
+
applyString(options.notificationIconColor, onValue = { config.setNotificationIconColor(it) }, onNull = {
|
|
69
|
+
config.setNotificationIconColor(defaults.notificationIconColor)
|
|
70
|
+
})
|
|
71
|
+
applyString(options.notificationIconLarge, onValue = { config.setLargeNotificationIcon(it) }, onNull = {
|
|
72
|
+
config.setLargeNotificationIcon(defaults.largeNotificationIcon)
|
|
73
|
+
})
|
|
74
|
+
applyString(options.notificationIconSmall, onValue = { config.setSmallNotificationIcon(it) }, onNull = {
|
|
75
|
+
config.setSmallNotificationIcon(defaults.smallNotificationIcon)
|
|
76
|
+
})
|
|
77
|
+
applyString(options.url, onValue = { config.setUrl(it) }, onNull = {
|
|
78
|
+
config.setUrl(defaults.url)
|
|
79
|
+
})
|
|
80
|
+
applyString(options.syncUrl, onValue = { config.setSyncUrl(it) }, onNull = {
|
|
81
|
+
config.setSyncUrl(defaults.syncUrl)
|
|
82
|
+
})
|
|
83
|
+
applyDouble(options.syncThreshold, onValue = { config.setSyncThreshold(it.toInt()) }, onNull = {
|
|
84
|
+
config.setSyncThreshold(defaults.syncThreshold)
|
|
85
|
+
})
|
|
86
|
+
applyHeaders(options.httpHeaders, onValue = { config.setHttpHeaders(HashMap(it)) }, onNull = {
|
|
87
|
+
config.setHttpHeaders(null as HashMap<String, String>?)
|
|
88
|
+
})
|
|
89
|
+
applyDouble(options.maxLocations, onValue = { config.setMaxLocations(it.toInt()) }, onNull = {
|
|
90
|
+
config.setMaxLocations(defaults.maxLocations)
|
|
91
|
+
})
|
|
92
|
+
applyAnyMap(options.postTemplate, onValue = {
|
|
93
|
+
config.setTemplate(LocationTemplateFactory.fromHashMap(it.toHashMap()))
|
|
94
|
+
}, onNull = {
|
|
95
|
+
config.setTemplate(null)
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Convert a Java [Config] back to a Nitrogen [ConfigureOptions].
|
|
101
|
+
*/
|
|
102
|
+
fun toJsConfig(config: Config): ConfigureOptions {
|
|
103
|
+
return ConfigureOptions(
|
|
104
|
+
locationProvider = config.locationProvider?.let { Variant_NullType_LocationProvider.Second(intToLocationProvider(it)) },
|
|
105
|
+
desiredAccuracy = config.desiredAccuracy?.let { Variant_NullType_LocationAccuracy.Second(intToLocationAccuracy(it)) },
|
|
106
|
+
stationaryRadius = config.stationaryRadius?.toDouble()?.let { Variant_NullType_Double.Second(it) },
|
|
107
|
+
debug = Variant_NullType_Boolean.Second(config.isDebugging),
|
|
108
|
+
distanceFilter = config.distanceFilter?.toDouble()?.let { Variant_NullType_Double.Second(it) },
|
|
109
|
+
stopOnTerminate = config.stopOnTerminate?.let { Variant_NullType_Boolean.Second(it) },
|
|
110
|
+
startOnBoot = config.startOnBoot?.let { Variant_NullType_Boolean.Second(it) },
|
|
111
|
+
interval = config.interval?.toDouble()?.let { Variant_NullType_Double.Second(it) },
|
|
112
|
+
fastestInterval = config.fastestInterval?.toDouble()?.let { Variant_NullType_Double.Second(it) },
|
|
113
|
+
activitiesInterval = config.activitiesInterval?.toDouble()?.let { Variant_NullType_Double.Second(it) },
|
|
114
|
+
stopOnStillActivity = config.stopOnStillActivity?.let { Variant_NullType_Boolean.Second(it) },
|
|
115
|
+
notificationsEnabled = config.notificationsEnabled?.let { Variant_NullType_Boolean.Second(it) },
|
|
116
|
+
startForeground = config.startForeground?.let { Variant_NullType_Boolean.Second(it) },
|
|
117
|
+
notificationTitle = config.notificationTitle?.let { Variant_NullType_String.Second(it) },
|
|
118
|
+
notificationText = config.notificationText?.let { Variant_NullType_String.Second(it) },
|
|
119
|
+
notificationIconColor = config.notificationIconColor?.let { Variant_NullType_String.Second(it) },
|
|
120
|
+
notificationIconLarge = config.largeNotificationIcon?.let { Variant_NullType_String.Second(it) },
|
|
121
|
+
notificationIconSmall = config.smallNotificationIcon?.let { Variant_NullType_String.Second(it) },
|
|
122
|
+
activityType = null, // iOS-only
|
|
123
|
+
pauseLocationUpdates = null, // iOS-only
|
|
124
|
+
saveBatteryOnBackground = null, // iOS-only
|
|
125
|
+
url = config.url?.let { Variant_NullType_String.Second(it) },
|
|
126
|
+
syncUrl = config.syncUrl?.let { Variant_NullType_String.Second(it) },
|
|
127
|
+
syncThreshold = config.syncThreshold?.toDouble()?.let { Variant_NullType_Double.Second(it) },
|
|
128
|
+
httpHeaders = config.httpHeaders?.let { headers ->
|
|
129
|
+
@Suppress("UNCHECKED_CAST")
|
|
130
|
+
(headers as? HashMap<String, String>)?.toMap()?.let { Variant_NullType_Map_String__String_.Second(it) }
|
|
131
|
+
} ?: null,
|
|
132
|
+
maxLocations = config.maxLocations?.toDouble()?.let { Variant_NullType_Double.Second(it) },
|
|
133
|
+
postTemplate = extractPostTemplate(config)?.let { Variant_NullType_AnyMap.Second(it) }
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Convert a [BackgroundLocation] to a Nitrogen [Location] struct.
|
|
139
|
+
*/
|
|
140
|
+
fun toJsLocation(location: BackgroundLocation): Location {
|
|
141
|
+
return Location(
|
|
142
|
+
id = (location.locationId ?: 0L).toDouble(),
|
|
143
|
+
provider = location.provider ?: "",
|
|
144
|
+
locationProvider = (location.locationProvider ?: 0).toDouble(),
|
|
145
|
+
time = location.time.toDouble(),
|
|
146
|
+
latitude = location.latitude,
|
|
147
|
+
longitude = location.longitude,
|
|
148
|
+
accuracy = location.accuracy.toDouble(),
|
|
149
|
+
speed = location.speed.toDouble(),
|
|
150
|
+
altitude = location.altitude,
|
|
151
|
+
altitudeAccuracy = locationAltitudeAccuracy(location),
|
|
152
|
+
bearing = location.bearing.toDouble(),
|
|
153
|
+
isFromMockProvider = location.isFromMockProvider,
|
|
154
|
+
mockLocationsEnabled = location.areMockLocationsEnabled()
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Convert a [BackgroundLocation] to a Nitrogen [StationaryLocation] struct.
|
|
160
|
+
*/
|
|
161
|
+
fun toJsStationaryLocation(location: BackgroundLocation): StationaryLocation {
|
|
162
|
+
return StationaryLocation(
|
|
163
|
+
id = (location.locationId ?: 0L).toDouble(),
|
|
164
|
+
provider = location.provider ?: "",
|
|
165
|
+
locationProvider = (location.locationProvider ?: 0).toDouble(),
|
|
166
|
+
time = location.time.toDouble(),
|
|
167
|
+
latitude = location.latitude,
|
|
168
|
+
longitude = location.longitude,
|
|
169
|
+
accuracy = location.accuracy.toDouble(),
|
|
170
|
+
speed = location.speed.toDouble(),
|
|
171
|
+
altitude = location.altitude,
|
|
172
|
+
altitudeAccuracy = locationAltitudeAccuracy(location),
|
|
173
|
+
bearing = location.bearing.toDouble(),
|
|
174
|
+
isFromMockProvider = location.isFromMockProvider,
|
|
175
|
+
mockLocationsEnabled = location.areMockLocationsEnabled(),
|
|
176
|
+
radius = location.radius.toDouble()
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Convert a [BackgroundActivity] to a Nitrogen [Activity] struct.
|
|
182
|
+
*/
|
|
183
|
+
fun toJsActivity(activity: BackgroundActivity): Activity {
|
|
184
|
+
return Activity(
|
|
185
|
+
confidence = activity.confidence.toDouble(),
|
|
186
|
+
type = BackgroundActivity.getActivityString(activity.type)
|
|
187
|
+
)
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Convert a Java [com.marianhello.logging.LogEntry] to a Nitrogen [LogEntry] struct.
|
|
192
|
+
*/
|
|
193
|
+
fun toJsLogEntry(entry: com.marianhello.logging.LogEntry): LogEntry {
|
|
194
|
+
return LogEntry(
|
|
195
|
+
id = (entry.id ?: 0).toDouble(),
|
|
196
|
+
timestamp = (entry.timestamp ?: 0L).toDouble(),
|
|
197
|
+
level = entry.level ?: "",
|
|
198
|
+
message = entry.message ?: "",
|
|
199
|
+
stackTrace = entry.stackTrace ?: ""
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// ---- private helpers ----
|
|
204
|
+
|
|
205
|
+
private fun intToLocationAccuracy(value: Int): LocationAccuracy {
|
|
206
|
+
return when (value) {
|
|
207
|
+
0 -> LocationAccuracy.HIGH
|
|
208
|
+
100 -> LocationAccuracy.MEDIUM
|
|
209
|
+
1000 -> LocationAccuracy.LOW
|
|
210
|
+
10000 -> LocationAccuracy.PASSIVE
|
|
211
|
+
else -> LocationAccuracy.MEDIUM
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
private fun intToLocationProvider(value: Int): LocationProvider {
|
|
216
|
+
return when (value) {
|
|
217
|
+
0 -> LocationProvider.DISTANCE_FILTER
|
|
218
|
+
1 -> LocationProvider.ACTIVITY
|
|
219
|
+
2 -> LocationProvider.RAW
|
|
220
|
+
else -> LocationProvider.DISTANCE_FILTER
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@Suppress("UNCHECKED_CAST")
|
|
225
|
+
private fun extractPostTemplate(config: Config): AnyMap? {
|
|
226
|
+
if (!config.hasTemplate()) return null
|
|
227
|
+
val template = config.template
|
|
228
|
+
if (template is HashMapLocationTemplate) {
|
|
229
|
+
val map = template.toMap() as? Map<*, *> ?: return null
|
|
230
|
+
val result = mutableMapOf<String, Any?>()
|
|
231
|
+
for ((key, value) in map) {
|
|
232
|
+
if (key is String) {
|
|
233
|
+
result[key] = value
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return AnyMap.fromMap(result, false)
|
|
237
|
+
}
|
|
238
|
+
return null
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
private fun locationAltitudeAccuracy(location: BackgroundLocation): Double {
|
|
242
|
+
return if (location.hasVerticalAccuracy()) {
|
|
243
|
+
location.verticalAccuracy.toDouble()
|
|
244
|
+
} else {
|
|
245
|
+
0.0
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
private inline fun applyString(
|
|
250
|
+
option: Variant_NullType_String?,
|
|
251
|
+
onValue: (String) -> Unit,
|
|
252
|
+
onNull: () -> Unit
|
|
253
|
+
) {
|
|
254
|
+
when (option) {
|
|
255
|
+
null -> Unit
|
|
256
|
+
is Variant_NullType_String.First -> onNull()
|
|
257
|
+
is Variant_NullType_String.Second -> onValue(option.value)
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
private inline fun applyDouble(
|
|
262
|
+
option: Variant_NullType_Double?,
|
|
263
|
+
onValue: (Double) -> Unit,
|
|
264
|
+
onNull: () -> Unit
|
|
265
|
+
) {
|
|
266
|
+
when (option) {
|
|
267
|
+
null -> Unit
|
|
268
|
+
is Variant_NullType_Double.First -> onNull()
|
|
269
|
+
is Variant_NullType_Double.Second -> onValue(option.value)
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
private inline fun applyBoolean(
|
|
274
|
+
option: Variant_NullType_Boolean?,
|
|
275
|
+
onValue: (Boolean) -> Unit,
|
|
276
|
+
onNull: () -> Unit
|
|
277
|
+
) {
|
|
278
|
+
when (option) {
|
|
279
|
+
null -> Unit
|
|
280
|
+
is Variant_NullType_Boolean.First -> onNull()
|
|
281
|
+
is Variant_NullType_Boolean.Second -> onValue(option.value)
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
private inline fun applyHeaders(
|
|
286
|
+
option: Variant_NullType_Map_String__String_?,
|
|
287
|
+
onValue: (Map<String, String>) -> Unit,
|
|
288
|
+
onNull: () -> Unit
|
|
289
|
+
) {
|
|
290
|
+
when (option) {
|
|
291
|
+
null -> Unit
|
|
292
|
+
is Variant_NullType_Map_String__String_.First -> onNull()
|
|
293
|
+
is Variant_NullType_Map_String__String_.Second -> onValue(option.value)
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
private inline fun applyAnyMap(
|
|
298
|
+
option: Variant_NullType_AnyMap?,
|
|
299
|
+
onValue: (AnyMap) -> Unit,
|
|
300
|
+
onNull: () -> Unit
|
|
301
|
+
) {
|
|
302
|
+
when (option) {
|
|
303
|
+
null -> Unit
|
|
304
|
+
is Variant_NullType_AnyMap.First -> onNull()
|
|
305
|
+
is Variant_NullType_AnyMap.Second -> onValue(option.value)
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
private inline fun applyLocationProvider(
|
|
310
|
+
option: Variant_NullType_LocationProvider?,
|
|
311
|
+
onValue: (LocationProvider) -> Unit,
|
|
312
|
+
onNull: () -> Unit
|
|
313
|
+
) {
|
|
314
|
+
when (option) {
|
|
315
|
+
null -> Unit
|
|
316
|
+
is Variant_NullType_LocationProvider.First -> onNull()
|
|
317
|
+
is Variant_NullType_LocationProvider.Second -> onValue(option.value)
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
private inline fun applyLocationAccuracy(
|
|
322
|
+
option: Variant_NullType_LocationAccuracy?,
|
|
323
|
+
onValue: (LocationAccuracy) -> Unit,
|
|
324
|
+
onNull: () -> Unit
|
|
325
|
+
) {
|
|
326
|
+
when (option) {
|
|
327
|
+
null -> Unit
|
|
328
|
+
is Variant_NullType_LocationAccuracy.First -> onNull()
|
|
329
|
+
is Variant_NullType_LocationAccuracy.Second -> onValue(option.value)
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
package com.margelo.nitro.nitrobackgroundgeolocation
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
|
|
5
|
+
internal object HeadlessTaskRegistry {
|
|
6
|
+
private const val PREFS_NAME = "NitroBackgroundGeolocation"
|
|
7
|
+
private const val KEY_TASK_NAME = "headlessTaskName"
|
|
8
|
+
|
|
9
|
+
@JvmStatic
|
|
10
|
+
fun setTaskName(context: Context, taskName: String?) {
|
|
11
|
+
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
|
|
12
|
+
.edit()
|
|
13
|
+
.putString(KEY_TASK_NAME, taskName?.takeIf { it.isNotBlank() })
|
|
14
|
+
.apply()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@JvmStatic
|
|
18
|
+
fun getTaskName(context: Context): String? {
|
|
19
|
+
return context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
|
|
20
|
+
.getString(KEY_TASK_NAME, null)
|
|
21
|
+
?.takeIf { it.isNotBlank() }
|
|
22
|
+
}
|
|
23
|
+
}
|
package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
package com.margelo.nitro.nitrobackgroundgeolocation
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.content.Intent
|
|
5
|
+
import com.facebook.react.HeadlessJsTaskService
|
|
6
|
+
import com.facebook.react.bridge.Arguments
|
|
7
|
+
import com.facebook.react.jstasks.HeadlessJsTaskConfig
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A service that allows background JS execution for geolocation events
|
|
11
|
+
* when the React Activity is not in the foreground.
|
|
12
|
+
*
|
|
13
|
+
* It receives the headless task name, event name, and serialized event params
|
|
14
|
+
* via intent extras and delegates execution to React Native's HeadlessJsTaskService.
|
|
15
|
+
*/
|
|
16
|
+
class HeadlessTaskService : HeadlessJsTaskService() {
|
|
17
|
+
|
|
18
|
+
override fun getTaskConfig(intent: Intent?): HeadlessJsTaskConfig? {
|
|
19
|
+
val extras = intent?.extras ?: return null
|
|
20
|
+
|
|
21
|
+
val taskName = extras.getString(EXTRA_TASK_NAME) ?: return null
|
|
22
|
+
val eventName = extras.getString(EXTRA_EVENT_NAME) ?: ""
|
|
23
|
+
val eventParams = extras.getString(EXTRA_EVENT_PARAMS) ?: "{}"
|
|
24
|
+
|
|
25
|
+
val eventData = Arguments.createMap().apply {
|
|
26
|
+
putString("event", eventName)
|
|
27
|
+
putString("params", eventParams)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return HeadlessJsTaskConfig(
|
|
31
|
+
taskName,
|
|
32
|
+
eventData,
|
|
33
|
+
TASK_TIMEOUT_MS,
|
|
34
|
+
ALLOW_FOREGROUND
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
companion object {
|
|
39
|
+
private const val EXTRA_TASK_NAME = "taskName"
|
|
40
|
+
private const val EXTRA_EVENT_NAME = "eventName"
|
|
41
|
+
private const val EXTRA_EVENT_PARAMS = "eventParams"
|
|
42
|
+
private const val TASK_TIMEOUT_MS = 30000L
|
|
43
|
+
private const val ALLOW_FOREGROUND = true
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Creates an Intent that can be used to start the [HeadlessTaskService].
|
|
47
|
+
*
|
|
48
|
+
* @param context Android context
|
|
49
|
+
* @param taskName the name of the JS headless task to execute
|
|
50
|
+
* @param eventName the geolocation event name (e.g. "location", "stationary")
|
|
51
|
+
* @param eventParams JSON-serialized event parameters
|
|
52
|
+
*/
|
|
53
|
+
fun createIntent(
|
|
54
|
+
context: Context,
|
|
55
|
+
taskName: String,
|
|
56
|
+
eventName: String,
|
|
57
|
+
eventParams: String
|
|
58
|
+
): Intent {
|
|
59
|
+
return Intent(context, HeadlessTaskService::class.java).apply {
|
|
60
|
+
putExtra(EXTRA_TASK_NAME, taskName)
|
|
61
|
+
putExtra(EXTRA_EVENT_NAME, eventName)
|
|
62
|
+
putExtra(EXTRA_EVENT_PARAMS, eventParams)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|