@josuelmm/cordova-background-geolocation 2.3.5

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 (239) hide show
  1. package/.npmignore +23 -0
  2. package/CHANGELOG.md +787 -0
  3. package/CONTRIBUTORS.md +15 -0
  4. package/HISTORY.md +734 -0
  5. package/LICENSE +191 -0
  6. package/README.md +125 -0
  7. package/RELEASE.MD +5 -0
  8. package/android/CDVBackgroundGeolocation/src/main/AndroidManifest.xml +23 -0
  9. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/HandlerWrapper.java +18 -0
  10. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JavaScriptInterface.java +22 -0
  11. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsEvaluator.java +133 -0
  12. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsFunctionCallFormatter.java +37 -0
  13. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/WebViewWrapper.java +71 -0
  14. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/CallJavaResultInterface.java +8 -0
  15. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/HandlerWrapperInterface.java +5 -0
  16. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsCallback.java +10 -0
  17. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsEvaluatorInterface.java +18 -0
  18. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/WebViewWrapperInterface.java +14 -0
  19. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/ConfigMapper.java +148 -0
  20. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/PluginRegistry.java +25 -0
  21. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/headless/JsEvaluatorTaskRunner.java +53 -0
  22. package/android/CDVBackgroundGeolocation/src/main/java/com/tenforwardconsulting/bgloc/cordova/BackgroundGeolocationPlugin.java +603 -0
  23. package/android/CDVBackgroundGeolocation/src/main/res/values/strings.xml +4 -0
  24. package/android/CDVBackgroundGeolocation/src/test/java/com/marianhello/ConfigMapperTest.java +208 -0
  25. package/android/common/src/androidTest/java/com/marianhello/bgloc/BackgroundGeolocationFacadeTest.java +45 -0
  26. package/android/common/src/androidTest/java/com/marianhello/bgloc/BatchManagerTest.java +570 -0
  27. package/android/common/src/androidTest/java/com/marianhello/bgloc/ConfigTest.java +76 -0
  28. package/android/common/src/androidTest/java/com/marianhello/bgloc/ContentProviderLocationDAOTest.java +437 -0
  29. package/android/common/src/androidTest/java/com/marianhello/bgloc/DBLogReaderTest.java +95 -0
  30. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationContentProviderTest.java +159 -0
  31. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceProxyTest.java +161 -0
  32. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceTest.java +247 -0
  33. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteConfigurationDAOTest.java +200 -0
  34. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOTest.java +457 -0
  35. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOThreadTest.java +96 -0
  36. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteOpenHelperTest.java +225 -0
  37. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestPluginDelegate.java +46 -0
  38. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestResourceResolver.java +14 -0
  39. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/MockLocationProvider.java +50 -0
  40. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/TestLocationProviderFactory.java +17 -0
  41. package/android/common/src/androidTest/java/com/marianhello/bgloc/sqlite/SQLiteOpenHelper10.java +92 -0
  42. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/LocationProviderTestCase.java +107 -0
  43. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/TestConstants.java +5 -0
  44. package/android/common/src/main/AndroidManifest.xml +72 -0
  45. package/android/common/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +523 -0
  46. package/android/common/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
  47. package/android/common/src/main/java/com/marianhello/bgloc/Config.java +652 -0
  48. package/android/common/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
  49. package/android/common/src/main/java/com/marianhello/bgloc/HttpPostService.java +224 -0
  50. package/android/common/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
  51. package/android/common/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
  52. package/android/common/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
  53. package/android/common/src/main/java/com/marianhello/bgloc/PostLocationTask.java +188 -0
  54. package/android/common/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
  55. package/android/common/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
  56. package/android/common/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
  57. package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
  58. package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
  59. package/android/common/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
  60. package/android/common/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
  61. package/android/common/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
  62. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
  63. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
  64. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
  65. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
  66. package/android/common/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
  67. package/android/common/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
  68. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
  69. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
  70. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
  71. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
  72. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
  73. package/android/common/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
  74. package/android/common/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
  75. package/android/common/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
  76. package/android/common/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +60 -0
  77. package/android/common/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
  78. package/android/common/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
  79. package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
  80. package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
  81. package/android/common/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
  82. package/android/common/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +282 -0
  83. package/android/common/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +610 -0
  84. package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
  85. package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
  86. package/android/common/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
  87. package/android/common/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +145 -0
  88. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationService.java +16 -0
  89. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +749 -0
  90. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
  91. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
  92. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
  93. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +130 -0
  94. package/android/common/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
  95. package/android/common/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
  96. package/android/common/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
  97. package/android/common/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +278 -0
  98. package/android/common/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
  99. package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +249 -0
  100. package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
  101. package/android/common/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
  102. package/android/common/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
  103. package/android/common/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
  104. package/android/common/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
  105. package/android/common/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
  106. package/android/common/src/main/java/com/marianhello/utils/Convert.java +56 -0
  107. package/android/common/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
  108. package/android/common/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
  109. package/android/common/src/main/java/org/apache/commons/io/Charsets.java +153 -0
  110. package/android/common/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
  111. package/android/common/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
  112. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
  113. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
  114. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
  115. package/android/common/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
  116. package/android/common/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  117. package/android/common/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  118. package/android/common/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  119. package/android/common/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  120. package/android/common/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  121. package/android/common/src/main/res/values/strings.xml +4 -0
  122. package/android/common/src/main/res/xml/authenticator.xml +7 -0
  123. package/android/common/src/main/res/xml/syncadapter.xml +9 -0
  124. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ArrayListLocationTemplateTest.java +82 -0
  125. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/BackgroundLocationTest.java +128 -0
  126. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ConfigTest.java +191 -0
  127. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/DBLogReaderTest.java +37 -0
  128. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HashMapLocationTemplateTest.java +216 -0
  129. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HttpPostServiceTest.java +223 -0
  130. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/LocationTemplateFactoryTest.java +50 -0
  131. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/PostLocationTaskTest.java +180 -0
  132. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/TestHelper.java +16 -0
  133. package/android/dependencies.gradle +13 -0
  134. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.h +41 -0
  135. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.m +526 -0
  136. package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
  137. package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
  138. package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
  139. package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
  140. package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
  141. package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
  142. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
  143. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
  144. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
  145. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
  146. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
  147. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
  148. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
  149. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
  150. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
  151. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
  152. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
  153. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
  154. package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
  155. package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
  156. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
  157. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
  158. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +60 -0
  159. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +638 -0
  160. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
  161. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +185 -0
  162. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
  163. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
  164. package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
  165. package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
  166. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
  167. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
  168. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
  169. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +514 -0
  170. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
  171. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
  172. package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
  173. package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
  174. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
  175. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
  176. package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
  177. package/ios/common/BackgroundGeolocation/MAURLocationManager.m +287 -0
  178. package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
  179. package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
  180. package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
  181. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
  182. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +250 -0
  183. package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
  184. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
  185. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
  186. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
  187. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
  188. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
  189. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
  190. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
  191. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
  192. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
  193. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
  194. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
  195. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
  196. package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
  197. package/ios/common/BackgroundGeolocation/Reachability.m +475 -0
  198. package/ios/common/BackgroundGeolocation/SOMotionDetector/CHANGELOG.md +2 -0
  199. package/ios/common/BackgroundGeolocation/SOMotionDetector/LICENSE +21 -0
  200. package/ios/common/BackgroundGeolocation/SOMotionDetector/README.md +135 -0
  201. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
  202. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
  203. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
  204. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
  205. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
  206. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
  207. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
  208. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
  209. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/README.md +170 -0
  210. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
  211. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
  212. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
  213. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
  214. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
  215. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
  216. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
  217. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
  218. package/ios/common/BackgroundGeolocation.xcodeproj/project.pbxproj +760 -0
  219. package/ios/common/BackgroundGeolocationTests/Info.plist +24 -0
  220. package/ios/common/BackgroundGeolocationTests/MAURBackgroundLocationTest.m +185 -0
  221. package/ios/common/BackgroundGeolocationTests/MAURConfigTest.m +161 -0
  222. package/ios/common/BackgroundGeolocationTests/MAURGeolocationOpenHelperTest.m +102 -0
  223. package/ios/common/BackgroundGeolocationTests/MAURLocationTest.m +216 -0
  224. package/ios/common/BackgroundGeolocationTests/MAURLocationUploaderTest.m +55 -0
  225. package/ios/common/BackgroundGeolocationTests/MAURLogReaderTest.m +43 -0
  226. package/ios/common/BackgroundGeolocationTests/MAURSQLiteConfigurationDAOTest.m +102 -0
  227. package/ios/common/BackgroundGeolocationTests/MAURSQLiteHelperTest.m +41 -0
  228. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOTests.m +240 -0
  229. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOThreadTest.m +84 -0
  230. package/ios/common/BackgroundGeolocationTests/MAURSQLiteOpenHelperTest.m +144 -0
  231. package/ios/common/CONTRIBUTORS.md +10 -0
  232. package/ios/common/LICENSE +191 -0
  233. package/ios/common/README.md +7 -0
  234. package/ios/common/scripts/xcode-refactor.js +184 -0
  235. package/package.json +44 -0
  236. package/plugin.xml +355 -0
  237. package/www/BackgroundGeolocation.d.ts +910 -0
  238. package/www/BackgroundGeolocation.js +247 -0
  239. package/www/radio.js +177 -0
@@ -0,0 +1,62 @@
1
+ //
2
+ // MAURUncaughtExceptionLogger.m
3
+ // BackgroundGeolocation
4
+ //
5
+ // Created by Marian Hello on 12/04/2018.
6
+ // Based on https://github.com/kstenerud/KSCrash
7
+ //
8
+ // TODO: consider use of https://plcrashreporter.org
9
+ // TODO: consider use of https://github.com/kstenerud/KSCrash
10
+ // TODO: trap SIGSEGV, SIGBUS, … signals
11
+ // https://creativeinaustria.wordpress.com/2008/10/20/crash-reporter-for-iphone-applications-part-2/
12
+
13
+ #import <Foundation/Foundation.h>
14
+ #import "MAURUncaughtExceptionLogger.h"
15
+ #import "MAURLogging.h"
16
+
17
+ static volatile bool g_isEnabled = 0;
18
+
19
+ /** The exception handler that was in place before we installed ours. */
20
+ static NSUncaughtExceptionHandler* g_previousUncaughtExceptionHandler;
21
+
22
+ void uncaughtExceptionHandler(NSException *exception) {
23
+ if (g_isEnabled) {
24
+ // TODO: store stack trace separately
25
+ DDLogError(@"CRASH: %@ Stack Trace: %@", exception, [exception callStackSymbols]);
26
+ }
27
+ if (g_previousUncaughtExceptionHandler != NULL) {
28
+ g_previousUncaughtExceptionHandler(exception);
29
+ }
30
+ }
31
+
32
+ static void setEnabled(bool isEnabled)
33
+ {
34
+ if (isEnabled != g_isEnabled) {
35
+ g_isEnabled = isEnabled;
36
+ if (isEnabled) {
37
+ DDLogDebug(@"Backing up original handler.");
38
+ g_previousUncaughtExceptionHandler = NSGetUncaughtExceptionHandler();
39
+
40
+ DDLogDebug(@"Setting new handler.");
41
+ NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
42
+ }
43
+ else {
44
+ DDLogDebug(@"Restoring original handler.");
45
+ NSSetUncaughtExceptionHandler(g_previousUncaughtExceptionHandler);
46
+ }
47
+ }
48
+ }
49
+
50
+ static bool isEnabled()
51
+ {
52
+ return g_isEnabled;
53
+ }
54
+
55
+ MAHUncaughtExceptionLogger* mah_get_uncaught_exception_logger(void)
56
+ {
57
+ static MAHUncaughtExceptionLogger logger = {
58
+ .setEnabled = setEnabled,
59
+ .isEnabled = isEnabled
60
+ };
61
+ return &logger;
62
+ }
@@ -0,0 +1,102 @@
1
+ /*
2
+ Copyright (c) 2011, Tony Million.
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #import <Foundation/Foundation.h>
29
+ #import <SystemConfiguration/SystemConfiguration.h>
30
+
31
+ //! Project version number for MacOSReachability.
32
+ FOUNDATION_EXPORT double ReachabilityVersionNumber;
33
+
34
+ //! Project version string for MacOSReachability.
35
+ FOUNDATION_EXPORT const unsigned char ReachabilityVersionString[];
36
+
37
+ /**
38
+ * Create NS_ENUM macro if it does not exist on the targeted version of iOS or OS X.
39
+ *
40
+ * @see http://nshipster.com/ns_enum-ns_options/
41
+ **/
42
+ #ifndef NS_ENUM
43
+ #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
44
+ #endif
45
+
46
+ extern NSString *const kReachabilityChangedNotification;
47
+
48
+ typedef NS_ENUM(NSInteger, NetworkStatus) {
49
+ // Apple NetworkStatus Compatible Names.
50
+ NotReachable = 0,
51
+ ReachableViaWiFi = 2,
52
+ ReachableViaWWAN = 1
53
+ };
54
+
55
+ @class Reachability;
56
+
57
+ typedef void (^NetworkReachable)(Reachability * reachability);
58
+ typedef void (^NetworkUnreachable)(Reachability * reachability);
59
+ typedef void (^NetworkReachability)(Reachability * reachability, SCNetworkConnectionFlags flags);
60
+
61
+
62
+ @interface Reachability : NSObject
63
+
64
+ @property (nonatomic, copy) NetworkReachable reachableBlock;
65
+ @property (nonatomic, copy) NetworkUnreachable unreachableBlock;
66
+ @property (nonatomic, copy) NetworkReachability reachabilityBlock;
67
+
68
+ @property (nonatomic, assign) BOOL reachableOnWWAN;
69
+
70
+
71
+ +(instancetype)reachabilityWithHostname:(NSString*)hostname;
72
+ // This is identical to the function above, but is here to maintain
73
+ //compatibility with Apples original code. (see .m)
74
+ +(instancetype)reachabilityWithHostName:(NSString*)hostname;
75
+ +(instancetype)reachabilityForInternetConnection;
76
+ +(instancetype)reachabilityWithAddress:(void *)hostAddress;
77
+ +(instancetype)reachabilityForLocalWiFi;
78
+
79
+ -(instancetype)initWithReachabilityRef:(SCNetworkReachabilityRef)ref;
80
+
81
+ -(BOOL)startNotifier;
82
+ -(void)stopNotifier;
83
+
84
+ -(BOOL)isReachable;
85
+ -(BOOL)isReachableViaWWAN;
86
+ -(BOOL)isReachableViaWiFi;
87
+
88
+ // WWAN may be available, but not active until a connection has been established.
89
+ // WiFi may require a connection for VPN on Demand.
90
+ -(BOOL)isConnectionRequired; // Identical DDG variant.
91
+ -(BOOL)connectionRequired; // Apple's routine.
92
+ // Dynamic, on demand connection?
93
+ -(BOOL)isConnectionOnDemand;
94
+ // Is user intervention required?
95
+ -(BOOL)isInterventionRequired;
96
+
97
+ -(NetworkStatus)currentReachabilityStatus;
98
+ -(SCNetworkReachabilityFlags)reachabilityFlags;
99
+ -(NSString*)currentReachabilityString;
100
+ -(NSString*)currentReachabilityFlags;
101
+
102
+ @end
@@ -0,0 +1,475 @@
1
+ /*
2
+ Copyright (c) 2011, Tony Million.
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #import "Reachability.h"
29
+
30
+ #import <sys/socket.h>
31
+ #import <netinet/in.h>
32
+ #import <netinet6/in6.h>
33
+ #import <arpa/inet.h>
34
+ #import <ifaddrs.h>
35
+ #import <netdb.h>
36
+
37
+
38
+ NSString *const kReachabilityChangedNotification = @"kReachabilityChangedNotification";
39
+
40
+
41
+ @interface Reachability ()
42
+
43
+ @property (nonatomic, assign) SCNetworkReachabilityRef reachabilityRef;
44
+ @property (nonatomic, strong) dispatch_queue_t reachabilitySerialQueue;
45
+ @property (nonatomic, strong) id reachabilityObject;
46
+
47
+ -(void)reachabilityChanged:(SCNetworkReachabilityFlags)flags;
48
+ -(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flags;
49
+
50
+ @end
51
+
52
+
53
+ static NSString *reachabilityFlags(SCNetworkReachabilityFlags flags)
54
+ {
55
+ return [NSString stringWithFormat:@"%c%c %c%c%c%c%c%c%c",
56
+ #if TARGET_OS_IPHONE
57
+ (flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-',
58
+ #else
59
+ 'X',
60
+ #endif
61
+ (flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-',
62
+ (flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-',
63
+ (flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-',
64
+ (flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-',
65
+ (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-',
66
+ (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-',
67
+ (flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-',
68
+ (flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-'];
69
+ }
70
+
71
+ // Start listening for reachability notifications on the current run loop
72
+ static void TMReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info)
73
+ {
74
+ #pragma unused (target)
75
+
76
+ Reachability *reachability = ((__bridge Reachability*)info);
77
+
78
+ // We probably don't need an autoreleasepool here, as GCD docs state each queue has its own autorelease pool,
79
+ // but what the heck eh?
80
+ @autoreleasepool
81
+ {
82
+ [reachability reachabilityChanged:flags];
83
+ }
84
+ }
85
+
86
+
87
+ @implementation Reachability
88
+
89
+ #pragma mark - Class Constructor Methods
90
+
91
+ +(instancetype)reachabilityWithHostName:(NSString*)hostname
92
+ {
93
+ return [Reachability reachabilityWithHostname:hostname];
94
+ }
95
+
96
+ +(instancetype)reachabilityWithHostname:(NSString*)hostname
97
+ {
98
+ SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithName(NULL, [hostname UTF8String]);
99
+ if (ref)
100
+ {
101
+ id reachability = [[self alloc] initWithReachabilityRef:ref];
102
+
103
+ return reachability;
104
+ }
105
+
106
+ return nil;
107
+ }
108
+
109
+ +(instancetype)reachabilityWithAddress:(void *)hostAddress
110
+ {
111
+ SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)hostAddress);
112
+ if (ref)
113
+ {
114
+ id reachability = [[self alloc] initWithReachabilityRef:ref];
115
+
116
+ return reachability;
117
+ }
118
+
119
+ return nil;
120
+ }
121
+
122
+ +(instancetype)reachabilityForInternetConnection
123
+ {
124
+ struct sockaddr_in zeroAddress;
125
+ bzero(&zeroAddress, sizeof(zeroAddress));
126
+ zeroAddress.sin_len = sizeof(zeroAddress);
127
+ zeroAddress.sin_family = AF_INET;
128
+
129
+ return [self reachabilityWithAddress:&zeroAddress];
130
+ }
131
+
132
+ +(instancetype)reachabilityForLocalWiFi
133
+ {
134
+ struct sockaddr_in localWifiAddress;
135
+ bzero(&localWifiAddress, sizeof(localWifiAddress));
136
+ localWifiAddress.sin_len = sizeof(localWifiAddress);
137
+ localWifiAddress.sin_family = AF_INET;
138
+ // IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0
139
+ localWifiAddress.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM);
140
+
141
+ return [self reachabilityWithAddress:&localWifiAddress];
142
+ }
143
+
144
+
145
+ // Initialization methods
146
+
147
+ -(instancetype)initWithReachabilityRef:(SCNetworkReachabilityRef)ref
148
+ {
149
+ self = [super init];
150
+ if (self != nil)
151
+ {
152
+ self.reachableOnWWAN = YES;
153
+ self.reachabilityRef = ref;
154
+
155
+ // We need to create a serial queue.
156
+ // We allocate this once for the lifetime of the notifier.
157
+
158
+ self.reachabilitySerialQueue = dispatch_queue_create("com.tonymillion.reachability", NULL);
159
+ }
160
+
161
+ return self;
162
+ }
163
+
164
+ -(void)dealloc
165
+ {
166
+ [self stopNotifier];
167
+
168
+ if(self.reachabilityRef)
169
+ {
170
+ CFRelease(self.reachabilityRef);
171
+ self.reachabilityRef = nil;
172
+ }
173
+
174
+ self.reachableBlock = nil;
175
+ self.unreachableBlock = nil;
176
+ self.reachabilityBlock = nil;
177
+ self.reachabilitySerialQueue = nil;
178
+ }
179
+
180
+ #pragma mark - Notifier Methods
181
+
182
+ // Notifier
183
+ // NOTE: This uses GCD to trigger the blocks - they *WILL NOT* be called on THE MAIN THREAD
184
+ // - In other words DO NOT DO ANY UI UPDATES IN THE BLOCKS.
185
+ // INSTEAD USE dispatch_async(dispatch_get_main_queue(), ^{UISTUFF}) (or dispatch_sync if you want)
186
+
187
+ -(BOOL)startNotifier
188
+ {
189
+ // allow start notifier to be called multiple times
190
+ if(self.reachabilityObject && (self.reachabilityObject == self))
191
+ {
192
+ return YES;
193
+ }
194
+
195
+
196
+ SCNetworkReachabilityContext context = { 0, NULL, NULL, NULL, NULL };
197
+ context.info = (__bridge void *)self;
198
+
199
+ if(SCNetworkReachabilitySetCallback(self.reachabilityRef, TMReachabilityCallback, &context))
200
+ {
201
+ // Set it as our reachability queue, which will retain the queue
202
+ if(SCNetworkReachabilitySetDispatchQueue(self.reachabilityRef, self.reachabilitySerialQueue))
203
+ {
204
+ // this should do a retain on ourself, so as long as we're in notifier mode we shouldn't disappear out from under ourselves
205
+ // woah
206
+ self.reachabilityObject = self;
207
+ return YES;
208
+ }
209
+ else
210
+ {
211
+ #ifdef DEBUG
212
+ NSLog(@"SCNetworkReachabilitySetDispatchQueue() failed: %s", SCErrorString(SCError()));
213
+ #endif
214
+
215
+ // UH OH - FAILURE - stop any callbacks!
216
+ SCNetworkReachabilitySetCallback(self.reachabilityRef, NULL, NULL);
217
+ }
218
+ }
219
+ else
220
+ {
221
+ #ifdef DEBUG
222
+ NSLog(@"SCNetworkReachabilitySetCallback() failed: %s", SCErrorString(SCError()));
223
+ #endif
224
+ }
225
+
226
+ // if we get here we fail at the internet
227
+ self.reachabilityObject = nil;
228
+ return NO;
229
+ }
230
+
231
+ -(void)stopNotifier
232
+ {
233
+ // First stop, any callbacks!
234
+ SCNetworkReachabilitySetCallback(self.reachabilityRef, NULL, NULL);
235
+
236
+ // Unregister target from the GCD serial dispatch queue.
237
+ SCNetworkReachabilitySetDispatchQueue(self.reachabilityRef, NULL);
238
+
239
+ self.reachabilityObject = nil;
240
+ }
241
+
242
+ #pragma mark - reachability tests
243
+
244
+ // This is for the case where you flick the airplane mode;
245
+ // you end up getting something like this:
246
+ //Reachability: WR ct-----
247
+ //Reachability: -- -------
248
+ //Reachability: WR ct-----
249
+ //Reachability: -- -------
250
+ // We treat this as 4 UNREACHABLE triggers - really apple should do better than this
251
+
252
+ #define testcase (kSCNetworkReachabilityFlagsConnectionRequired | kSCNetworkReachabilityFlagsTransientConnection)
253
+
254
+ -(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flags
255
+ {
256
+ BOOL connectionUP = YES;
257
+
258
+ if(!(flags & kSCNetworkReachabilityFlagsReachable))
259
+ connectionUP = NO;
260
+
261
+ if( (flags & testcase) == testcase )
262
+ connectionUP = NO;
263
+
264
+ #if TARGET_OS_IPHONE
265
+ if(flags & kSCNetworkReachabilityFlagsIsWWAN)
266
+ {
267
+ // We're on 3G.
268
+ if(!self.reachableOnWWAN)
269
+ {
270
+ // We don't want to connect when on 3G.
271
+ connectionUP = NO;
272
+ }
273
+ }
274
+ #endif
275
+
276
+ return connectionUP;
277
+ }
278
+
279
+ -(BOOL)isReachable
280
+ {
281
+ SCNetworkReachabilityFlags flags;
282
+
283
+ if(!SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
284
+ return NO;
285
+
286
+ return [self isReachableWithFlags:flags];
287
+ }
288
+
289
+ -(BOOL)isReachableViaWWAN
290
+ {
291
+ #if TARGET_OS_IPHONE
292
+
293
+ SCNetworkReachabilityFlags flags = 0;
294
+
295
+ if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
296
+ {
297
+ // Check we're REACHABLE
298
+ if(flags & kSCNetworkReachabilityFlagsReachable)
299
+ {
300
+ // Now, check we're on WWAN
301
+ if(flags & kSCNetworkReachabilityFlagsIsWWAN)
302
+ {
303
+ return YES;
304
+ }
305
+ }
306
+ }
307
+ #endif
308
+
309
+ return NO;
310
+ }
311
+
312
+ -(BOOL)isReachableViaWiFi
313
+ {
314
+ SCNetworkReachabilityFlags flags = 0;
315
+
316
+ if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
317
+ {
318
+ // Check we're reachable
319
+ if((flags & kSCNetworkReachabilityFlagsReachable))
320
+ {
321
+ #if TARGET_OS_IPHONE
322
+ // Check we're NOT on WWAN
323
+ if((flags & kSCNetworkReachabilityFlagsIsWWAN))
324
+ {
325
+ return NO;
326
+ }
327
+ #endif
328
+ return YES;
329
+ }
330
+ }
331
+
332
+ return NO;
333
+ }
334
+
335
+
336
+ // WWAN may be available, but not active until a connection has been established.
337
+ // WiFi may require a connection for VPN on Demand.
338
+ -(BOOL)isConnectionRequired
339
+ {
340
+ return [self connectionRequired];
341
+ }
342
+
343
+ -(BOOL)connectionRequired
344
+ {
345
+ SCNetworkReachabilityFlags flags;
346
+
347
+ if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
348
+ {
349
+ return (flags & kSCNetworkReachabilityFlagsConnectionRequired);
350
+ }
351
+
352
+ return NO;
353
+ }
354
+
355
+ // Dynamic, on demand connection?
356
+ -(BOOL)isConnectionOnDemand
357
+ {
358
+ SCNetworkReachabilityFlags flags;
359
+
360
+ if (SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
361
+ {
362
+ return ((flags & kSCNetworkReachabilityFlagsConnectionRequired) &&
363
+ (flags & (kSCNetworkReachabilityFlagsConnectionOnTraffic | kSCNetworkReachabilityFlagsConnectionOnDemand)));
364
+ }
365
+
366
+ return NO;
367
+ }
368
+
369
+ // Is user intervention required?
370
+ -(BOOL)isInterventionRequired
371
+ {
372
+ SCNetworkReachabilityFlags flags;
373
+
374
+ if (SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
375
+ {
376
+ return ((flags & kSCNetworkReachabilityFlagsConnectionRequired) &&
377
+ (flags & kSCNetworkReachabilityFlagsInterventionRequired));
378
+ }
379
+
380
+ return NO;
381
+ }
382
+
383
+
384
+ #pragma mark - reachability status stuff
385
+
386
+ -(NetworkStatus)currentReachabilityStatus
387
+ {
388
+ if([self isReachable])
389
+ {
390
+ if([self isReachableViaWiFi])
391
+ return ReachableViaWiFi;
392
+
393
+ #if TARGET_OS_IPHONE
394
+ return ReachableViaWWAN;
395
+ #endif
396
+ }
397
+
398
+ return NotReachable;
399
+ }
400
+
401
+ -(SCNetworkReachabilityFlags)reachabilityFlags
402
+ {
403
+ SCNetworkReachabilityFlags flags = 0;
404
+
405
+ if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
406
+ {
407
+ return flags;
408
+ }
409
+
410
+ return 0;
411
+ }
412
+
413
+ -(NSString*)currentReachabilityString
414
+ {
415
+ NetworkStatus temp = [self currentReachabilityStatus];
416
+
417
+ if(temp == ReachableViaWWAN)
418
+ {
419
+ // Updated for the fact that we have CDMA phones now!
420
+ return NSLocalizedString(@"Cellular", @"");
421
+ }
422
+ if (temp == ReachableViaWiFi)
423
+ {
424
+ return NSLocalizedString(@"WiFi", @"");
425
+ }
426
+
427
+ return NSLocalizedString(@"No Connection", @"");
428
+ }
429
+
430
+ -(NSString*)currentReachabilityFlags
431
+ {
432
+ return reachabilityFlags([self reachabilityFlags]);
433
+ }
434
+
435
+ #pragma mark - Callback function calls this method
436
+
437
+ -(void)reachabilityChanged:(SCNetworkReachabilityFlags)flags
438
+ {
439
+ if([self isReachableWithFlags:flags])
440
+ {
441
+ if(self.reachableBlock)
442
+ {
443
+ self.reachableBlock(self);
444
+ }
445
+ }
446
+ else
447
+ {
448
+ if(self.unreachableBlock)
449
+ {
450
+ self.unreachableBlock(self);
451
+ }
452
+ }
453
+
454
+ if(self.reachabilityBlock)
455
+ {
456
+ self.reachabilityBlock(self, flags);
457
+ }
458
+
459
+ // this makes sure the change notification happens on the MAIN THREAD
460
+ dispatch_async(dispatch_get_main_queue(), ^{
461
+ [[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification
462
+ object:self];
463
+ });
464
+ }
465
+
466
+ #pragma mark - Debug Description
467
+
468
+ - (NSString *) description
469
+ {
470
+ NSString *description = [NSString stringWithFormat:@"<%@: %#x (%@)>",
471
+ NSStringFromClass([self class]), (unsigned int) self, [self currentReachabilityFlags]];
472
+ return description;
473
+ }
474
+
475
+ @end
@@ -0,0 +1,2 @@
1
+ SOMotionDetector
2
+ ===========
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 SocialObject Sofware
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.