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.
Files changed (306) hide show
  1. package/NitroBackgroundGeolocation.podspec +29 -0
  2. package/android/CMakeLists.txt +24 -0
  3. package/android/build.gradle +133 -0
  4. package/android/src/main/AndroidManifest.xml +65 -0
  5. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  6. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ConfigMapper.kt +332 -0
  7. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt +23 -0
  8. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt +66 -0
  9. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocation.kt +538 -0
  10. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocationPackage.kt +22 -0
  11. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ReactNativeHeadlessTaskRunner.kt +62 -0
  12. package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +542 -0
  13. package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
  14. package/android/src/main/java/com/marianhello/bgloc/Config.java +652 -0
  15. package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
  16. package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +168 -0
  17. package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
  18. package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
  19. package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
  20. package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +186 -0
  21. package/android/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
  22. package/android/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
  23. package/android/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
  24. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
  25. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
  26. package/android/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
  27. package/android/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
  28. package/android/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
  29. package/android/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
  30. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
  31. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
  32. package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
  33. package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
  34. package/android/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
  35. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
  36. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
  37. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
  38. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
  39. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
  40. package/android/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
  41. package/android/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
  42. package/android/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
  43. package/android/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +61 -0
  44. package/android/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
  45. package/android/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
  46. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
  47. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
  48. package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
  49. package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +280 -0
  50. package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +586 -0
  51. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
  52. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
  53. package/android/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
  54. package/android/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +142 -0
  55. package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +17 -0
  56. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +760 -0
  57. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
  58. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
  59. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
  60. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +140 -0
  61. package/android/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
  62. package/android/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
  63. package/android/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
  64. package/android/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +246 -0
  65. package/android/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
  66. package/android/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +233 -0
  67. package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
  68. package/android/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
  69. package/android/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
  70. package/android/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
  71. package/android/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
  72. package/android/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
  73. package/android/src/main/java/com/marianhello/utils/Convert.java +56 -0
  74. package/android/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
  75. package/android/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
  76. package/android/src/main/java/org/apache/commons/io/Charsets.java +153 -0
  77. package/android/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
  78. package/android/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
  79. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
  80. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
  81. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
  82. package/android/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
  83. package/android/src/main/res/values/strings.xml +6 -0
  84. package/android/src/main/res/xml/authenticator.xml +7 -0
  85. package/android/src/main/res/xml/syncadapter.xml +9 -0
  86. package/app.plugin.js +64 -0
  87. package/ios/NitroBackgroundGeolocation.swift +719 -0
  88. package/ios/NitroBackgroundGeolocationBootstrap.m +98 -0
  89. package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
  90. package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
  91. package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
  92. package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
  93. package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
  94. package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
  95. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
  96. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
  97. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
  98. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
  99. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
  100. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
  101. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
  102. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
  103. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
  104. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
  105. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
  106. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
  107. package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
  108. package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
  109. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
  110. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
  111. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +62 -0
  112. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +650 -0
  113. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
  114. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +184 -0
  115. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
  116. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
  117. package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
  118. package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
  119. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
  120. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
  121. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
  122. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +523 -0
  123. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
  124. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
  125. package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
  126. package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
  127. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
  128. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
  129. package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
  130. package/ios/common/BackgroundGeolocation/MAURLocationManager.m +308 -0
  131. package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
  132. package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
  133. package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
  134. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
  135. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +218 -0
  136. package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
  137. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
  138. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
  139. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
  140. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
  141. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
  142. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
  143. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
  144. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
  145. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
  146. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
  147. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
  148. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
  149. package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
  150. package/ios/common/BackgroundGeolocation/Reachability.m +474 -0
  151. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
  152. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
  153. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
  154. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
  155. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
  156. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
  157. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
  158. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
  159. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
  160. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
  161. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
  162. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
  163. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
  164. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
  165. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
  166. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
  167. package/lib/module/NitroBackgroundGeolocation.nitro.js +172 -0
  168. package/lib/module/NitroBackgroundGeolocation.nitro.js.map +1 -0
  169. package/lib/module/headless.js +72 -0
  170. package/lib/module/headless.js.map +1 -0
  171. package/lib/module/index.js +60 -0
  172. package/lib/module/index.js.map +1 -0
  173. package/lib/module/package.json +1 -0
  174. package/lib/typescript/package.json +1 -0
  175. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts +616 -0
  176. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts.map +1 -0
  177. package/lib/typescript/src/headless.d.ts +40 -0
  178. package/lib/typescript/src/headless.d.ts.map +1 -0
  179. package/lib/typescript/src/index.d.ts +8 -0
  180. package/lib/typescript/src/index.d.ts.map +1 -0
  181. package/nitro.json +23 -0
  182. package/nitrogen/generated/android/c++/JActivity.hpp +61 -0
  183. package/nitrogen/generated/android/c++/JAuthorizationStatus.hpp +61 -0
  184. package/nitrogen/generated/android/c++/JBackgroundGeolocationError.hpp +61 -0
  185. package/nitrogen/generated/android/c++/JConfigureOptions.hpp +179 -0
  186. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  187. package/nitrogen/generated/android/c++/JFunc_void_Activity.hpp +78 -0
  188. package/nitrogen/generated/android/c++/JFunc_void_AuthorizationStatus.hpp +77 -0
  189. package/nitrogen/generated/android/c++/JFunc_void_BackgroundGeolocationError.hpp +78 -0
  190. package/nitrogen/generated/android/c++/JFunc_void_Location.hpp +78 -0
  191. package/nitrogen/generated/android/c++/JFunc_void_StationaryLocation.hpp +78 -0
  192. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.cpp +530 -0
  193. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.hpp +90 -0
  194. package/nitrogen/generated/android/c++/JLocation.hpp +105 -0
  195. package/nitrogen/generated/android/c++/JLocationAccuracy.hpp +64 -0
  196. package/nitrogen/generated/android/c++/JLocationOptions.hpp +65 -0
  197. package/nitrogen/generated/android/c++/JLocationProvider.hpp +61 -0
  198. package/nitrogen/generated/android/c++/JLogEntry.hpp +73 -0
  199. package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +67 -0
  200. package/nitrogen/generated/android/c++/JServiceStatus.hpp +66 -0
  201. package/nitrogen/generated/android/c++/JStationaryLocation.hpp +109 -0
  202. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.cpp +26 -0
  203. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.hpp +71 -0
  204. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.cpp +26 -0
  205. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.hpp +69 -0
  206. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  207. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  208. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.cpp +26 -0
  209. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.hpp +71 -0
  210. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.cpp +26 -0
  211. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.hpp +71 -0
  212. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.cpp +33 -0
  213. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.hpp +77 -0
  214. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  215. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  216. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Activity.kt +56 -0
  217. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/AuthorizationStatus.kt +24 -0
  218. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/BackgroundGeolocationError.kt +56 -0
  219. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ConfigureOptions.kt +182 -0
  220. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void.kt +80 -0
  221. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Activity.kt +80 -0
  222. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_AuthorizationStatus.kt +80 -0
  223. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_BackgroundGeolocationError.kt +80 -0
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Location.kt +80 -0
  225. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_StationaryLocation.kt +80 -0
  226. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/HybridNitroBackgroundGeolocationSpec.kt +218 -0
  227. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Location.kt +111 -0
  228. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationAccuracy.kt +25 -0
  229. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationOptions.kt +61 -0
  230. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationProvider.kt +24 -0
  231. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LogEntry.kt +71 -0
  232. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/NativeLogLevel.kt +26 -0
  233. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ServiceStatus.kt +61 -0
  234. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/StationaryLocation.kt +116 -0
  235. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_AnyMap.kt +63 -0
  236. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Boolean.kt +62 -0
  237. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Double.kt +62 -0
  238. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationAccuracy.kt +62 -0
  239. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationProvider.kt +62 -0
  240. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Map_String__String_.kt +62 -0
  241. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_String.kt +62 -0
  242. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/nitrobackgroundgeolocationOnLoad.kt +35 -0
  243. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake +88 -0
  244. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle +27 -0
  245. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.cpp +66 -0
  246. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.hpp +34 -0
  247. package/nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb +62 -0
  248. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.cpp +129 -0
  249. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.hpp +911 -0
  250. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Umbrella.hpp +88 -0
  251. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.mm +33 -0
  252. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.swift +26 -0
  253. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.cpp +11 -0
  254. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.hpp +335 -0
  255. package/nitrogen/generated/ios/swift/Activity.swift +34 -0
  256. package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
  257. package/nitrogen/generated/ios/swift/BackgroundGeolocationError.swift +34 -0
  258. package/nitrogen/generated/ios/swift/ConfigureOptions.swift +1037 -0
  259. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  260. package/nitrogen/generated/ios/swift/Func_void_Activity.swift +46 -0
  261. package/nitrogen/generated/ios/swift/Func_void_AuthorizationStatus.swift +46 -0
  262. package/nitrogen/generated/ios/swift/Func_void_BackgroundGeolocationError.swift +46 -0
  263. package/nitrogen/generated/ios/swift/Func_void_ConfigureOptions.swift +46 -0
  264. package/nitrogen/generated/ios/swift/Func_void_Location.swift +46 -0
  265. package/nitrogen/generated/ios/swift/Func_void_ServiceStatus.swift +46 -0
  266. package/nitrogen/generated/ios/swift/Func_void_StationaryLocation.swift +46 -0
  267. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  268. package/nitrogen/generated/ios/swift/Func_void_std__optional_StationaryLocation_.swift +46 -0
  269. package/nitrogen/generated/ios/swift/Func_void_std__vector_Location_.swift +46 -0
  270. package/nitrogen/generated/ios/swift/Func_void_std__vector_LogEntry_.swift +46 -0
  271. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec.swift +82 -0
  272. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec_cxx.swift +675 -0
  273. package/nitrogen/generated/ios/swift/Location.swift +89 -0
  274. package/nitrogen/generated/ios/swift/LocationAccuracy.swift +48 -0
  275. package/nitrogen/generated/ios/swift/LocationOptions.swift +78 -0
  276. package/nitrogen/generated/ios/swift/LocationProvider.swift +44 -0
  277. package/nitrogen/generated/ios/swift/LogEntry.swift +49 -0
  278. package/nitrogen/generated/ios/swift/NativeLogLevel.swift +52 -0
  279. package/nitrogen/generated/ios/swift/ServiceStatus.swift +39 -0
  280. package/nitrogen/generated/ios/swift/StationaryLocation.swift +94 -0
  281. package/nitrogen/generated/ios/swift/Variant_NullType_AnyMap.swift +30 -0
  282. package/nitrogen/generated/ios/swift/Variant_NullType_Bool.swift +30 -0
  283. package/nitrogen/generated/ios/swift/Variant_NullType_Dictionary_String__String_.swift +30 -0
  284. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
  285. package/nitrogen/generated/ios/swift/Variant_NullType_LocationAccuracy.swift +30 -0
  286. package/nitrogen/generated/ios/swift/Variant_NullType_LocationProvider.swift +30 -0
  287. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
  288. package/nitrogen/generated/shared/c++/Activity.hpp +87 -0
  289. package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +63 -0
  290. package/nitrogen/generated/shared/c++/BackgroundGeolocationError.hpp +87 -0
  291. package/nitrogen/generated/shared/c++/ConfigureOptions.hpp +197 -0
  292. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.cpp +48 -0
  293. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.hpp +121 -0
  294. package/nitrogen/generated/shared/c++/Location.hpp +131 -0
  295. package/nitrogen/generated/shared/c++/LocationAccuracy.hpp +69 -0
  296. package/nitrogen/generated/shared/c++/LocationOptions.hpp +91 -0
  297. package/nitrogen/generated/shared/c++/LocationProvider.hpp +63 -0
  298. package/nitrogen/generated/shared/c++/LogEntry.hpp +99 -0
  299. package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +65 -0
  300. package/nitrogen/generated/shared/c++/ServiceStatus.hpp +92 -0
  301. package/nitrogen/generated/shared/c++/StationaryLocation.hpp +135 -0
  302. package/package.json +112 -0
  303. package/react-native.config.js +10 -0
  304. package/src/NitroBackgroundGeolocation.nitro.ts +656 -0
  305. package/src/headless.ts +91 -0
  306. 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
+ }
@@ -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
+ }
@@ -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
+ }