@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.
- package/ExpofpCrowdconnected.podspec +5 -5
- package/README.md +23 -13
- package/android/build.gradle +4 -4
- package/android/src/main/java/com/expofpcrowdconnected/ExpoFpCrowdConnectedLocationProviderSettings.kt +8 -1
- package/android/src/main/java/com/expofpcrowdconnected/ExpoFpPosition.kt +2 -3
- package/android/src/main/java/com/expofpcrowdconnected/RCTCrowdConnectedLocationProviderModule.kt +66 -70
- package/ios/ExpoFpLocationProvider/ExpoFpCrowdConnectedLocationProviderSettings.swift +36 -23
- package/ios/Extensions/{LocationTrackingMode+Extensions.swift → CrowdConnected+Extensions.swift} +5 -4
- package/ios/Frameworks/CrowdConnectedCore.xcframework/Info.plist +44 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/CrowdConnectedCore +0 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Headers/CrowdConnectedCore-Swift.h +767 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Headers/CrowdConnectedCore.h +15 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.abi.json +8032 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.private.swiftinterface +162 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.swiftinterface +162 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/PrivacyInfo.xcprivacy +36 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/_CodeSignature/CodeResources +201 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/CrowdConnectedCore +0 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Headers/CrowdConnectedCore-Swift.h +1530 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Headers/CrowdConnectedCore.h +15 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.abi.json +8032 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +162 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.swiftinterface +162 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.abi.json +8032 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +162 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +162 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/PrivacyInfo.xcprivacy +36 -0
- package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/_CodeSignature/CodeResources +256 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/Info.plist +44 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/CrowdConnectedCoreBluetooth +0 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth-Swift.h +329 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth.h +11 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.abi.json +296 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.private.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/PrivacyInfo.xcprivacy +14 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/_CodeSignature/CodeResources +201 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/CrowdConnectedCoreBluetooth +0 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth-Swift.h +654 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Headers/CrowdConnectedCoreBluetooth.h +11 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.abi.json +296 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.abi.json +296 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/PrivacyInfo.xcprivacy +14 -0
- package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/_CodeSignature/CodeResources +256 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/Info.plist +44 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/CrowdConnectedGeo +0 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo-Swift.h +328 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo.h +15 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.abi.json +444 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.private.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/PrivacyInfo.xcprivacy +27 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/_CodeSignature/CodeResources +201 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/CrowdConnectedGeo +0 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo-Swift.h +652 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Headers/CrowdConnectedGeo.h +15 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.abi.json +444 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.abi.json +444 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +16 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/PrivacyInfo.xcprivacy +27 -0
- package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/_CodeSignature/CodeResources +256 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/Info.plist +44 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/CrowdConnectedIPS +0 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS-Swift.h +331 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS.h +15 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.abi.json +1362 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.private.swiftinterface +21 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.swiftinterface +21 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/PrivacyInfo.xcprivacy +23 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/_CodeSignature/CodeResources +201 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/CrowdConnectedIPS +0 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS-Swift.h +658 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Headers/CrowdConnectedIPS.h +15 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.abi.json +1362 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +21 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.swiftinterface +21 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.abi.json +1362 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +21 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +21 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/PrivacyInfo.xcprivacy +23 -0
- package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/_CodeSignature/CodeResources +256 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/Info.plist +44 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/CrowdConnectedShared +0 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Headers/CrowdConnectedShared-Swift.h +322 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Headers/CrowdConnectedShared.h +9 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.abi.json +17142 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.private.swiftinterface +501 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.swiftinterface +501 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/PrivacyInfo.xcprivacy +23 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/_CodeSignature/CodeResources +201 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/CrowdConnectedShared +0 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Headers/CrowdConnectedShared-Swift.h +640 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Headers/CrowdConnectedShared.h +9 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Info.plist +0 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.abi.json +17142 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +501 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftinterface +501 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.abi.json +17142 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +501 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +501 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/module.modulemap +11 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/PrivacyInfo.xcprivacy +23 -0
- package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/_CodeSignature/CodeResources +256 -0
- package/ios/RCTCrowdConnectedLocationProvider.swift +69 -101
- 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.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
-
|
|
22
|
-
- React
|
|
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
|
-
|
|
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<
|
|
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
|
|
111
|
+
**Returns:** Promise resolving to `ExpoFpProviderInfo` (`{ deviceId?, isLocationUpdating }`)
|
|
102
112
|
|
|
103
113
|
---
|
|
104
114
|
|
|
105
|
-
### `startUpdatingLocation():
|
|
115
|
+
### `startUpdatingLocation(): Promise<ExpoFpProviderInfo>`
|
|
106
116
|
|
|
107
117
|
Starts location tracking.
|
|
108
118
|
|
|
109
119
|
---
|
|
110
120
|
|
|
111
|
-
### `stopUpdatingLocation():
|
|
121
|
+
### `stopUpdatingLocation(): Promise<ExpoFpProviderInfo>`
|
|
112
122
|
|
|
113
123
|
Stops location tracking.
|
|
114
124
|
|
|
115
125
|
---
|
|
116
126
|
|
|
117
|
-
### `isLocationUpdating(): Promise<
|
|
127
|
+
### `isLocationUpdating(): Promise<ExpoFpProviderInfo>`
|
|
118
128
|
|
|
119
|
-
|
|
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)
|
package/android/build.gradle
CHANGED
|
@@ -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:
|
|
84
|
-
implementation "net.crowdconnected.android.ips:android-ips:
|
|
85
|
-
implementation "net.crowdconnected.android.geo:android-geo:
|
|
86
|
-
implementation "net.crowdconnected.android.background:android-background:
|
|
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:
|
|
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?.
|
|
69
|
+
val type = locationType?.uppercase().orEmpty()
|
|
71
70
|
|
|
72
71
|
return when (type) {
|
|
73
72
|
"IPS" -> ExpoFpPosition(
|
package/android/src/main/java/com/expofpcrowdconnected/RCTCrowdConnectedLocationProviderModule.kt
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
|
407
|
-
val
|
|
408
|
-
override fun
|
|
409
|
-
Log.d(TAG, "
|
|
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
|
-
|
|
412
|
-
|
|
413
|
-
|
|
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
|
|
418
|
-
|
|
419
|
-
|
|
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
|
|
428
|
-
|
|
429
|
-
|
|
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
|
|
434
|
-
|
|
435
|
-
.
|
|
436
|
-
|
|
437
|
-
.
|
|
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
|
-
//
|
|
488
|
+
// BackgroundModule is required. Without it v3 silently stays in FOREGROUND mode
|
|
489
|
+
// and withForegroundServiceConfig is ignored.
|
|
454
490
|
if (currentSettings.isBackgroundUpdateEnabled) {
|
|
455
|
-
builder.
|
|
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
|
-
|
|
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
|
-
//
|
|
509
|
-
Log.d(TAG, "stopUpdatingLocationInternal:
|
|
510
|
-
CrowdConnected.
|
|
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
|
-
|
|
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
|
-
///
|
|
22
|
-
let
|
|
16
|
+
/// SDK Configuration containing authentication Credentials and tracking mode.
|
|
17
|
+
let configuration: Configuration
|
|
23
18
|
|
|
24
|
-
///
|
|
25
|
-
|
|
19
|
+
/// Navigation type to enable.
|
|
20
|
+
var modules: [Module] { configuration.modules }
|
|
26
21
|
|
|
27
|
-
///
|
|
28
|
-
|
|
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
|
|
43
|
-
if
|
|
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
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
|
|
56
|
-
|
|
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:
|
|
103
|
+
private static func message(for result: ErrorCode) -> String {
|
|
91
104
|
result.description
|
|
92
105
|
}
|
|
93
106
|
|
package/ios/Extensions/{LocationTrackingMode+Extensions.swift → CrowdConnected+Extensions.swift}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//
|
|
2
|
-
//
|
|
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
|
-
|
|
14
|
-
|
|
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>
|