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,719 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import NitroModules
|
|
3
|
+
import UIKit
|
|
4
|
+
|
|
5
|
+
final class NitroBackgroundGeolocation: HybridNitroBackgroundGeolocationSpec {
|
|
6
|
+
private final class DelegateProxy: NSObject, MAURProviderDelegate {
|
|
7
|
+
weak var owner: NitroBackgroundGeolocation?
|
|
8
|
+
|
|
9
|
+
init(owner: NitroBackgroundGeolocation) {
|
|
10
|
+
self.owner = owner
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
func onAuthorizationChanged(_ authStatus: MAURLocationAuthorizationStatus) {
|
|
14
|
+
owner?.emitAuthorization(status: authStatus)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func onLocationChanged(_ location: MAURLocation) {
|
|
18
|
+
owner?.emitLocation(location)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
func onStationaryChanged(_ location: MAURLocation) {
|
|
22
|
+
owner?.emitStationary(location)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
func onLocationPause() {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
func onLocationResume() {
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
func onActivityChanged(_ activity: MAURActivity) {
|
|
32
|
+
owner?.emitActivity(activity)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
func onAbortRequested() {
|
|
36
|
+
owner?.emitAbortRequested()
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
func onHttpAuthorization() {
|
|
40
|
+
owner?.emitHttpAuthorization()
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
func onError(_ error: Error) {
|
|
44
|
+
owner?.emitError(error as NSError)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private enum BridgeError: LocalizedError {
|
|
49
|
+
case deallocated
|
|
50
|
+
case operationFailed(String, String)
|
|
51
|
+
|
|
52
|
+
var errorDescription: String? {
|
|
53
|
+
switch self {
|
|
54
|
+
case .deallocated:
|
|
55
|
+
return "NitroBackgroundGeolocation was deallocated before the operation completed."
|
|
56
|
+
case .operationFailed(let method, let message):
|
|
57
|
+
return "NitroBackgroundGeolocation iOS \(method) failed: \(message)"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private let facade = MAURBackgroundGeolocationFacade.sharedInstance()!
|
|
63
|
+
private lazy var delegateProxy = DelegateProxy(owner: self)
|
|
64
|
+
|
|
65
|
+
private var locationCallbacks: [UUID: (Location) -> Void] = [:]
|
|
66
|
+
private var stationaryCallbacks: [UUID: (StationaryLocation) -> Void] = [:]
|
|
67
|
+
private var activityCallbacks: [UUID: (Activity) -> Void] = [:]
|
|
68
|
+
private var startCallbacks: [UUID: () -> Void] = [:]
|
|
69
|
+
private var stopCallbacks: [UUID: () -> Void] = [:]
|
|
70
|
+
private var errorCallbacks: [UUID: (BackgroundGeolocationError) -> Void] = [:]
|
|
71
|
+
private var authorizationCallbacks: [UUID: (AuthorizationStatus) -> Void] = [:]
|
|
72
|
+
private var foregroundCallbacks: [UUID: () -> Void] = [:]
|
|
73
|
+
private var backgroundCallbacks: [UUID: () -> Void] = [:]
|
|
74
|
+
private var abortRequestedCallbacks: [UUID: () -> Void] = [:]
|
|
75
|
+
private var httpAuthorizationCallbacks: [UUID: () -> Void] = [:]
|
|
76
|
+
|
|
77
|
+
override init() {
|
|
78
|
+
super.init()
|
|
79
|
+
|
|
80
|
+
facade.delegate = delegateProxy
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
deinit {
|
|
84
|
+
facade.delegate = nil
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
func configure(options: ConfigureOptions) throws -> Promise<Void> {
|
|
88
|
+
Promise.parallel { [weak self] in
|
|
89
|
+
guard let self else {
|
|
90
|
+
throw BridgeError.deallocated
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
let config = try Self.makeNativeConfig(from: options)
|
|
94
|
+
do {
|
|
95
|
+
try self.facade.configure(config)
|
|
96
|
+
} catch {
|
|
97
|
+
throw Self.makeOperationError(method: "configure", error: error as NSError)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
func start() throws -> Promise<Void> {
|
|
103
|
+
Promise.parallel { [weak self] in
|
|
104
|
+
guard let self else {
|
|
105
|
+
throw BridgeError.deallocated
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
do {
|
|
109
|
+
try self.facade.start()
|
|
110
|
+
} catch {
|
|
111
|
+
throw Self.makeOperationError(method: "start", error: error as NSError)
|
|
112
|
+
}
|
|
113
|
+
self.startCallbacks.values.forEach { $0() }
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
func stop() throws -> Promise<Void> {
|
|
118
|
+
Promise.parallel { [weak self] in
|
|
119
|
+
guard let self else {
|
|
120
|
+
throw BridgeError.deallocated
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
do {
|
|
124
|
+
try self.facade.stop()
|
|
125
|
+
} catch {
|
|
126
|
+
throw Self.makeOperationError(method: "stop", error: error as NSError)
|
|
127
|
+
}
|
|
128
|
+
self.stopCallbacks.values.forEach { $0() }
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
func getCurrentLocation(options: LocationOptions) throws -> Promise<Location> {
|
|
133
|
+
Promise.parallel { [weak self] in
|
|
134
|
+
guard let self else {
|
|
135
|
+
throw BridgeError.deallocated
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
let timeout = Int32(options.timeout ?? Double(Int32.max))
|
|
139
|
+
let maximumAge = Int(options.maximumAge ?? Double(Int.max))
|
|
140
|
+
let enableHighAccuracy = options.enableHighAccuracy ?? false
|
|
141
|
+
|
|
142
|
+
do {
|
|
143
|
+
let location = try self.facade.getCurrentLocation(
|
|
144
|
+
timeout,
|
|
145
|
+
maximumAge: maximumAge,
|
|
146
|
+
enableHighAccuracy: enableHighAccuracy
|
|
147
|
+
)
|
|
148
|
+
return Self.makeLocation(from: location)
|
|
149
|
+
} catch {
|
|
150
|
+
throw Self.makeOperationError(method: "getCurrentLocation", error: error as NSError)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
func getStationaryLocation() throws -> Promise<StationaryLocation?> {
|
|
156
|
+
Promise.parallel { [weak self] in
|
|
157
|
+
guard let self else {
|
|
158
|
+
throw BridgeError.deallocated
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
guard let location = self.facade.getStationaryLocation() else {
|
|
162
|
+
return nil
|
|
163
|
+
}
|
|
164
|
+
return Self.makeStationaryLocation(from: location)
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
func checkStatus() throws -> Promise<ServiceStatus> {
|
|
169
|
+
Promise.parallel { [weak self] in
|
|
170
|
+
guard let self else {
|
|
171
|
+
throw BridgeError.deallocated
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return ServiceStatus(
|
|
175
|
+
isRunning: self.facade.isStarted(),
|
|
176
|
+
locationServicesEnabled: self.facade.locationServicesEnabled(),
|
|
177
|
+
authorization: Self.makeAuthorizationStatus(from: self.facade.authorizationStatus())
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
func getConfig() throws -> Promise<ConfigureOptions> {
|
|
183
|
+
Promise.parallel { [weak self] in
|
|
184
|
+
guard let self else {
|
|
185
|
+
throw BridgeError.deallocated
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return try Self.makeConfigureOptions(from: self.facade.getConfig())
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
func showAppSettings() throws {
|
|
193
|
+
facade.showAppSettings()
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
func showLocationSettings() throws {
|
|
197
|
+
facade.showLocationSettings()
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
func getLocations() throws -> Promise<[Location]> {
|
|
201
|
+
Promise.parallel { [weak self] in
|
|
202
|
+
guard let self else {
|
|
203
|
+
throw BridgeError.deallocated
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return self.facade.getLocations().map(Self.makeLocation)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
func getValidLocations() throws -> Promise<[Location]> {
|
|
211
|
+
Promise.parallel { [weak self] in
|
|
212
|
+
guard let self else {
|
|
213
|
+
throw BridgeError.deallocated
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return self.facade.getValidLocations().map(Self.makeLocation)
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
func getValidLocationsAndDelete() throws -> Promise<[Location]> {
|
|
221
|
+
Promise.parallel { [weak self] in
|
|
222
|
+
guard let self else {
|
|
223
|
+
throw BridgeError.deallocated
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
return self.facade.getValidLocationsAndDelete().map(Self.makeLocation)
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
func deleteLocation(locationId: Double) throws -> Promise<Void> {
|
|
231
|
+
Promise.parallel { [weak self] in
|
|
232
|
+
guard let self else {
|
|
233
|
+
throw BridgeError.deallocated
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
do {
|
|
237
|
+
try self.facade.deleteLocation(NSNumber(value: Int64(locationId)))
|
|
238
|
+
} catch {
|
|
239
|
+
throw Self.makeOperationError(method: "deleteLocation", error: error as NSError)
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
func deleteAllLocations() throws -> Promise<Void> {
|
|
245
|
+
Promise.parallel { [weak self] in
|
|
246
|
+
guard let self else {
|
|
247
|
+
throw BridgeError.deallocated
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
do {
|
|
251
|
+
try self.facade.deleteAllLocations()
|
|
252
|
+
} catch {
|
|
253
|
+
throw Self.makeOperationError(method: "deleteAllLocations", error: error as NSError)
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
func forceSync() throws -> Promise<Void> {
|
|
259
|
+
Promise.parallel { [weak self] in
|
|
260
|
+
guard let self else {
|
|
261
|
+
throw BridgeError.deallocated
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
self.facade.forceSync()
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
func getLogEntries(limit: Double, fromId: Double, minLevel: NativeLogLevel) throws -> Promise<[LogEntry]> {
|
|
269
|
+
Promise.parallel { [weak self] in
|
|
270
|
+
guard let self else {
|
|
271
|
+
throw BridgeError.deallocated
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
let entries = self.facade.getLogEntries(
|
|
275
|
+
Int(limit),
|
|
276
|
+
fromLogEntryId: Int(fromId),
|
|
277
|
+
minLogLevelFrom: Self.makeNativeLogLevelName(minLevel)
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
return Self.makeLogEntries(from: entries ?? [])
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
func onLocation(callback: @escaping (Location) -> Void) throws -> () -> Void {
|
|
285
|
+
registerCallback(callback, storage: \ .locationCallbacks)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
func onStationary(callback: @escaping (StationaryLocation) -> Void) throws -> () -> Void {
|
|
289
|
+
registerCallback(callback, storage: \ .stationaryCallbacks)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
func onActivity(callback: @escaping (Activity) -> Void) throws -> () -> Void {
|
|
293
|
+
registerCallback(callback, storage: \ .activityCallbacks)
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
func onStart(callback: @escaping () -> Void) throws -> () -> Void {
|
|
297
|
+
registerCallback(callback, storage: \ .startCallbacks)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
func onStop(callback: @escaping () -> Void) throws -> () -> Void {
|
|
301
|
+
registerCallback(callback, storage: \ .stopCallbacks)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
func onError(callback: @escaping (BackgroundGeolocationError) -> Void) throws -> () -> Void {
|
|
305
|
+
registerCallback(callback, storage: \ .errorCallbacks)
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
func onAuthorization(callback: @escaping (AuthorizationStatus) -> Void) throws -> () -> Void {
|
|
309
|
+
registerCallback(callback, storage: \ .authorizationCallbacks)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
func onForeground(callback: @escaping () -> Void) throws -> () -> Void {
|
|
313
|
+
registerCallback(callback, storage: \ .foregroundCallbacks)
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
func onBackground(callback: @escaping () -> Void) throws -> () -> Void {
|
|
317
|
+
registerCallback(callback, storage: \ .backgroundCallbacks)
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
func onAbortRequested(callback: @escaping () -> Void) throws -> () -> Void {
|
|
321
|
+
registerCallback(callback, storage: \ .abortRequestedCallbacks)
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
func onHttpAuthorization(callback: @escaping () -> Void) throws -> () -> Void {
|
|
325
|
+
registerCallback(callback, storage: \ .httpAuthorizationCallbacks)
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
func removeAllListeners() throws {
|
|
329
|
+
locationCallbacks.removeAll()
|
|
330
|
+
stationaryCallbacks.removeAll()
|
|
331
|
+
activityCallbacks.removeAll()
|
|
332
|
+
startCallbacks.removeAll()
|
|
333
|
+
stopCallbacks.removeAll()
|
|
334
|
+
errorCallbacks.removeAll()
|
|
335
|
+
authorizationCallbacks.removeAll()
|
|
336
|
+
foregroundCallbacks.removeAll()
|
|
337
|
+
backgroundCallbacks.removeAll()
|
|
338
|
+
abortRequestedCallbacks.removeAll()
|
|
339
|
+
httpAuthorizationCallbacks.removeAll()
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
private func registerCallback<T>(_ callback: T, storage: ReferenceWritableKeyPath<NitroBackgroundGeolocation, [UUID: T]>) -> () -> Void {
|
|
343
|
+
let id = UUID()
|
|
344
|
+
self[keyPath: storage][id] = callback
|
|
345
|
+
return { [weak self] in
|
|
346
|
+
self?[keyPath: storage].removeValue(forKey: id)
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
private func emitLocation(_ location: MAURLocation) {
|
|
351
|
+
let jsLocation = Self.makeLocation(from: location)
|
|
352
|
+
locationCallbacks.values.forEach { $0(jsLocation) }
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
private func emitStationary(_ location: MAURLocation) {
|
|
356
|
+
let jsLocation = Self.makeStationaryLocation(from: location)
|
|
357
|
+
stationaryCallbacks.values.forEach { $0(jsLocation) }
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
private func emitActivity(_ activity: MAURActivity) {
|
|
361
|
+
let jsActivity = Activity(
|
|
362
|
+
confidence: activity.confidence?.doubleValue ?? 0,
|
|
363
|
+
type: activity.type ?? ""
|
|
364
|
+
)
|
|
365
|
+
activityCallbacks.values.forEach { $0(jsActivity) }
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
private func emitAuthorization(status: MAURLocationAuthorizationStatus) {
|
|
369
|
+
let jsStatus = Self.makeAuthorizationStatus(from: status)
|
|
370
|
+
authorizationCallbacks.values.forEach { $0(jsStatus) }
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
private func emitAbortRequested() {
|
|
374
|
+
abortRequestedCallbacks.values.forEach { $0() }
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
private func emitHttpAuthorization() {
|
|
378
|
+
httpAuthorizationCallbacks.values.forEach { $0() }
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
private func emitError(_ error: NSError) {
|
|
382
|
+
let jsError = BackgroundGeolocationError(
|
|
383
|
+
code: Double(error.code),
|
|
384
|
+
message: error.localizedDescription
|
|
385
|
+
)
|
|
386
|
+
errorCallbacks.values.forEach { $0(jsError) }
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
private static func makeOperationError(method: String, error: NSError?) -> Error {
|
|
390
|
+
if let error {
|
|
391
|
+
return error
|
|
392
|
+
}
|
|
393
|
+
return BridgeError.operationFailed(method, "Unknown native failure")
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
private static func makeLocation(from location: MAURLocation) -> Location {
|
|
397
|
+
Location(
|
|
398
|
+
id: location.locationId?.doubleValue ?? 0,
|
|
399
|
+
provider: location.provider ?? "",
|
|
400
|
+
locationProvider: location.locationProvider?.doubleValue ?? 0,
|
|
401
|
+
time: location.time.map { $0.timeIntervalSince1970 * 1000 } ?? 0,
|
|
402
|
+
latitude: location.latitude?.doubleValue ?? 0,
|
|
403
|
+
longitude: location.longitude?.doubleValue ?? 0,
|
|
404
|
+
accuracy: location.accuracy?.doubleValue ?? 0,
|
|
405
|
+
speed: location.speed?.doubleValue ?? 0,
|
|
406
|
+
altitude: location.altitude?.doubleValue ?? 0,
|
|
407
|
+
altitudeAccuracy: location.altitudeAccuracy?.doubleValue ?? 0,
|
|
408
|
+
bearing: location.heading?.doubleValue ?? 0,
|
|
409
|
+
isFromMockProvider: false,
|
|
410
|
+
mockLocationsEnabled: false
|
|
411
|
+
)
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
private static func makeStationaryLocation(from location: MAURLocation) -> StationaryLocation {
|
|
415
|
+
StationaryLocation(
|
|
416
|
+
id: location.locationId?.doubleValue ?? 0,
|
|
417
|
+
provider: location.provider ?? "",
|
|
418
|
+
locationProvider: location.locationProvider?.doubleValue ?? 0,
|
|
419
|
+
time: location.time.map { $0.timeIntervalSince1970 * 1000 } ?? 0,
|
|
420
|
+
latitude: location.latitude?.doubleValue ?? 0,
|
|
421
|
+
longitude: location.longitude?.doubleValue ?? 0,
|
|
422
|
+
accuracy: location.accuracy?.doubleValue ?? 0,
|
|
423
|
+
speed: location.speed?.doubleValue ?? 0,
|
|
424
|
+
altitude: location.altitude?.doubleValue ?? 0,
|
|
425
|
+
altitudeAccuracy: location.altitudeAccuracy?.doubleValue ?? 0,
|
|
426
|
+
bearing: location.heading?.doubleValue ?? 0,
|
|
427
|
+
isFromMockProvider: false,
|
|
428
|
+
mockLocationsEnabled: false,
|
|
429
|
+
radius: location.radius?.doubleValue ?? 0
|
|
430
|
+
)
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
private static func makeAuthorizationStatus(from status: MAURLocationAuthorizationStatus) -> AuthorizationStatus {
|
|
434
|
+
switch status {
|
|
435
|
+
case .always, .allowed:
|
|
436
|
+
return .authorized
|
|
437
|
+
case .foreground:
|
|
438
|
+
return .authorizedForeground
|
|
439
|
+
default:
|
|
440
|
+
return .notAuthorized
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
private static func makeNativeConfig(from options: ConfigureOptions) throws -> MAURConfig {
|
|
445
|
+
let dictionary = NSMutableDictionary()
|
|
446
|
+
|
|
447
|
+
applyLocationProvider(options.locationProvider, key: "locationProvider", into: dictionary)
|
|
448
|
+
applyLocationAccuracy(options.desiredAccuracy, key: "desiredAccuracy", into: dictionary)
|
|
449
|
+
applyDouble(options.stationaryRadius, key: "stationaryRadius", into: dictionary)
|
|
450
|
+
applyBool(options.debug, key: "debug", into: dictionary)
|
|
451
|
+
applyDouble(options.distanceFilter, key: "distanceFilter", into: dictionary)
|
|
452
|
+
applyBool(options.stopOnTerminate, key: "stopOnTerminate", into: dictionary)
|
|
453
|
+
applyString(options.activityType, key: "activityType", into: dictionary)
|
|
454
|
+
applyDouble(options.activitiesInterval, key: "activitiesInterval", into: dictionary)
|
|
455
|
+
applyBool(options.pauseLocationUpdates, key: "pauseLocationUpdates", into: dictionary)
|
|
456
|
+
applyBool(options.saveBatteryOnBackground, key: "saveBatteryOnBackground", into: dictionary)
|
|
457
|
+
applyString(options.url, key: "url", into: dictionary)
|
|
458
|
+
applyString(options.syncUrl, key: "syncUrl", into: dictionary)
|
|
459
|
+
applyDouble(options.syncThreshold, key: "syncThreshold", into: dictionary)
|
|
460
|
+
applyHeaders(options.httpHeaders, key: "httpHeaders", into: dictionary)
|
|
461
|
+
applyDouble(options.maxLocations, key: "maxLocations", into: dictionary)
|
|
462
|
+
try applyAnyMap(options.postTemplate, key: "postTemplate", into: dictionary)
|
|
463
|
+
|
|
464
|
+
return MAURConfig.fromDictionary(dictionary as? [AnyHashable: Any] ?? [:])
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
private static func makeConfigureOptions(from config: MAURConfig) throws -> ConfigureOptions {
|
|
468
|
+
let dictionary = config.toDictionary() as? [String: Any] ?? [:]
|
|
469
|
+
return ConfigureOptions(
|
|
470
|
+
locationProvider: locationProviderVariant(dictionary["locationProvider"]),
|
|
471
|
+
desiredAccuracy: locationAccuracyVariant(dictionary["desiredAccuracy"]),
|
|
472
|
+
stationaryRadius: doubleVariant(dictionary["stationaryRadius"]),
|
|
473
|
+
debug: boolVariant(dictionary["debug"]),
|
|
474
|
+
distanceFilter: doubleVariant(dictionary["distanceFilter"]),
|
|
475
|
+
stopOnTerminate: boolVariant(dictionary["stopOnTerminate"]),
|
|
476
|
+
startOnBoot: nil,
|
|
477
|
+
interval: nil,
|
|
478
|
+
fastestInterval: nil,
|
|
479
|
+
activitiesInterval: doubleVariant(dictionary["activitiesInterval"]),
|
|
480
|
+
stopOnStillActivity: nil,
|
|
481
|
+
notificationsEnabled: nil,
|
|
482
|
+
startForeground: nil,
|
|
483
|
+
notificationTitle: nil,
|
|
484
|
+
notificationText: nil,
|
|
485
|
+
notificationIconColor: nil,
|
|
486
|
+
notificationIconLarge: nil,
|
|
487
|
+
notificationIconSmall: nil,
|
|
488
|
+
activityType: stringVariant(dictionary["activityType"]),
|
|
489
|
+
pauseLocationUpdates: boolVariant(dictionary["pauseLocationUpdates"]),
|
|
490
|
+
saveBatteryOnBackground: boolVariant(dictionary["saveBatteryOnBackground"]),
|
|
491
|
+
url: stringVariant(dictionary["url"]),
|
|
492
|
+
syncUrl: stringVariant(dictionary["syncUrl"]),
|
|
493
|
+
syncThreshold: doubleVariant(dictionary["syncThreshold"]),
|
|
494
|
+
httpHeaders: headersVariant(dictionary["httpHeaders"]),
|
|
495
|
+
maxLocations: doubleVariant(dictionary["maxLocations"]),
|
|
496
|
+
postTemplate: try anyMapVariant(dictionary["postTemplate"])
|
|
497
|
+
)
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
private static func makeNativeLogLevelName(_ level: NativeLogLevel) -> String {
|
|
501
|
+
switch level {
|
|
502
|
+
case .tracevalue:
|
|
503
|
+
return "TRACE"
|
|
504
|
+
case .debugvalue:
|
|
505
|
+
return "DEBUG"
|
|
506
|
+
case .infovalue:
|
|
507
|
+
return "INFO"
|
|
508
|
+
case .warnvalue:
|
|
509
|
+
return "WARN"
|
|
510
|
+
case .errorvalue:
|
|
511
|
+
return "ERROR"
|
|
512
|
+
@unknown default:
|
|
513
|
+
return "DEBUG"
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
private static func makeLogEntries(from entries: [Any]) -> [LogEntry] {
|
|
518
|
+
entries.compactMap { entry in
|
|
519
|
+
guard let dictionary = entry as? [String: Any] else {
|
|
520
|
+
return nil
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
return LogEntry(
|
|
524
|
+
id: (dictionary["id"] as? NSNumber)?.doubleValue ?? 0,
|
|
525
|
+
timestamp: (dictionary["timestamp"] as? NSNumber)?.doubleValue ?? 0,
|
|
526
|
+
level: (dictionary["level"] as? String) ?? "",
|
|
527
|
+
message: (dictionary["message"] as? String) ?? "",
|
|
528
|
+
stackTrace: (dictionary["stackTrace"] as? String) ?? ""
|
|
529
|
+
)
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
private static func applyString(_ value: Variant_NullType_String?, key: String, into dictionary: NSMutableDictionary) {
|
|
534
|
+
guard let value else { return }
|
|
535
|
+
switch value {
|
|
536
|
+
case .first:
|
|
537
|
+
dictionary[key] = NSNull()
|
|
538
|
+
case .second(let string):
|
|
539
|
+
dictionary[key] = string
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
private static func applyBool(_ value: Variant_NullType_Bool?, key: String, into dictionary: NSMutableDictionary) {
|
|
544
|
+
guard let value else { return }
|
|
545
|
+
switch value {
|
|
546
|
+
case .first:
|
|
547
|
+
dictionary[key] = NSNull()
|
|
548
|
+
case .second(let bool):
|
|
549
|
+
dictionary[key] = bool
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
private static func applyDouble(_ value: Variant_NullType_Double?, key: String, into dictionary: NSMutableDictionary) {
|
|
554
|
+
guard let value else { return }
|
|
555
|
+
switch value {
|
|
556
|
+
case .first:
|
|
557
|
+
dictionary[key] = NSNull()
|
|
558
|
+
case .second(let number):
|
|
559
|
+
dictionary[key] = number
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
private static func applyHeaders(_ value: Variant_NullType_Dictionary_String__String_?, key: String, into dictionary: NSMutableDictionary) {
|
|
564
|
+
guard let value else { return }
|
|
565
|
+
switch value {
|
|
566
|
+
case .first:
|
|
567
|
+
dictionary[key] = NSNull()
|
|
568
|
+
case .second(let headers):
|
|
569
|
+
dictionary[key] = headers
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
private static func applyAnyMap(_ value: Variant_NullType_AnyMap?, key: String, into dictionary: NSMutableDictionary) throws {
|
|
574
|
+
guard let value else { return }
|
|
575
|
+
switch value {
|
|
576
|
+
case .first:
|
|
577
|
+
dictionary[key] = NSNull()
|
|
578
|
+
case .second(let anyMap):
|
|
579
|
+
dictionary[key] = anyMapToDictionary(anyMap)
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
private static func applyLocationProvider(_ value: Variant_NullType_LocationProvider?, key: String, into dictionary: NSMutableDictionary) {
|
|
584
|
+
guard let value else { return }
|
|
585
|
+
switch value {
|
|
586
|
+
case .first:
|
|
587
|
+
dictionary[key] = NSNull()
|
|
588
|
+
case .second(let provider):
|
|
589
|
+
dictionary[key] = nativeLocationProvider(provider)
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
private static func applyLocationAccuracy(_ value: Variant_NullType_LocationAccuracy?, key: String, into dictionary: NSMutableDictionary) {
|
|
594
|
+
guard let value else { return }
|
|
595
|
+
switch value {
|
|
596
|
+
case .first:
|
|
597
|
+
dictionary[key] = NSNull()
|
|
598
|
+
case .second(let accuracy):
|
|
599
|
+
dictionary[key] = nativeLocationAccuracy(accuracy)
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
private static func nativeLocationProvider(_ provider: LocationProvider) -> NSNumber {
|
|
604
|
+
switch provider {
|
|
605
|
+
case .distanceFilter:
|
|
606
|
+
return 0
|
|
607
|
+
case .activity:
|
|
608
|
+
return 1
|
|
609
|
+
case .raw:
|
|
610
|
+
return 2
|
|
611
|
+
@unknown default:
|
|
612
|
+
return 0
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
private static func nativeLocationAccuracy(_ accuracy: LocationAccuracy) -> NSNumber {
|
|
617
|
+
switch accuracy {
|
|
618
|
+
case .high:
|
|
619
|
+
return 0
|
|
620
|
+
case .medium:
|
|
621
|
+
return 100
|
|
622
|
+
case .low:
|
|
623
|
+
return 1000
|
|
624
|
+
case .passive:
|
|
625
|
+
return 10000
|
|
626
|
+
@unknown default:
|
|
627
|
+
return 100
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
private static func stringVariant(_ value: Any?) -> Variant_NullType_String? {
|
|
632
|
+
guard let value else { return nil }
|
|
633
|
+
if value is NSNull {
|
|
634
|
+
return .first(.null)
|
|
635
|
+
}
|
|
636
|
+
return .second((value as? String) ?? "")
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
private static func boolVariant(_ value: Any?) -> Variant_NullType_Bool? {
|
|
640
|
+
guard let value else { return nil }
|
|
641
|
+
if value is NSNull {
|
|
642
|
+
return .first(.null)
|
|
643
|
+
}
|
|
644
|
+
return .second((value as? NSNumber)?.boolValue ?? false)
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
private static func doubleVariant(_ value: Any?) -> Variant_NullType_Double? {
|
|
648
|
+
guard let value else { return nil }
|
|
649
|
+
if value is NSNull {
|
|
650
|
+
return .first(.null)
|
|
651
|
+
}
|
|
652
|
+
return .second((value as? NSNumber)?.doubleValue ?? 0)
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
private static func headersVariant(_ value: Any?) -> Variant_NullType_Dictionary_String__String_? {
|
|
656
|
+
guard let value else { return nil }
|
|
657
|
+
if value is NSNull {
|
|
658
|
+
return .first(.null)
|
|
659
|
+
}
|
|
660
|
+
return .second((value as? [String: String]) ?? [:])
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
private static func locationProviderVariant(_ value: Any?) -> Variant_NullType_LocationProvider? {
|
|
664
|
+
guard let value else { return nil }
|
|
665
|
+
if value is NSNull {
|
|
666
|
+
return .first(.null)
|
|
667
|
+
}
|
|
668
|
+
let rawValue = (value as? NSNumber)?.intValue ?? 0
|
|
669
|
+
let provider: LocationProvider
|
|
670
|
+
switch rawValue {
|
|
671
|
+
case 1:
|
|
672
|
+
provider = .activity
|
|
673
|
+
case 2:
|
|
674
|
+
provider = .raw
|
|
675
|
+
default:
|
|
676
|
+
provider = .distanceFilter
|
|
677
|
+
}
|
|
678
|
+
return .second(provider)
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
private static func locationAccuracyVariant(_ value: Any?) -> Variant_NullType_LocationAccuracy? {
|
|
682
|
+
guard let value else { return nil }
|
|
683
|
+
if value is NSNull {
|
|
684
|
+
return .first(.null)
|
|
685
|
+
}
|
|
686
|
+
let rawValue = (value as? NSNumber)?.intValue ?? 100
|
|
687
|
+
let accuracy: LocationAccuracy
|
|
688
|
+
switch rawValue {
|
|
689
|
+
case 0:
|
|
690
|
+
accuracy = .high
|
|
691
|
+
case 1000:
|
|
692
|
+
accuracy = .low
|
|
693
|
+
case 10000:
|
|
694
|
+
accuracy = .passive
|
|
695
|
+
default:
|
|
696
|
+
accuracy = .medium
|
|
697
|
+
}
|
|
698
|
+
return .second(accuracy)
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
private static func anyMapVariant(_ value: Any?) throws -> Variant_NullType_AnyMap? {
|
|
702
|
+
guard let value else { return nil }
|
|
703
|
+
if value is NSNull {
|
|
704
|
+
return .first(.null)
|
|
705
|
+
}
|
|
706
|
+
guard let dictionary = value as? [String: Any] else {
|
|
707
|
+
return nil
|
|
708
|
+
}
|
|
709
|
+
return .second(try AnyMap.fromDictionary(dictionary))
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
private static func anyMapToDictionary(_ anyMap: AnyMap) -> [String: Any] {
|
|
713
|
+
var dictionary: [String: Any] = [:]
|
|
714
|
+
for key in anyMap.getAllKeys() {
|
|
715
|
+
dictionary[key] = anyMap.getAny(key: key)
|
|
716
|
+
}
|
|
717
|
+
return dictionary
|
|
718
|
+
}
|
|
719
|
+
}
|