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,650 @@
1
+ //
2
+ // MAURBackgroundGeolocationFacade.m
3
+ //
4
+ // Created by Marian Hello on 04/06/16.
5
+ // Version 2.0.0
6
+ //
7
+ // According to apache license
8
+ //
9
+ // This is class is using code from christocracy cordova-plugin-background-geolocation plugin
10
+ // https://github.com/christocracy/cordova-plugin-background-geolocation
11
+ //
12
+
13
+ #import <UIKit/UIKit.h>
14
+ #import <CoreLocation/CoreLocation.h>
15
+ #import <AudioToolbox/AudioToolbox.h>
16
+ #import "MAURBackgroundGeolocationFacade.h"
17
+ #import "MAURPostLocationTask.h"
18
+ #import "MAURSQLiteConfigurationDAO.h"
19
+ #import "MAURSQLiteLocationDAO.h"
20
+ #import "MAURBackgroundTaskManager.h"
21
+ #import "MAURLogging.h"
22
+ #import "FMDBLogger.h"
23
+ #import "MAURLogReader.h"
24
+ #import "MAURLocationManager.h"
25
+ #import "MAURActivityLocationProvider.h"
26
+ #import "MAURDistanceFilterLocationProvider.h"
27
+ #import "MAURRawLocationProvider.h"
28
+ #import "MAURUncaughtExceptionLogger.h"
29
+ #import "MAURPostLocationTask.h"
30
+ #import "INTULocationManager.h"
31
+
32
+ // error messages
33
+ #define CONFIGURE_ERROR_MSG "Configuration error."
34
+ #define SERVICE_ERROR_MSG "Cannot start service error."
35
+ #define UNKNOWN_LOCATION_PROVIDER_MSG "Unknown location provider."
36
+
37
+ // Position errors
38
+ // https://developer.mozilla.org/en-US/docs/Web/API/PositionError
39
+ #define PERMISSION_DENIED 1
40
+ #define POSITION_UNAVAILABLE 2
41
+ #define TIMEOUT 3
42
+
43
+ static NSString * const BGGeolocationDomain = @"com.marianhello";
44
+ static NSString * const TAG = @"BgGeo";
45
+
46
+ FMDBLogger *sqliteLogger;
47
+
48
+ @interface MAURBackgroundGeolocationFacade () <MAURProviderDelegate, MAURPostLocationTaskDelegate>
49
+ @end
50
+
51
+ @implementation MAURBackgroundGeolocationFacade {
52
+ BOOL isStarted;
53
+ MAUROperationalMode operationMode;
54
+
55
+ UILocalNotification *localNotification;
56
+
57
+ // configurable options
58
+ MAURConfig *_config;
59
+
60
+ MAURLocation *stationaryLocation;
61
+ MAURAbstractLocationProvider<MAURLocationProvider> *locationProvider;
62
+ MAURPostLocationTask *postLocationTask;
63
+ }
64
+
65
+ + (instancetype)sharedInstance
66
+ {
67
+ static MAURBackgroundGeolocationFacade *sharedInstance = nil;
68
+ static dispatch_once_t onceToken;
69
+ dispatch_once(&onceToken, ^{
70
+ sharedInstance = [[self alloc] init];
71
+ });
72
+ return sharedInstance;
73
+ }
74
+
75
+
76
+ - (instancetype) init
77
+ {
78
+ self = [super init];
79
+
80
+ if (self == nil) {
81
+ return self;
82
+ }
83
+
84
+ [DDLog addLogger:[DDASLLogger sharedInstance] withLevel:DDLogLevelInfo];
85
+ [DDLog addLogger:[DDTTYLogger sharedInstance] withLevel:DDLogLevelDebug];
86
+
87
+ sqliteLogger = [[FMDBLogger alloc] initWithLogDirectory:[self loggerDirectory]];
88
+ sqliteLogger.saveThreshold = 1;
89
+ sqliteLogger.saveInterval = 0;
90
+ sqliteLogger.maxAge = 60 * 60 * 24 * 7; // 7 days
91
+ sqliteLogger.deleteInterval = 60 * 60 * 24; // 1 day
92
+ sqliteLogger.deleteOnEverySave = NO;
93
+
94
+ [DDLog addLogger:sqliteLogger withLevel:DDLogLevelDebug];
95
+
96
+ MAHUncaughtExceptionLogger *logger = mah_get_uncaught_exception_logger();
97
+ logger->setEnabled(YES);
98
+
99
+ postLocationTask = [[MAURPostLocationTask alloc] init];
100
+ postLocationTask.delegate = self;
101
+
102
+ localNotification = [[UILocalNotification alloc] init];
103
+ localNotification.timeZone = [NSTimeZone defaultTimeZone];
104
+
105
+ isStarted = NO;
106
+
107
+ return self;
108
+ }
109
+
110
+ /**
111
+ * configure manager
112
+ * @param {Config} configuration
113
+ * @param {NSError} optional error
114
+ */
115
+ - (BOOL) configure:(MAURConfig*)config error:(NSError * __autoreleasing *)outError
116
+ {
117
+ __block NSError *error = nil;
118
+
119
+ MAURConfig *currentConfig = [self getConfig];
120
+ _config = [MAURConfig merge:currentConfig withConfig:config];
121
+
122
+ DDLogInfo(@"%@ #configure: %@", TAG, _config);
123
+
124
+ postLocationTask.config = _config;
125
+
126
+ MAURSQLiteConfigurationDAO* configDAO = [MAURSQLiteConfigurationDAO sharedInstance];
127
+ [configDAO persistConfiguration:_config];
128
+
129
+ // ios 8 requires permissions to send local-notifications
130
+ if ([_config isDebugging]) {
131
+ [self runOnMainThread:^{
132
+ UIApplication *app = [UIApplication sharedApplication];
133
+ if ([[UIApplication sharedApplication]respondsToSelector:@selector(currentUserNotificationSettings)]) {
134
+ UIUserNotificationType wantedTypes = UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert;
135
+ UIUserNotificationSettings *currentSettings = [app currentUserNotificationSettings];
136
+ if (!currentSettings || (currentSettings.types != wantedTypes)) {
137
+ if ([app respondsToSelector:@selector(registerUserNotificationSettings:)]) {
138
+ [app registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:wantedTypes categories:nil]];
139
+ }
140
+ }
141
+ }
142
+ }];
143
+ }
144
+
145
+ if (isStarted) {
146
+ // Note: CLLocationManager must be created on a thread with an active run loop (main thread)
147
+ [self runOnMainThread:^{
148
+
149
+ // requesting new provider
150
+ if (![currentConfig.locationProvider isEqual:_config.locationProvider]) {
151
+ [locationProvider onDestroy]; // destroy current provider
152
+ locationProvider = [self getProvider:_config.locationProvider.intValue error:&error];
153
+ }
154
+
155
+ if (locationProvider == nil) {
156
+ return;
157
+ }
158
+
159
+ // trap configuration errors
160
+ if (![locationProvider onConfigure:_config error:&error]) {
161
+ return;
162
+ }
163
+
164
+ isStarted = [locationProvider onStart:&error];
165
+ locationProvider.delegate = self;
166
+ }];
167
+ }
168
+
169
+ if (error != nil) {
170
+ if (outError != nil) {
171
+ NSDictionary *userInfo = @{
172
+ NSLocalizedDescriptionKey: NSLocalizedString(@CONFIGURE_ERROR_MSG, nil),
173
+ NSUnderlyingErrorKey : error
174
+ };
175
+ *outError = [NSError errorWithDomain:BGGeolocationDomain code:MAURBGConfigureError userInfo:userInfo];
176
+ }
177
+
178
+ return NO;
179
+ }
180
+
181
+ return YES;
182
+ }
183
+
184
+ /**
185
+ * Turn on background geolocation
186
+ * in case of failure it calls error callback from configure method
187
+ * may fire two callback when location services are disabled and when authorization failed
188
+ */
189
+ - (BOOL) start:(NSError * __autoreleasing *)outError
190
+ {
191
+ DDLogInfo(@"%@ #start: %d", TAG, isStarted);
192
+
193
+ if (isStarted) {
194
+ return NO;
195
+ }
196
+
197
+ __block NSError *error = nil;
198
+ MAURConfig *config = [self getConfig];
199
+
200
+ postLocationTask.config = config;
201
+ [postLocationTask start];
202
+
203
+ // Note: CLLocationManager must be created on a thread with an active run loop (main thread)
204
+ [self runOnMainThread:^{
205
+ locationProvider = [self getProvider:config.locationProvider.intValue error:&error];
206
+
207
+ if (locationProvider == nil) {
208
+ return;
209
+ }
210
+
211
+ // trap configuration errors
212
+ if (![locationProvider onConfigure:config error:&error]) {
213
+ return;
214
+ }
215
+
216
+ isStarted = [locationProvider onStart:&error];
217
+ locationProvider.delegate = self;
218
+ }];
219
+
220
+
221
+ if (!isStarted) {
222
+ if (outError != nil) {
223
+ *outError = error;
224
+ }
225
+
226
+ return NO;
227
+ }
228
+
229
+ return isStarted;
230
+ }
231
+
232
+ /**
233
+ * Turn off background geolocation
234
+ */
235
+ - (BOOL) stop:(NSError * __autoreleasing *)outError
236
+ {
237
+ DDLogInfo(@"%@ #stop", TAG);
238
+ __block BOOL didStop = YES;
239
+
240
+ if (!isStarted) {
241
+ return YES;
242
+ }
243
+
244
+ [postLocationTask stop];
245
+
246
+ [self runOnMainThread:^{
247
+ didStop = [locationProvider onStop:outError];
248
+ isStarted = !didStop;
249
+ }];
250
+
251
+ return didStop;
252
+ }
253
+
254
+ /**
255
+ * toggle between foreground and background operation mode
256
+ */
257
+ - (void) switchMode:(MAUROperationalMode)mode
258
+ {
259
+ DDLogInfo(@"%@ #switchMode %lu", TAG, (unsigned long)mode);
260
+
261
+ operationMode = mode;
262
+
263
+ if (!isStarted) return;
264
+
265
+ if ([self getConfig].isDebugging) {
266
+ AudioServicesPlaySystemSound (operationMode == MAURForegroundMode ? paceChangeYesSound : paceChangeNoSound);
267
+ }
268
+
269
+ [self runOnMainThread:^{
270
+ [locationProvider onSwitchMode:mode];
271
+ }];
272
+ }
273
+
274
+ - (BOOL) locationServicesEnabled
275
+ {
276
+ if ([CLLocationManager respondsToSelector:@selector(locationServicesEnabled)]) { // iOS 4.x
277
+ return [CLLocationManager locationServicesEnabled];
278
+ }
279
+
280
+ return NO;
281
+ }
282
+
283
+ - (MAURLocationAuthorizationStatus) authorizationStatus
284
+ {
285
+ CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
286
+ switch (authStatus) {
287
+ case kCLAuthorizationStatusNotDetermined:
288
+ return MAURLocationAuthorizationNotDetermined;
289
+ case kCLAuthorizationStatusRestricted:
290
+ case kCLAuthorizationStatusDenied:
291
+ return MAURLocationAuthorizationDenied;
292
+ case kCLAuthorizationStatusAuthorizedAlways:
293
+ return MAURLocationAuthorizationAlways;
294
+ case kCLAuthorizationStatusAuthorizedWhenInUse:
295
+ return MAURLocationAuthorizationForeground;
296
+ }
297
+ }
298
+
299
+ - (BOOL) isStarted
300
+ {
301
+ return isStarted;
302
+ }
303
+
304
+ - (MAURAbstractLocationProvider<MAURLocationProvider>*) getProvider:(int)providerId error:(NSError * __autoreleasing *)outError
305
+ {
306
+ NSDictionary *errorDictionary;
307
+ MAURAbstractLocationProvider<MAURLocationProvider> *locationProvider = nil;
308
+ switch (providerId) {
309
+ case DISTANCE_FILTER_PROVIDER:
310
+ locationProvider = [[MAURDistanceFilterLocationProvider alloc] init];
311
+ break;
312
+ case ACTIVITY_PROVIDER:
313
+ locationProvider = [[MAURActivityLocationProvider alloc] init];
314
+ break;
315
+ case RAW_PROVIDER:
316
+ locationProvider = [[MAURRawLocationProvider alloc] init];
317
+ break;
318
+ default:
319
+ if (outError != nil) {
320
+ errorDictionary = @{
321
+ NSLocalizedDescriptionKey: NSLocalizedString(@UNKNOWN_LOCATION_PROVIDER_MSG, nil),
322
+ };
323
+ *outError = [NSError errorWithDomain:BGGeolocationDomain code:MAURBGConfigureError userInfo:errorDictionary];
324
+ }
325
+ return nil;
326
+ }
327
+ [locationProvider onCreate];
328
+ return locationProvider;
329
+ }
330
+
331
+ - (void) showAppSettings
332
+ {
333
+ [self runOnMainThread:^{
334
+ BOOL canGoToSettings = (UIApplicationOpenSettingsURLString != NULL);
335
+ if (canGoToSettings) {
336
+ NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
337
+ [[UIApplication sharedApplication] openURL:settingsURL
338
+ options:@{}
339
+ completionHandler:nil];
340
+ }
341
+ }];
342
+ }
343
+
344
+ - (void) showLocationSettings
345
+ {
346
+ // NOOP - Since Apple started rejecting apps using non public url schemes
347
+ // https://github.com/mauron85/cordova-plugin-background-geolocation/issues/394
348
+ }
349
+
350
+ - (MAURLocation*) getStationaryLocation
351
+ {
352
+ return stationaryLocation;
353
+ }
354
+
355
+ - (NSArray<MAURLocation*>*) getLocations
356
+ {
357
+ MAURSQLiteLocationDAO* locationDAO = [MAURSQLiteLocationDAO sharedInstance];
358
+ return [locationDAO getAllLocations];
359
+ }
360
+
361
+ - (NSArray<MAURLocation*>*) getValidLocations
362
+ {
363
+ MAURSQLiteLocationDAO* locationDAO = [MAURSQLiteLocationDAO sharedInstance];
364
+ return [locationDAO getValidLocations];
365
+ }
366
+
367
+ - (NSArray<MAURLocation*>*) getValidLocationsAndDelete
368
+ {
369
+ MAURSQLiteLocationDAO* locationDAO = [MAURSQLiteLocationDAO sharedInstance];
370
+ return [locationDAO getLocationsForSync];
371
+ }
372
+
373
+ - (BOOL) deleteLocation:(NSNumber*)locationId error:(NSError * __autoreleasing *)outError
374
+ {
375
+ MAURSQLiteLocationDAO* locationDAO = [MAURSQLiteLocationDAO sharedInstance];
376
+ return [locationDAO deleteLocation:locationId error:outError];
377
+ }
378
+
379
+ - (BOOL) deleteAllLocations:(NSError * __autoreleasing *)outError
380
+ {
381
+ MAURSQLiteLocationDAO* locationDAO = [MAURSQLiteLocationDAO sharedInstance];
382
+ return [locationDAO deleteAllLocations:outError];
383
+ }
384
+
385
+ - (MAURLocation*)getCurrentLocation:(int)timeout maximumAge:(long)maximumAge
386
+ enableHighAccuracy:(BOOL)enableHighAccuracy
387
+ error:(NSError * __autoreleasing *)outError
388
+ {
389
+ __block NSError *error = nil;
390
+ __block CLLocation *location = nil;
391
+
392
+ dispatch_semaphore_t sema = dispatch_semaphore_create(0);
393
+ [self runOnMainThread:^{
394
+ CLLocation *currentLocation = [MAURLocationManager sharedInstance].locationManager.location;
395
+ if (currentLocation != nil) {
396
+ long locationAge = ceil(fabs([currentLocation.timestamp timeIntervalSinceNow]) * 1000);
397
+ if (locationAge <= maximumAge) {
398
+ location = currentLocation;
399
+ dispatch_semaphore_signal(sema);
400
+ return;
401
+ }
402
+ }
403
+
404
+ INTULocationManager *locationManager = [INTULocationManager sharedInstance];
405
+ float timeoutInSeconds = ceil((float)timeout/1000);
406
+ [locationManager requestLocationWithDesiredAccuracy:enableHighAccuracy ? INTULocationAccuracyRoom : INTULocationAccuracyCity
407
+ timeout:timeoutInSeconds
408
+ delayUntilAuthorized:YES // This parameter is optional, defaults to NO if omitted
409
+ block:^(CLLocation *currentLocation, INTULocationAccuracy achievedAccuracy, INTULocationStatus status) {
410
+ if (status == INTULocationStatusSuccess) {
411
+ // Request succeeded, meaning achievedAccuracy is at least the requested accuracy, and
412
+ // currentLocation contains the device's current location.
413
+ location = currentLocation;
414
+ }
415
+ else if (status == INTULocationStatusTimedOut) {
416
+ // Wasn't able to locate the user with the requested accuracy within the timeout interval.
417
+ // However, currentLocation contains the best location available (if any) as of right now,
418
+ // and achievedAccuracy has info on the accuracy/recency of the location in currentLocation.
419
+ error = [NSError errorWithDomain:BGGeolocationDomain code:TIMEOUT userInfo:nil];
420
+ }
421
+ else {
422
+ // An error occurred, more info is available by looking at the specific status returned.
423
+ error = [NSError errorWithDomain:BGGeolocationDomain code:POSITION_UNAVAILABLE userInfo:nil];
424
+ }
425
+ dispatch_semaphore_signal(sema);
426
+ }];
427
+ }];
428
+ dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
429
+
430
+ if (location != nil) {
431
+ return [MAURLocation fromCLLocation:location];
432
+ }
433
+
434
+ if (outError != nil) {
435
+ *outError = error;
436
+ }
437
+
438
+ return nil;
439
+ }
440
+
441
+ - (MAURConfig*) getConfig
442
+ {
443
+ if (_config == nil) {
444
+ MAURSQLiteConfigurationDAO* configDAO = [MAURSQLiteConfigurationDAO sharedInstance];
445
+ _config = [configDAO retrieveConfiguration];
446
+ if (_config == nil) {
447
+ _config = [[MAURConfig alloc] initWithDefaults];
448
+ }
449
+ }
450
+
451
+ return _config;
452
+ }
453
+
454
+ - (NSArray*) getLogEntries:(NSInteger)limit
455
+ {
456
+ MAURLogReader *logReader = [[MAURLogReader alloc] initWithLogDirectory:[self loggerDirectory]];
457
+ return [logReader getEntries:limit fromLogEntryId:0 minLogLevel:DDLogFlagDebug];
458
+ }
459
+
460
+ - (NSArray*) getLogEntries:(NSInteger)limit fromLogEntryId:(NSInteger)entryId minLogLevelFromString:(NSString *)minLogLevel
461
+ {
462
+ MAURLogReader *logReader = [[MAURLogReader alloc] initWithLogDirectory:[self loggerDirectory]];
463
+ return [logReader getLogEntries:limit fromLogEntryId:entryId minLogLevelAsString:minLogLevel];
464
+ }
465
+
466
+ - (NSArray*) getLogEntries:(NSInteger)limit fromLogEntryId:(NSInteger)entryId minLogLevel:(DDLogFlag)minLogLevel
467
+ {
468
+ MAURLogReader *logReader = [[MAURLogReader alloc] initWithLogDirectory:[self loggerDirectory]];
469
+ NSArray *logs = [logReader getEntries:limit fromLogEntryId:entryId minLogLevel:minLogLevel];
470
+ return logs;
471
+ }
472
+
473
+ - (void) forceSync
474
+ {
475
+ [postLocationTask sync];
476
+ }
477
+
478
+ - (void) notify:(NSString*)message
479
+ {
480
+ localNotification.fireDate = [NSDate date];
481
+ localNotification.alertBody = message;
482
+ [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
483
+ }
484
+
485
+ -(void) runOnMainThread:(dispatch_block_t)completionHandle {
486
+ BOOL alreadyOnMainThread = [NSThread isMainThread];
487
+ // this check avoids possible deadlock resulting from
488
+ // calling dispatch_sync() on the same queue as current one
489
+ if (alreadyOnMainThread) {
490
+ // execute code in place
491
+ completionHandle();
492
+ } else {
493
+ // dispatch to main queue
494
+ dispatch_sync(dispatch_get_main_queue(), completionHandle);
495
+ }
496
+ }
497
+
498
+ - (NSString *)loggerDirectory
499
+ {
500
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
501
+ NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory();
502
+
503
+ return [basePath stringByAppendingPathComponent:@"SQLiteLogger"];
504
+ }
505
+
506
+ - (void) onStationaryChanged:(MAURLocation *)location
507
+ {
508
+ DDLogDebug(@"%@ #onStationaryChanged", TAG);
509
+ stationaryLocation = location;
510
+
511
+ [postLocationTask add:location];
512
+
513
+ MAURConfig *config = [self getConfig];
514
+ if ([config isDebugging]) {
515
+ double distanceFilter = [MAURLocationManager sharedInstance].distanceFilter;
516
+ [self notify:[NSString stringWithFormat:@"Stationary update: %s\nSPD: %0.0f | DF: %f | ACY: %0.0f | RAD: %0.0f",
517
+ ((operationMode == MAURForegroundMode) ? "FG" : "BG"),
518
+ [location.speed doubleValue],
519
+ distanceFilter,
520
+ [location.accuracy doubleValue],
521
+ [location.radius doubleValue]
522
+ ]];
523
+
524
+ AudioServicesPlaySystemSound (locationSyncSound);
525
+ }
526
+
527
+ // Any javascript stationaryRegion event-listeners?
528
+ if (self.delegate && [self.delegate respondsToSelector:@selector(onStationaryChanged:)]) {
529
+ [self.delegate onStationaryChanged:location];
530
+ }
531
+ }
532
+
533
+ - (void) onLocationChanged:(MAURLocation *)location
534
+ {
535
+ DDLogDebug(@"%@ #onLocationChanged %@", TAG, location);
536
+ stationaryLocation = nil;
537
+
538
+ [postLocationTask add:location];
539
+
540
+ MAURConfig *config = [self getConfig];
541
+ if ([config isDebugging]) {
542
+ double distanceFilter = [MAURLocationManager sharedInstance].distanceFilter;
543
+ [self notify:[NSString stringWithFormat:@"Location update: %s\nSPD: %0.0f | DF: %f | ACY: %0.0f",
544
+ ((operationMode == MAURForegroundMode) ? "FG" : "BG"),
545
+ [location.speed doubleValue],
546
+ distanceFilter,
547
+ [location.accuracy doubleValue]
548
+ ]];
549
+
550
+ AudioServicesPlaySystemSound (locationSyncSound);
551
+ }
552
+
553
+ // Delegate to main module
554
+ if (self.delegate && [self.delegate respondsToSelector:@selector(onLocationChanged:)]) {
555
+ [self.delegate onLocationChanged:location];
556
+ }
557
+ }
558
+
559
+ - (void) onAuthorizationChanged:(MAURLocationAuthorizationStatus)authStatus
560
+ {
561
+ [self.delegate onAuthorizationChanged:authStatus];
562
+ }
563
+
564
+ - (void) onError:(NSError*)error
565
+ {
566
+ [self.delegate onError:error];
567
+ }
568
+
569
+ - (void) onLocationPause
570
+ {
571
+ [self.delegate onLocationPause];
572
+ }
573
+
574
+ - (void) onLocationResume
575
+ {
576
+ [self.delegate onLocationResume];
577
+ }
578
+
579
+ - (void) onActivityChanged:(MAURActivity *)activity
580
+ {
581
+ DDLogDebug(@"%@ #onActivityChanged %@", TAG, activity);
582
+
583
+ if ([self getConfig].isDebugging) {
584
+ [self notify:[NSString stringWithFormat:@"%@ activity detected: %@ activity, confidence: %@", TAG, activity.type, activity.confidence]];
585
+ }
586
+
587
+ [self.delegate onActivityChanged:activity];
588
+ }
589
+
590
+ /**@
591
+ * If you don't stopMonitoring when application terminates, the app will be awoken still when a
592
+ * new location arrives, essentially monitoring the user's location even when they've killed the app.
593
+ * Might be desirable in certain apps.
594
+ */
595
+ - (void) onAppTerminate
596
+ {
597
+ MAURConfig *config = [self getConfig];
598
+ if ([config stopOnTerminate]) {
599
+ DDLogInfo(@"%@ #onAppTerminate.", TAG);
600
+ [self stop:nil];
601
+ } else {
602
+ [locationProvider onTerminate];
603
+ }
604
+ }
605
+
606
+ - (void) dealloc
607
+ {
608
+ DDLogDebug(@"%@ #dealloc", TAG);
609
+ // currently noop
610
+ }
611
+
612
+ #pragma mark - Location transform
613
+
614
+ + (void) setLocationTransform:(MAURLocationTransform _Nullable)transform
615
+ {
616
+ [MAURPostLocationTask setLocationTransform:transform];
617
+ }
618
+
619
+ + (MAURLocationTransform _Nullable) locationTransform
620
+ {
621
+ return [MAURPostLocationTask locationTransform];
622
+ }
623
+
624
+ #pragma mark - MAURPostLocationTaskDelegate
625
+
626
+ - (void) postLocationTaskRequestedAbortUpdates:(MAURPostLocationTask *)task
627
+ {
628
+ if (_delegate && [_delegate respondsToSelector:@selector(onAbortRequested)])
629
+ {
630
+ // We have a delegate, tell it that there's a request.
631
+ // It will decide whether to stop or not.
632
+ [_delegate onAbortRequested];
633
+ }
634
+ else
635
+ {
636
+ // No delegate, we may be running in the background.
637
+ // Let's just stop.
638
+ [self stop:nil];
639
+ }
640
+ }
641
+
642
+ - (void) postLocationTaskHttpAuthorizationUpdates:(MAURPostLocationTask *)task
643
+ {
644
+ if (_delegate && [_delegate respondsToSelector:@selector(onHttpAuthorization)])
645
+ {
646
+ [_delegate onHttpAuthorization];
647
+ }
648
+ }
649
+
650
+ @end
@@ -0,0 +1,34 @@
1
+ //
2
+ // MAURBackgroundSync.h
3
+ //
4
+ // Created by Marian Hello on 07/07/16.
5
+ // Copyright © 2016 mauron85. All rights reserved.
6
+ //
7
+
8
+ #ifndef MAURBackgroundSync_h
9
+ #define MAURBackgroundSync_h
10
+
11
+ #import <Foundation/Foundation.h>
12
+
13
+ @class MAURBackgroundSync;
14
+
15
+ @protocol MAURBackgroundSyncDelegate <NSObject>
16
+
17
+ @optional
18
+ - (void)backgroundSyncRequestedAbortUpdates:(MAURBackgroundSync * _Nonnull)task;
19
+ - (void)backgroundSyncHttpAuthorizationUpdates:(MAURBackgroundSync * _Nonnull)task;
20
+
21
+ @end
22
+
23
+ @interface MAURBackgroundSync : NSObject
24
+
25
+ @property (nonatomic, weak) id<MAURBackgroundSyncDelegate> _Nullable delegate;
26
+
27
+ - (instancetype) init;
28
+ - (NSString*) status;
29
+ - (void) sync:(NSString * _Nonnull)url withTemplate:(id)locationTemplate withHttpHeaders:(NSMutableDictionary * _Nullable)httpHeaders;
30
+ - (void) cancel;
31
+
32
+ @end
33
+
34
+ #endif /* MAURBackgroundSync_h */