@expofp/react-native-efp-crowdconnected 0.1.5 → 0.1.7

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 (145) hide show
  1. package/ExpofpCrowdconnected.podspec +5 -5
  2. package/README.md +23 -13
  3. package/android/build.gradle +4 -4
  4. package/android/src/main/java/com/expofpcrowdconnected/ExpoFpCrowdConnectedLocationProviderSettings.kt +8 -1
  5. package/android/src/main/java/com/expofpcrowdconnected/ExpoFpPosition.kt +2 -3
  6. package/android/src/main/java/com/expofpcrowdconnected/RCTCrowdConnectedLocationProviderModule.kt +66 -70
  7. package/ios/ExpoFpLocationProvider/ExpoFpCrowdConnectedLocationProviderSettings.swift +36 -23
  8. package/ios/Extensions/{LocationTrackingMode+Extensions.swift → CrowdConnected+Extensions.swift} +5 -4
  9. package/ios/Frameworks/CrowdConnectedCore.xcframework/Info.plist +44 -0
  10. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/CrowdConnectedCore +0 -0
  11. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Headers/CrowdConnectedCore-Swift.h +767 -0
  12. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Headers/CrowdConnectedCore.h +15 -0
  13. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Info.plist +0 -0
  14. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.abi.json +8032 -0
  15. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.private.swiftinterface +162 -0
  16. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  17. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.swiftinterface +162 -0
  18. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/module.modulemap +11 -0
  19. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/PrivacyInfo.xcprivacy +36 -0
  20. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/_CodeSignature/CodeResources +201 -0
  21. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/CrowdConnectedCore +0 -0
  22. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Headers/CrowdConnectedCore-Swift.h +1530 -0
  23. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Headers/CrowdConnectedCore.h +15 -0
  24. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Info.plist +0 -0
  25. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.abi.json +8032 -0
  26. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +162 -0
  27. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  28. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.swiftinterface +162 -0
  29. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.abi.json +8032 -0
  30. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +162 -0
  31. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  32. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +162 -0
  33. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/module.modulemap +11 -0
  34. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/PrivacyInfo.xcprivacy +36 -0
  35. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/_CodeSignature/CodeResources +256 -0
  36. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/Info.plist +44 -0
  37. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/CrowdConnectedCoreBluetooth +0 -0
  38. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth-Swift.h +329 -0
  39. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth.h +11 -0
  40. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Info.plist +0 -0
  41. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.abi.json +296 -0
  42. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.private.swiftinterface +16 -0
  43. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  44. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.swiftinterface +16 -0
  45. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/module.modulemap +11 -0
  46. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/PrivacyInfo.xcprivacy +14 -0
  47. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/_CodeSignature/CodeResources +201 -0
  48. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/CrowdConnectedCoreBluetooth +0 -0
  49. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth-Swift.h +654 -0
  50. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth.h +11 -0
  51. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Info.plist +0 -0
  52. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.abi.json +296 -0
  53. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +16 -0
  54. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  55. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.swiftinterface +16 -0
  56. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.abi.json +296 -0
  57. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +16 -0
  58. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  59. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +16 -0
  60. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/module.modulemap +11 -0
  61. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/PrivacyInfo.xcprivacy +14 -0
  62. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/_CodeSignature/CodeResources +256 -0
  63. package/ios/Frameworks/CrowdConnectedGeo.xcframework/Info.plist +44 -0
  64. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/CrowdConnectedGeo +0 -0
  65. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo-Swift.h +328 -0
  66. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo.h +15 -0
  67. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Info.plist +0 -0
  68. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.abi.json +444 -0
  69. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.private.swiftinterface +16 -0
  70. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  71. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.swiftinterface +16 -0
  72. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/module.modulemap +11 -0
  73. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/PrivacyInfo.xcprivacy +27 -0
  74. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/_CodeSignature/CodeResources +201 -0
  75. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/CrowdConnectedGeo +0 -0
  76. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo-Swift.h +652 -0
  77. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo.h +15 -0
  78. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Info.plist +0 -0
  79. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.abi.json +444 -0
  80. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +16 -0
  81. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  82. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.swiftinterface +16 -0
  83. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.abi.json +444 -0
  84. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +16 -0
  85. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  86. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +16 -0
  87. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/module.modulemap +11 -0
  88. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/PrivacyInfo.xcprivacy +27 -0
  89. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/_CodeSignature/CodeResources +256 -0
  90. package/ios/Frameworks/CrowdConnectedIPS.xcframework/Info.plist +44 -0
  91. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/CrowdConnectedIPS +0 -0
  92. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS-Swift.h +331 -0
  93. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS.h +15 -0
  94. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Info.plist +0 -0
  95. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.abi.json +1362 -0
  96. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.private.swiftinterface +21 -0
  97. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  98. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.swiftinterface +21 -0
  99. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/module.modulemap +11 -0
  100. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/PrivacyInfo.xcprivacy +23 -0
  101. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/_CodeSignature/CodeResources +201 -0
  102. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/CrowdConnectedIPS +0 -0
  103. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS-Swift.h +658 -0
  104. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS.h +15 -0
  105. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Info.plist +0 -0
  106. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.abi.json +1362 -0
  107. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +21 -0
  108. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  109. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.swiftinterface +21 -0
  110. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.abi.json +1362 -0
  111. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +21 -0
  112. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  113. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +21 -0
  114. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/module.modulemap +11 -0
  115. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/PrivacyInfo.xcprivacy +23 -0
  116. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/_CodeSignature/CodeResources +256 -0
  117. package/ios/Frameworks/CrowdConnectedShared.xcframework/Info.plist +44 -0
  118. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/CrowdConnectedShared +0 -0
  119. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Headers/CrowdConnectedShared-Swift.h +322 -0
  120. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Headers/CrowdConnectedShared.h +9 -0
  121. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Info.plist +0 -0
  122. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.abi.json +17142 -0
  123. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.private.swiftinterface +501 -0
  124. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  125. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.swiftinterface +501 -0
  126. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/module.modulemap +11 -0
  127. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/PrivacyInfo.xcprivacy +23 -0
  128. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/_CodeSignature/CodeResources +201 -0
  129. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/CrowdConnectedShared +0 -0
  130. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Headers/CrowdConnectedShared-Swift.h +640 -0
  131. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Headers/CrowdConnectedShared.h +9 -0
  132. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Info.plist +0 -0
  133. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.abi.json +17142 -0
  134. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +501 -0
  135. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  136. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftinterface +501 -0
  137. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.abi.json +17142 -0
  138. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +501 -0
  139. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  140. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +501 -0
  141. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/module.modulemap +11 -0
  142. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/PrivacyInfo.xcprivacy +23 -0
  143. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/_CodeSignature/CodeResources +256 -0
  144. package/ios/RCTCrowdConnectedLocationProvider.swift +69 -101
  145. package/package.json +1 -1
@@ -16,11 +16,11 @@ Pod::Spec.new do |s|
16
16
  s.source_files = "ios/**/*.{h,m,mm,cpp,swift}"
17
17
  s.private_header_files = "ios/**/*.h"
18
18
 
19
- s.dependency 'CrowdConnectedShared', '2.3.0'
20
- s.dependency 'CrowdConnectedCore', '2.3.0'
21
- s.dependency 'CrowdConnectedIPS', '2.3.0'
22
- s.dependency 'CrowdConnectedCoreBluetooth', '2.3.0'
23
- s.dependency 'CrowdConnectedGeo', '2.3.0'
19
+ s.vendored_frameworks = 'ios/Frameworks/CrowdConnectedCore.xcframework',
20
+ 'ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework',
21
+ 'ios/Frameworks/CrowdConnectedGeo.xcframework',
22
+ 'ios/Frameworks/CrowdConnectedIPS.xcframework',
23
+ 'ios/Frameworks/CrowdConnectedShared.xcframework'
24
24
 
25
25
  install_modules_dependencies(s)
26
26
  end
package/README.md CHANGED
@@ -18,10 +18,8 @@ React Native Turbo Module for CrowdConnected location tracking and indoor positi
18
18
 
19
19
  ## Requirements
20
20
 
21
- - React Native 0.71+
22
- - React 18+
23
- - iOS 12.0+ (CrowdConnected SDK v2.2.1)
24
- - Android 7+ (API 24+)
21
+ - Android 7.0+ (API level 24+)
22
+ - iOS minimum version follows your React Native installation
25
23
 
26
24
  ## Installation
27
25
 
@@ -37,9 +35,21 @@ yarn add @expofp/react-native-efp-crowdconnected
37
35
  cd ios && pod install
38
36
  ```
39
37
 
38
+ Your host app's `Info.plist` must declare the relevant location/Bluetooth usage descriptions and `UIBackgroundModes` entries. See [`example/ios/ExpofpCrowdconnectedExample/Info.plist`](./example/ios/ExpofpCrowdconnectedExample/Info.plist) for a working configuration.
39
+
40
40
  ### Android
41
41
 
42
- No additional setup required. CocoaPods/Gradle will handle dependencies.
42
+ Gradle resolves the dependencies automatically. The CrowdConnected SDK AARs (`net.crowdconnected.android.{core,background,geo,ips}`, fetched from CrowdConnected's Maven repository) contribute the foreground-service declaration and the following permissions via Gradle's manifest merger. You do not need to declare them in your host app's `AndroidManifest.xml`: `INTERNET`, `ACCESS_FINE_LOCATION`, `ACCESS_COARSE_LOCATION`, `FOREGROUND_SERVICE`, `FOREGROUND_SERVICE_LOCATION`, `BLUETOOTH_SCAN`, `BLUETOOTH_CONNECT`, and the legacy `BLUETOOTH` / `BLUETOOTH_ADMIN` (`maxSdkVersion=30`).
43
+
44
+ If you set `isBackgroundUpdateEnabled: true`, your host app **must** also declare:
45
+
46
+ ```xml
47
+ <!-- AndroidManifest.xml -->
48
+ <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
49
+ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
50
+ ```
51
+
52
+ `ACCESS_BACKGROUND_LOCATION` cannot be granted from the standard runtime prompt on Android 11+; the system redirects the user to the app's settings screen, where they must select "Allow all the time".
43
53
 
44
54
  ## Quick Start
45
55
 
@@ -84,7 +94,7 @@ unsubscribeError();
84
94
 
85
95
  ## API Reference
86
96
 
87
- ### `setup(settings: ExpoFpLocationSettings): Promise<string>`
97
+ ### `setup(settings: ExpoFpLocationSettings): Promise<ExpoFpProviderInfo>`
88
98
 
89
99
  Initializes the CrowdConnected SDK with configuration.
90
100
 
@@ -98,25 +108,25 @@ Initializes the CrowdConnected SDK with configuration.
98
108
  - `isHeadingEnabled` - Enable compass/heading tracking
99
109
  - `aliases?` - Custom location aliases (optional)
100
110
 
101
- **Returns:** Promise resolving to initialization status
111
+ **Returns:** Promise resolving to `ExpoFpProviderInfo` (`{ deviceId?, isLocationUpdating }`)
102
112
 
103
113
  ---
104
114
 
105
- ### `startUpdatingLocation(): void`
115
+ ### `startUpdatingLocation(): Promise<ExpoFpProviderInfo>`
106
116
 
107
117
  Starts location tracking.
108
118
 
109
119
  ---
110
120
 
111
- ### `stopUpdatingLocation(): void`
121
+ ### `stopUpdatingLocation(): Promise<ExpoFpProviderInfo>`
112
122
 
113
123
  Stops location tracking.
114
124
 
115
125
  ---
116
126
 
117
- ### `isLocationUpdating(): Promise<boolean>`
127
+ ### `isLocationUpdating(): Promise<ExpoFpProviderInfo>`
118
128
 
119
- Checks if location tracking is currently active.
129
+ Returns the current provider state.
120
130
 
121
131
  ---
122
132
 
@@ -165,5 +175,5 @@ yarn prepare
165
175
  ## Support
166
176
 
167
177
  - 📖 [Documentation](https://developer.expofp.com)
168
- - 🐛 [Report Issues](https://github.com/expofp/react-native-crowdconnected/issues)
169
- - 💬 [Discussions](https://github.com/expofp/react-native-crowdconnected/discussions)
178
+ - 🐛 [Report Issues](https://github.com/expofp/react-native-efp-crowdconnected/issues)
179
+ - 💬 [Discussions](https://github.com/expofp/react-native-efp-crowdconnected/discussions)
@@ -80,8 +80,8 @@ dependencies {
80
80
  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2"
81
81
  implementation "androidx.fragment:fragment-ktx:1.6.2"
82
82
 
83
- implementation "net.crowdconnected.android.core:android-core:2.1.3"
84
- implementation "net.crowdconnected.android.ips:android-ips:2.1.3"
85
- implementation "net.crowdconnected.android.geo:android-geo:2.1.3"
86
- implementation "net.crowdconnected.android.background:android-background:2.1.3"
83
+ implementation "net.crowdconnected.android.core:android-core:3.0.0"
84
+ implementation "net.crowdconnected.android.ips:android-ips:3.0.0"
85
+ implementation "net.crowdconnected.android.geo:android-geo:3.0.0"
86
+ implementation "net.crowdconnected.android.background:android-background:3.0.0"
87
87
  }
@@ -25,11 +25,18 @@ enum class ExpoFpCrowdConnectedNavigationType {
25
25
 
26
26
  /**
27
27
  * Settings for CrowdConnected location provider
28
- * Maps to ExpoFpLocationSettings TypeScript interface
28
+ * Maps to ExpoFpLocationSettings TypeScript interface.
29
+ *
30
+ * Note: since CrowdConnected SDK v3.0.0, the authentication scheme changed.
31
+ * The JS-facing fields `token` and `secret` are kept for API compatibility, but
32
+ * internally they are passed to the v3 SDK as `clientId` and `clientSecret`
33
+ * via `Configuration.builder().withCredentials(appKey, token, secret)`.
29
34
  */
30
35
  data class ExpoFpCrowdConnectedLocationProviderSettings(
31
36
  val appKey: String,
37
+ /** Passed to CrowdConnected v3 SDK as client ID (exposed as `token` in JS for backward compatibility). */
32
38
  val token: String,
39
+ /** Passed to CrowdConnected v3 SDK as client secret (exposed as `secret` in JS for backward compatibility). */
33
40
  val secret: String,
34
41
  val navigationType: ExpoFpCrowdConnectedNavigationType = ExpoFpCrowdConnectedNavigationType.ALL,
35
42
  val isBackgroundUpdateEnabled: Boolean = false,
@@ -2,7 +2,6 @@ package com.expofpcrowdconnected
2
2
 
3
3
  import com.facebook.react.bridge.Arguments
4
4
  import com.facebook.react.bridge.WritableMap
5
- import net.crowdconnected.android.core.LocationType
6
5
 
7
6
  /**
8
7
  * Floor type - can be either an index (number) or a name (string)
@@ -58,7 +57,7 @@ data class ExpoFpPosition(
58
57
  * Position data mapping: IPS has x/y, GEO has lat/lng, both are mutually exclusive
59
58
  */
60
59
  fun fromCrowdConnected(
61
- locationType: LocationType?,
60
+ locationType: String?,
62
61
  xPixels: Double?,
63
62
  yPixels: Double?,
64
63
  floor: Int?,
@@ -67,7 +66,7 @@ data class ExpoFpPosition(
67
66
  angle: Double? = null
68
67
  ): ExpoFpPosition {
69
68
  val z: ExpoFpFloorType? = floor?.let { ExpoFpFloorType.Index(it) }
70
- val type = locationType?.toString()?.uppercase().orEmpty()
69
+ val type = locationType?.uppercase().orEmpty()
71
70
 
72
71
  return when (type) {
73
72
  "IPS" -> ExpoFpPosition(
@@ -27,10 +27,12 @@ import kotlinx.coroutines.launch
27
27
  import kotlinx.coroutines.sync.Mutex
28
28
  import kotlinx.coroutines.sync.withLock
29
29
  import kotlinx.coroutines.withContext
30
- import net.crowdconnected.android.core.CrowdConnected
31
- import net.crowdconnected.android.core.StatusCallback
30
+ import net.crowdconnected.android.core.Callback
32
31
  import net.crowdconnected.android.core.Configuration
33
- import net.crowdconnected.android.core.ConfigurationBuilder
32
+ import net.crowdconnected.android.core.CrowdConnected
33
+ import net.crowdconnected.android.core.ErrorCode
34
+ import net.crowdconnected.android.core.Location
35
+ import net.crowdconnected.android.background.BackgroundModule
34
36
  import net.crowdconnected.android.geo.GeoModule
35
37
  import net.crowdconnected.android.ips.IPSModule
36
38
 
@@ -403,20 +405,31 @@ class RCTCrowdConnectedLocationProviderModule(
403
405
  }
404
406
  }
405
407
 
406
- // Build CrowdConnected configuration
407
- val statusCallback = object : StatusCallback {
408
- override fun onStartUpSuccess() {
409
- Log.d(TAG, "StatusCallback: SDK startup successful")
408
+ // Build CrowdConnected v3 Callback: combines startup status and location updates
409
+ val callback = object : Callback {
410
+ override fun onStartSuccess(deviceId: String) {
411
+ Log.d(TAG, "Callback.onStartSuccess, deviceId=$deviceId")
410
412
  cancelTimeoutJob()
411
- registerPositionCallback()
412
- CrowdConnected.getInstance()?.getDeviceId()?.let {
413
- providerInfo = providerInfo.copy(deviceId = it)
413
+ providerInfo = providerInfo.copy(deviceId = deviceId)
414
+
415
+ // setAlias is only reachable after start succeeds — getInstance() is null before this.
416
+ if (currentSettings.aliases.isNotEmpty()) {
417
+ val cc = CrowdConnected.getInstance()
418
+ if (cc != null) {
419
+ Log.d(TAG, "Applying ${currentSettings.aliases.size} aliases")
420
+ currentSettings.aliases.forEach { (key, value) ->
421
+ runCatching { cc.setAlias(key, value) }
422
+ .onFailure { Log.w(TAG, "setAlias failed for key=$key: ${it.message}") }
423
+ }
424
+ }
414
425
  }
415
426
  }
416
427
 
417
- override fun onStartUpFailure(reason: String) {
418
- Log.e(TAG, "StatusCallback: SDK startup failed: $reason")
419
- sendErrorEvent("StartUp Failure: $reason")
428
+ override fun onStartFailure(errorCode: ErrorCode) {
429
+ cancelTimeoutJob()
430
+ val message = runCatching { errorCode.message }.getOrNull() ?: errorCode.name
431
+ Log.e(TAG, "Callback.onStartFailure: $message")
432
+ sendErrorEvent("StartUp Failure: $message")
420
433
  moduleScope.launch {
421
434
  mutex.withLock {
422
435
  stopUpdatingLocationInternal()
@@ -424,17 +437,39 @@ class RCTCrowdConnectedLocationProviderModule(
424
437
  }
425
438
  }
426
439
 
427
- override fun onRuntimeError(error: String) {
428
- Log.e(TAG, "StatusCallback: Runtime error: $error")
429
- sendErrorEvent("Runtime Error: $error")
440
+ override fun onUpdateLocation(location: Location) {
441
+ if (!providerInfo.isLocationUpdating) return
442
+ // SDK may deliver updates from a background thread — hop to main for state writes.
443
+ moduleScope.launch {
444
+ val angle = azimuthProvider?.azimuth
445
+ val expoFpPosition = ExpoFpPosition.fromCrowdConnected(
446
+ // v3 SDK obfuscates LocationType class — pass its toString() to keep
447
+ // our wrapper free of any reference to internal SDK types.
448
+ locationType = location.locationType?.toString(),
449
+ xPixels = location.xPixels,
450
+ yPixels = location.yPixels,
451
+ floor = location.floor,
452
+ latitude = location.latitude,
453
+ longitude = location.longitude,
454
+ angle = angle
455
+ )
456
+ currentPosition = expoFpPosition
457
+ sendLocationEvent(expoFpPosition)
458
+ }
430
459
  }
431
460
  }
432
461
 
433
- val builder = ConfigurationBuilder()
434
- .withAppKey(currentSettings.appKey)
435
- .withToken(currentSettings.token)
436
- .withSecret(currentSettings.secret)
437
- .withStatusCallback(statusCallback)
462
+ val app = reactApplicationContext.applicationContext as Application
463
+ val builder = Configuration.builder()
464
+ .withContext(app)
465
+ // v3 SDK credentials — JS-level `token`/`secret` fields are passed through
466
+ // as the SDK's clientId/clientSecret for backward-compatible API.
467
+ .withCredentials(
468
+ currentSettings.appKey,
469
+ currentSettings.token,
470
+ currentSettings.secret
471
+ )
472
+ .withCallback(callback)
438
473
 
439
474
  // Add modules based on navigation type
440
475
  when (currentSettings.navigationType) {
@@ -450,9 +485,11 @@ class RCTCrowdConnectedLocationProviderModule(
450
485
  }
451
486
  }
452
487
 
453
- // Set foreground service notification if background updates are enabled
488
+ // BackgroundModule is required. Without it v3 silently stays in FOREGROUND mode
489
+ // and withForegroundServiceConfig is ignored.
454
490
  if (currentSettings.isBackgroundUpdateEnabled) {
455
- builder.withServiceNotificationInfo(
491
+ builder.addModule(BackgroundModule())
492
+ builder.withForegroundServiceConfig(
456
493
  NOTIFICATION_TITLE,
457
494
  NOTIFICATION_ICON
458
495
  )
@@ -463,22 +500,13 @@ class RCTCrowdConnectedLocationProviderModule(
463
500
  // Start timeout job before starting SDK
464
501
  startTimeoutJob(promise)
465
502
 
466
- // Start CrowdConnected SDK
503
+ // Start CrowdConnected SDK (v3: static, context passed via withContext above)
467
504
  try {
468
- val app = reactApplicationContext.applicationContext as Application
469
- CrowdConnected.start(app, config)
505
+ CrowdConnected.start(config)
470
506
 
471
507
  Log.i(TAG, "CrowdConnected SDK start initiated")
472
508
  isStarted = true
473
509
 
474
- // Apply aliases
475
- if (currentSettings.aliases.isNotEmpty()) {
476
- Log.d(TAG, "Applying ${currentSettings.aliases.size} aliases")
477
- currentSettings.aliases.forEach { (key, value) ->
478
- CrowdConnected.getInstance()?.setAlias(key, value)
479
- }
480
- }
481
-
482
510
  promise.resolve(providerInfo.toWritableMap())
483
511
  } catch (e: Exception) {
484
512
  Log.e(TAG, "CrowdConnected SDK start failed with exception", e)
@@ -505,17 +533,10 @@ class RCTCrowdConnectedLocationProviderModule(
505
533
  isStarted = false
506
534
  providerInfo = providerInfo.copy(isLocationUpdating = false)
507
535
 
508
- // Deregister position callback
509
- Log.d(TAG, "stopUpdatingLocationInternal: Deregistering position callback")
510
- CrowdConnected.getInstance()?.deregisterPositionCallback()
511
-
512
- // Stop CrowdConnected SDK
513
- try {
514
- Log.d(TAG, "stopUpdatingLocationInternal: Stopping CrowdConnected SDK")
515
- CrowdConnected.getInstance()?.stop()
516
- } catch (e: Exception) {
517
- Log.e(TAG, "stopUpdatingLocationInternal: Error stopping CrowdConnected SDK", e)
518
- }
536
+ // Stop CrowdConnected SDK (v3: static, idempotent — wrap for safety)
537
+ Log.d(TAG, "stopUpdatingLocationInternal: Stopping CrowdConnected SDK")
538
+ runCatching { CrowdConnected.stop() }
539
+ .onFailure { Log.e(TAG, "stopUpdatingLocationInternal: Error stopping SDK", it) }
519
540
 
520
541
  // Stop azimuth provider
521
542
  if (azimuthProvider != null) {
@@ -528,31 +549,6 @@ class RCTCrowdConnectedLocationProviderModule(
528
549
  Log.i(TAG, "stopUpdatingLocationInternal: Location updates stopped")
529
550
  }
530
551
 
531
- /**
532
- * Register callback for position updates from CrowdConnected SDK
533
- */
534
- private fun registerPositionCallback() {
535
- CrowdConnected.getInstance()?.registerPositionCallback { position ->
536
- // Ensure we're on the main thread for React Native event emission
537
- moduleScope.launch {
538
- val angle = azimuthProvider?.azimuth
539
-
540
- val expoFpPosition = ExpoFpPosition.fromCrowdConnected(
541
- locationType = position.locationType,
542
- xPixels = position.xPixels,
543
- yPixels = position.yPixels,
544
- floor = position.floor,
545
- latitude = position.latitude,
546
- longitude = position.longitude,
547
- angle = angle
548
- )
549
-
550
- currentPosition = expoFpPosition
551
- sendLocationEvent(expoFpPosition)
552
- }
553
- }
554
- }
555
-
556
552
  /**
557
553
  * Send location change event to JavaScript
558
554
  */
@@ -11,21 +11,16 @@ import CrowdConnectedCore
11
11
  /// Settings for `ExpoFpCrowdConnectedLocationProvider` initialization.
12
12
  struct ExpoFpCrowdConnectedLocationProviderSettings {
13
13
 
14
- /// Authentication credentials: `AppKey`, `Token`, `Secret`.
15
- ///
16
- /// For `AppKey` [register here](https://app.crowdconnected.com/register).
17
- ///
18
- /// For more information use [Tokens gude](https://customer.support.crowdconnected.com/servicedesk/customer/article/2888139205).
19
- let credentials: SDKCredentials
14
+ let credentials: Credentials
20
15
 
21
- /// Navigation type to enable.
22
- let navigationType: ExpoFpCrowdConnectedNavigationType
16
+ /// SDK Configuration containing authentication Credentials and tracking mode.
17
+ let configuration: Configuration
23
18
 
24
- /// Tracking mode: `foregroundOnly` or `foregroundAndBackground`.
25
- let trackingMode: LocationTrackingMode
19
+ /// Navigation type to enable.
20
+ var modules: [Module] { configuration.modules }
26
21
 
27
- /// Enables CrowdConnected CoreBluetooth positioning.
28
- let isBluetoothEnabled: Bool
22
+ /// Tracking mode: `foreground` or `background`.
23
+ var trackingMode: LocationTrackingMode { configuration.trackingMode }
29
24
 
30
25
  /// Enables 'heading' on the map using build-in native CoreLocation tools.
31
26
  let isHeadingEnabled: Bool
@@ -39,21 +34,39 @@ struct ExpoFpCrowdConnectedLocationProviderSettings {
39
34
  let appKey = settings.appKey.replacingOccurrences(of: " ", with: "")
40
35
  if appKey.isEmpty { throw ExpoFpError.locationProviderError(message: Self.message(for: .missingAppKey)) }
41
36
 
42
- let token = settings.token.replacingOccurrences(of: " ", with: "")
43
- if token.isEmpty { throw ExpoFpError.locationProviderError(message: Self.message(for: .missingToken)) }
37
+ let clientId = settings.token.replacingOccurrences(of: " ", with: "")
38
+ if clientId.isEmpty { throw ExpoFpError.locationProviderError(message: Self.message(for: .missingToken)) }
39
+
40
+ let clientSecret = settings.secret.replacingOccurrences(of: " ", with: "")
41
+ if clientSecret.isEmpty { throw ExpoFpError.locationProviderError(message: Self.message(for: .missingSecret)) }
42
+
43
+ self.credentials = Credentials(appKey: appKey, clientId: clientId, clientSecret: clientSecret)
44
44
 
45
- let secret = settings.secret.replacingOccurrences(of: " ", with: "")
46
- if secret.isEmpty { throw ExpoFpError.locationProviderError(message: Self.message(for: .missingSecret)) }
45
+ var modules: [Module] = switch settings.navigationType {
46
+ case .all: [.geo, .ips]
47
+ case .geo: [.geo]
48
+ case .ips: [.ips]
49
+ }
50
+
51
+ if settings.isBluetoothEnabled {
52
+ modules.append(.coreBluetooth)
53
+ }
54
+
55
+ let trackingMode: LocationTrackingMode = settings.isBackgroundUpdateEnabled ? .background : .foreground
56
+
57
+ if modules.isEmpty || (modules.count == 1 && modules.first == .coreBluetooth) {
58
+ throw ExpoFpError.locationProviderError(message: Self.message(for: .noModulesAreActive))
59
+ }
47
60
 
48
- self.credentials = SDKCredentials(appKey: appKey, token: token, secret: secret)
61
+ if modules.contains(where: \.isBluetoothEnabled) { try Self.checkBluetoothPermissions() }
49
62
 
50
- let trackingMode = settings.isBackgroundUpdateEnabled ? LocationTrackingMode.foregroundAndBackground : .foregroundOnly
51
63
  try Self.checkLocationPermissions(for: trackingMode)
52
- self.trackingMode = trackingMode
53
- self.navigationType = settings.navigationType
54
64
 
55
- if settings.isBluetoothEnabled { try Self.checkBluetoothPermissions() }
56
- self.isBluetoothEnabled = settings.isBluetoothEnabled
65
+ self.configuration = Configuration(
66
+ credentials: credentials,
67
+ modules: modules,
68
+ trackingMode: trackingMode
69
+ )
57
70
 
58
71
  self.isHeadingEnabled = settings.isHeadingEnabled
59
72
  self.aliases = settings.aliases ?? [:]
@@ -87,7 +100,7 @@ struct ExpoFpCrowdConnectedLocationProviderSettings {
87
100
  }
88
101
  }
89
102
 
90
- private static func message(for result: CrowdConnectedValidationResult) -> String {
103
+ private static func message(for result: ErrorCode) -> String {
91
104
  result.description
92
105
  }
93
106
 
@@ -1,5 +1,5 @@
1
1
  //
2
- // LocationTrackingMode+Extensions.swift
2
+ // CrowdConnected+Extensions.swift
3
3
  // ExpoFpCrowdConnected
4
4
  //
5
5
  // Created by Nikita Kolesnikov on 24.09.2025.
@@ -9,8 +9,9 @@
9
9
  import CrowdConnectedCore
10
10
 
11
11
  extension LocationTrackingMode {
12
+ var isAllowedInBackground: Bool { self == .background }
13
+ }
12
14
 
13
- var isAllowedInBackground: Bool {
14
- self == .foregroundAndBackground
15
- }
15
+ extension Module {
16
+ var isBluetoothEnabled: Bool { self == .coreBluetooth }
16
17
  }
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>AvailableLibraries</key>
6
+ <array>
7
+ <dict>
8
+ <key>BinaryPath</key>
9
+ <string>CrowdConnectedCore.framework/CrowdConnectedCore</string>
10
+ <key>LibraryIdentifier</key>
11
+ <string>ios-arm64</string>
12
+ <key>LibraryPath</key>
13
+ <string>CrowdConnectedCore.framework</string>
14
+ <key>SupportedArchitectures</key>
15
+ <array>
16
+ <string>arm64</string>
17
+ </array>
18
+ <key>SupportedPlatform</key>
19
+ <string>ios</string>
20
+ </dict>
21
+ <dict>
22
+ <key>BinaryPath</key>
23
+ <string>CrowdConnectedCore.framework/CrowdConnectedCore</string>
24
+ <key>LibraryIdentifier</key>
25
+ <string>ios-arm64_x86_64-simulator</string>
26
+ <key>LibraryPath</key>
27
+ <string>CrowdConnectedCore.framework</string>
28
+ <key>SupportedArchitectures</key>
29
+ <array>
30
+ <string>arm64</string>
31
+ <string>x86_64</string>
32
+ </array>
33
+ <key>SupportedPlatform</key>
34
+ <string>ios</string>
35
+ <key>SupportedPlatformVariant</key>
36
+ <string>simulator</string>
37
+ </dict>
38
+ </array>
39
+ <key>CFBundlePackageType</key>
40
+ <string>XFWK</string>
41
+ <key>XCFrameworkFormatVersion</key>
42
+ <string>1.0</string>
43
+ </dict>
44
+ </plist>