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

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 (91) hide show
  1. package/ExpofpCrowdconnected.podspec +1 -1
  2. package/README.md +67 -5
  3. package/android/build.gradle +4 -4
  4. package/android/src/main/java/com/expofpcrowdconnected/ExpoFpCrowdConnectedLocationProviderSettings.kt +24 -20
  5. package/android/src/main/java/com/expofpcrowdconnected/RCTCrowdConnectedLocationProviderModule.kt +112 -6
  6. package/ios/ExpoFpLocationProvider/ExpoFpCrowdConnectedLocationProviderSettings.swift +2 -2
  7. package/ios/ExpoFpLocationProvider/ExpoFpLocationSettings.swift +2 -2
  8. package/ios/ExpoFpLocationProvider/ExpoFpSimulationDelegate.swift +40 -0
  9. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/CrowdConnectedCore +0 -0
  10. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Headers/CrowdConnectedCore-Swift.h +48 -0
  11. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Info.plist +0 -0
  12. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.abi.json +731 -363
  13. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.private.swiftinterface +13 -8
  14. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  15. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios.swiftinterface +12 -7
  16. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64/CrowdConnectedCore.framework/_CodeSignature/CodeResources +13 -13
  17. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/CrowdConnectedCore +0 -0
  18. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Headers/CrowdConnectedCore-Swift.h +96 -0
  19. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Info.plist +0 -0
  20. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.abi.json +731 -363
  21. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +13 -8
  22. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  23. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/arm64-apple-ios-simulator.swiftinterface +12 -7
  24. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.abi.json +731 -363
  25. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +13 -8
  26. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  27. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/Modules/CrowdConnectedCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +12 -7
  28. package/ios/Frameworks/CrowdConnectedCore.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCore.framework/_CodeSignature/CodeResources +23 -23
  29. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/CrowdConnectedCoreBluetooth +0 -0
  30. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios.abi.json +10 -10
  31. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64/CrowdConnectedCoreBluetooth.framework/_CodeSignature/CodeResources +4 -4
  32. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/CrowdConnectedCoreBluetooth +0 -0
  33. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/arm64-apple-ios-simulator.abi.json +10 -10
  34. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/Modules/CrowdConnectedCoreBluetooth.swiftmodule/x86_64-apple-ios-simulator.abi.json +10 -10
  35. package/ios/Frameworks/CrowdConnectedCoreBluetooth.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedCoreBluetooth.framework/_CodeSignature/CodeResources +8 -8
  36. package/ios/Frameworks/CrowdConnectedGeo.xcframework/Info.plist +5 -5
  37. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/CrowdConnectedGeo +0 -0
  38. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.abi.json +142 -33
  39. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.private.swiftinterface +7 -0
  40. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios.swiftinterface +7 -0
  41. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64/CrowdConnectedGeo.framework/_CodeSignature/CodeResources +8 -8
  42. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/CrowdConnectedGeo +0 -0
  43. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.abi.json +142 -33
  44. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +7 -0
  45. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/arm64-apple-ios-simulator.swiftinterface +7 -0
  46. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.abi.json +142 -33
  47. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +7 -0
  48. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/Modules/CrowdConnectedGeo.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +7 -0
  49. package/ios/Frameworks/CrowdConnectedGeo.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedGeo.framework/_CodeSignature/CodeResources +16 -16
  50. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/CrowdConnectedIPS +0 -0
  51. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.abi.json +251 -113
  52. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.private.swiftinterface +7 -2
  53. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  54. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios.swiftinterface +7 -2
  55. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64/CrowdConnectedIPS.framework/_CodeSignature/CodeResources +10 -10
  56. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/CrowdConnectedIPS +0 -0
  57. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.abi.json +251 -113
  58. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +7 -2
  59. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  60. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/arm64-apple-ios-simulator.swiftinterface +7 -2
  61. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.abi.json +251 -113
  62. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +7 -2
  63. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  64. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/Modules/CrowdConnectedIPS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +7 -2
  65. package/ios/Frameworks/CrowdConnectedIPS.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedIPS.framework/_CodeSignature/CodeResources +20 -20
  66. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/CrowdConnectedShared +0 -0
  67. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.abi.json +904 -235
  68. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.private.swiftinterface +33 -3
  69. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  70. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios.swiftinterface +31 -3
  71. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64/CrowdConnectedShared.framework/_CodeSignature/CodeResources +10 -10
  72. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/CrowdConnectedShared +0 -0
  73. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.abi.json +904 -235
  74. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +33 -3
  75. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  76. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftinterface +31 -3
  77. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.abi.json +904 -235
  78. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +33 -3
  79. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  80. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +31 -3
  81. package/ios/Frameworks/CrowdConnectedShared.xcframework/ios-arm64_x86_64-simulator/CrowdConnectedShared.framework/_CodeSignature/CodeResources +20 -20
  82. package/ios/RCTCrowdConnectedLocationProvider.m +3 -0
  83. package/ios/RCTCrowdConnectedLocationProvider.swift +21 -3
  84. package/lib/module/crowdconnected-location-provider-native-module.js +30 -0
  85. package/lib/module/crowdconnected-location-provider-native-module.js.map +1 -1
  86. package/lib/typescript/src/crowdconnected-location-provider-native-module.d.ts.map +1 -1
  87. package/lib/typescript/src/types.d.ts +31 -2
  88. package/lib/typescript/src/types.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/src/crowdconnected-location-provider-native-module.tsx +51 -0
  91. package/src/types.ts +33 -2
@@ -6,13 +6,11 @@ import CoreLocation
6
6
  import CoreMotion
7
7
  @_exported import CrowdConnectedShared
8
8
  import Foundation
9
- import OSLog
10
9
  import Swift
11
10
  import UIKit
12
11
  import _Concurrency
13
12
  import _StringProcessing
14
13
  import _SwiftConcurrencyShims
15
- import os
16
14
  @_hasMissingDesignatedInitializers public class MainLogger {
17
15
  public enum LogTag : Swift.String {
18
16
  case IPS
@@ -28,6 +26,8 @@ import os
28
26
  get
29
27
  }
30
28
  }
29
+ @_spi(CoreSDK) public static func addLogger(_ logger: any CrowdConnectedShared.LoggerProtocol)
30
+ @_spi(CoreSDK) public static func removeLogger(_ logger: any CrowdConnectedShared.LoggerProtocol)
31
31
  public static func reset()
32
32
  public static func log(level: CrowdConnectedShared.LogLevel, message: @autoclosure () -> Swift.String)
33
33
  #if compiler(>=5.3) && $NonescapableTypes
@@ -96,7 +96,7 @@ public enum ReactiveNotification : Swift.String {
96
96
  public static func getSeconds() -> Swift.Double
97
97
  @objc deinit
98
98
  }
99
- public protocol LoggerProtocol {
99
+ public protocol LoggerProtocol : AnyObject {
100
100
  func log(level: CrowdConnectedShared.LogLevel, message: @autoclosure () -> Swift.String)
101
101
  }
102
102
  public enum LogLevel : Swift.String, Swift.CaseIterable {
@@ -218,6 +218,36 @@ public protocol ReactiveNotificationsProtocol {
218
218
  extension CrowdConnectedShared.ReactiveNotificationsProtocol {
219
219
  public func post(notification: CrowdConnectedShared.ReactiveNotification)
220
220
  }
221
+ public protocol GpsSimulationSink : AnyObject {
222
+ #if compiler(>=5.3) && $NonescapableTypes
223
+ func injectLocation(lat: Swift.Double, lng: Swift.Double, accuracyMetres: Swift.Float, surfaceId: Swift.String?)
224
+ #endif
225
+ func onSimulationStarted()
226
+ func onSimulationStopped()
227
+ }
228
+ public protocol IpsSimulationSink : AnyObject {
229
+ #if compiler(>=5.3) && $NonescapableTypes
230
+ func injectIpsPosition(xMetres: Swift.Double, yMetres: Swift.Double, latitude: Swift.Double, longitude: Swift.Double, surfaceId: Swift.String?)
231
+ #endif
232
+ func onSimulationStarted()
233
+ func onSimulationStopped()
234
+ }
235
+ extension CrowdConnectedShared.IpsSimulationSink {
236
+ public func onSimulationStarted()
237
+ public func onSimulationStopped()
238
+ }
239
+ @_hasMissingDesignatedInitializers final public class SimulationSinkRegistry {
240
+ public static let shared: CrowdConnectedShared.SimulationSinkRegistry
241
+ final public func register(gpsSink: any CrowdConnectedShared.GpsSimulationSink)
242
+ final public func register(ipsSink: any CrowdConnectedShared.IpsSimulationSink)
243
+ final public var gpsSinks: [any CrowdConnectedShared.GpsSimulationSink] {
244
+ get
245
+ }
246
+ final public var ipsSinks: [any CrowdConnectedShared.IpsSimulationSink] {
247
+ get
248
+ }
249
+ @objc deinit
250
+ }
221
251
  public enum DataType {
222
252
  case positions
223
253
  case steps
@@ -6,13 +6,11 @@ import CoreLocation
6
6
  import CoreMotion
7
7
  @_exported import CrowdConnectedShared
8
8
  import Foundation
9
- import OSLog
10
9
  import Swift
11
10
  import UIKit
12
11
  import _Concurrency
13
12
  import _StringProcessing
14
13
  import _SwiftConcurrencyShims
15
- import os
16
14
  @_hasMissingDesignatedInitializers public class MainLogger {
17
15
  public enum LogTag : Swift.String {
18
16
  case IPS
@@ -96,7 +94,7 @@ public enum ReactiveNotification : Swift.String {
96
94
  public static func getSeconds() -> Swift.Double
97
95
  @objc deinit
98
96
  }
99
- public protocol LoggerProtocol {
97
+ public protocol LoggerProtocol : AnyObject {
100
98
  func log(level: CrowdConnectedShared.LogLevel, message: @autoclosure () -> Swift.String)
101
99
  }
102
100
  public enum LogLevel : Swift.String, Swift.CaseIterable {
@@ -218,6 +216,36 @@ public protocol ReactiveNotificationsProtocol {
218
216
  extension CrowdConnectedShared.ReactiveNotificationsProtocol {
219
217
  public func post(notification: CrowdConnectedShared.ReactiveNotification)
220
218
  }
219
+ public protocol GpsSimulationSink : AnyObject {
220
+ #if compiler(>=5.3) && $NonescapableTypes
221
+ func injectLocation(lat: Swift.Double, lng: Swift.Double, accuracyMetres: Swift.Float, surfaceId: Swift.String?)
222
+ #endif
223
+ func onSimulationStarted()
224
+ func onSimulationStopped()
225
+ }
226
+ public protocol IpsSimulationSink : AnyObject {
227
+ #if compiler(>=5.3) && $NonescapableTypes
228
+ func injectIpsPosition(xMetres: Swift.Double, yMetres: Swift.Double, latitude: Swift.Double, longitude: Swift.Double, surfaceId: Swift.String?)
229
+ #endif
230
+ func onSimulationStarted()
231
+ func onSimulationStopped()
232
+ }
233
+ extension CrowdConnectedShared.IpsSimulationSink {
234
+ public func onSimulationStarted()
235
+ public func onSimulationStopped()
236
+ }
237
+ @_hasMissingDesignatedInitializers final public class SimulationSinkRegistry {
238
+ public static let shared: CrowdConnectedShared.SimulationSinkRegistry
239
+ final public func register(gpsSink: any CrowdConnectedShared.GpsSimulationSink)
240
+ final public func register(ipsSink: any CrowdConnectedShared.IpsSimulationSink)
241
+ final public var gpsSinks: [any CrowdConnectedShared.GpsSimulationSink] {
242
+ get
243
+ }
244
+ final public var ipsSinks: [any CrowdConnectedShared.IpsSimulationSink] {
245
+ get
246
+ }
247
+ @objc deinit
248
+ }
221
249
  public enum DataType {
222
250
  case positions
223
251
  case steps
@@ -18,43 +18,43 @@
18
18
  </data>
19
19
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
20
20
  <data>
21
- sTxMwgzj8lPg1mReAjh4O8sU//Y=
21
+ uau7f/3Vz0hJNktZ/bkzbkiZDlI=
22
22
  </data>
23
23
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
24
24
  <data>
25
- 1xwVvqvupU0VuIr+Wdq68t3Z48g=
25
+ 2vIX4a5yNqlBNqfmSB2MErLjor8=
26
26
  </data>
27
27
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
28
28
  <data>
29
- aKl69gJlyfJgPOwqSecKI0+pSLQ=
29
+ VpHecnPJWdv2OS9oMTRGlbzh2II=
30
30
  </data>
31
31
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
32
32
  <data>
33
- 1xwVvqvupU0VuIr+Wdq68t3Z48g=
33
+ pPspbA8Onp5rhdM2gseNDXSozEg=
34
34
  </data>
35
35
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
36
36
  <data>
37
- ISWOUR3+UekY0g7gRDhmj6/XL4E=
37
+ wOJ6SBuH1DX9HKUstvgXVRw7ipk=
38
38
  </data>
39
39
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
40
40
  <data>
41
- sTxMwgzj8lPg1mReAjh4O8sU//Y=
41
+ uau7f/3Vz0hJNktZ/bkzbkiZDlI=
42
42
  </data>
43
43
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
44
44
  <data>
45
- oYzveTaCQIPTsboWSeE230LKzFw=
45
+ IfLPayhiHgBjrjgtoQE5tj4n0ec=
46
46
  </data>
47
47
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
48
48
  <data>
49
- 2wKVgX9bf9smcxWt4qsXnZdAKWs=
49
+ EbV7ljdIOz4e8LL7k5lU8lXNuVE=
50
50
  </data>
51
51
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
52
52
  <data>
53
- oYzveTaCQIPTsboWSeE230LKzFw=
53
+ aHww4OCYx5ETgZa1TLwCy+5voBg=
54
54
  </data>
55
55
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
56
56
  <data>
57
- O1zUVkGeWC1cX19VF+jf8uzJ4gQ=
57
+ /6N2rSJoTTPO+d0Z5Ru5ezQ1y0A=
58
58
  </data>
59
59
  <key>Modules/module.modulemap</key>
60
60
  <data>
@@ -85,70 +85,70 @@
85
85
  <dict>
86
86
  <key>hash2</key>
87
87
  <data>
88
- sNd7Hk2lscuh1Yt9hHShRBZ9YqDxEL5g/iHQgassUEY=
88
+ te085sWS+WhL+33KNE1tYzK5gXChiYUsBinOG2w8Rpg=
89
89
  </data>
90
90
  </dict>
91
91
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
92
92
  <dict>
93
93
  <key>hash2</key>
94
94
  <data>
95
- Tdy2qCUxF6/ZTSNuRXl1QaXiOHTZec1V/necN8JL6O0=
95
+ 2cTal7jExi1WIBwp3ljGnPSfbFI/ZhTz30saU+8Rs2o=
96
96
  </data>
97
97
  </dict>
98
98
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
99
99
  <dict>
100
100
  <key>hash2</key>
101
101
  <data>
102
- BOGVkcsgr5O7OGxcF5TOvhin/sckbTxurCWs2PPSmM4=
102
+ IBb5dcKR3v5ijt3kdy6GBixlubN97lb8QzX36z96ihQ=
103
103
  </data>
104
104
  </dict>
105
105
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
106
106
  <dict>
107
107
  <key>hash2</key>
108
108
  <data>
109
- Tdy2qCUxF6/ZTSNuRXl1QaXiOHTZec1V/necN8JL6O0=
109
+ 3gzEup1lKbHDv2MQTaiA4EH43m4qLNzw6XShREAeaNs=
110
110
  </data>
111
111
  </dict>
112
112
  <key>Modules/CrowdConnectedShared.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
113
113
  <dict>
114
114
  <key>hash2</key>
115
115
  <data>
116
- 2wJf6A/acINqIPFZTZRUl7FdE57i7YrAtsT3nGCCs3s=
116
+ q3U/Ads/N/FxbPDubnaPzuWwKC14otW37h/zJhdCCN0=
117
117
  </data>
118
118
  </dict>
119
119
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
120
120
  <dict>
121
121
  <key>hash2</key>
122
122
  <data>
123
- sNd7Hk2lscuh1Yt9hHShRBZ9YqDxEL5g/iHQgassUEY=
123
+ te085sWS+WhL+33KNE1tYzK5gXChiYUsBinOG2w8Rpg=
124
124
  </data>
125
125
  </dict>
126
126
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
127
127
  <dict>
128
128
  <key>hash2</key>
129
129
  <data>
130
- bZYHt8JOi1bFPyXa4sQDSBtwvNuLNke6S/Q5uyYCW4w=
130
+ P2AERyX3vJwnbGCPy7DoEFfwr+jVwr/AY0uEFsG0RkQ=
131
131
  </data>
132
132
  </dict>
133
133
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
134
134
  <dict>
135
135
  <key>hash2</key>
136
136
  <data>
137
- 1rYNe+Fpfip+mXfFbBcLITC/eVl2ynZs99pdQa1JXQ8=
137
+ 87x+SwGnShAyhT4vW6vYZt/Z72BBhXhW+HPSGATA8RQ=
138
138
  </data>
139
139
  </dict>
140
140
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
141
141
  <dict>
142
142
  <key>hash2</key>
143
143
  <data>
144
- bZYHt8JOi1bFPyXa4sQDSBtwvNuLNke6S/Q5uyYCW4w=
144
+ GhnntxtbQbnxupRL6i3D8UU0mdQTIMAgCicePG2/QRw=
145
145
  </data>
146
146
  </dict>
147
147
  <key>Modules/CrowdConnectedShared.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
148
148
  <dict>
149
149
  <key>hash2</key>
150
150
  <data>
151
- GoF71vKwzmwf86ms1mTvGnR4nnme5at5s9xqZaDOwlc=
151
+ JyNv7MvPg5JrZPNsO6HmzTysCo6IbS5XDf0JS2iG2LA=
152
152
  </data>
153
153
  </dict>
154
154
  <key>Modules/module.modulemap</key>
@@ -20,5 +20,8 @@ RCT_EXTERN_METHOD(setup:(nonnull NSDictionary *)settings
20
20
  RCT_EXTERN_METHOD(startUpdatingLocation:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
21
21
  RCT_EXTERN_METHOD(stopUpdatingLocation:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
22
22
  RCT_EXTERN_METHOD(isLocationUpdating:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
23
+ RCT_EXTERN_METHOD(activateSimulation:(nonnull NSString *)token)
24
+ RCT_EXTERN_METHOD(deactivateSimulation)
25
+ RCT_EXTERN_METHOD(setLowPowerMode:(nonnull NSNumber *)enabled)
23
26
 
24
27
  @end
@@ -23,6 +23,11 @@ class RCTCrowdConnectedLocationProvider: RCTEventEmitter, @MainActor CLLocationM
23
23
  private let locationEventName = "onLocationChange"
24
24
  private let locationErrorName = "onLocationError"
25
25
 
26
+ private let simulationDelegate = ExpoFpSimulationDelegate()
27
+ let onSimulationConnectedName = "onSimulationConnected"
28
+ let onSimulationDisconnectedName = "onSimulationDisconnected"
29
+ let onSimulationErrorName = "onSimulationError"
30
+
26
31
  private var updatingResolver: RCTPromiseResolveBlock?
27
32
  private var updatingRejecter: RCTPromiseRejectBlock?
28
33
 
@@ -45,7 +50,7 @@ class RCTCrowdConnectedLocationProvider: RCTEventEmitter, @MainActor CLLocationM
45
50
  // MARK: - Methods
46
51
 
47
52
  override func supportedEvents() -> [String] {
48
- [locationEventName, locationErrorName]
53
+ [locationEventName, locationErrorName, onSimulationConnectedName, onSimulationDisconnectedName, onSimulationErrorName]
49
54
  }
50
55
 
51
56
  @objc override static func requiresMainQueueSetup() -> Bool { true }
@@ -64,8 +69,7 @@ class RCTCrowdConnectedLocationProvider: RCTEventEmitter, @MainActor CLLocationM
64
69
 
65
70
  ccLocationManager.delegate = self
66
71
  clLocationManager.delegate = self
67
-
68
- settings.aliases.forEach(ccLocationManager.setAlias)
72
+ simulationDelegate.provider = self
69
73
 
70
74
  isLocationUpdating
71
75
  ? startUpdatingLocation(resolve, rejecter: reject)
@@ -115,6 +119,18 @@ class RCTCrowdConnectedLocationProvider: RCTEventEmitter, @MainActor CLLocationM
115
119
  (try? providerInfo.toDict()).map(resolve)
116
120
  }
117
121
 
122
+ @objc func activateSimulation(_ token: String) {
123
+ ccLocationManager.activateSimulation(token: token, callback: simulationDelegate)
124
+ }
125
+
126
+ @objc func deactivateSimulation() {
127
+ ccLocationManager.deactivateSimulation()
128
+ }
129
+
130
+ @objc func setLowPowerMode(_ enabled: NSNumber) {
131
+ print("[ExpoFP]: `setLowPowerMode(\(enabled.boolValue))` for Android devices only!")
132
+ }
133
+
118
134
  func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
119
135
  guard position != ExpoFpPosition() else { return }
120
136
  position = position.updateHeading(newHeading: newHeading.trueHeading)
@@ -192,6 +208,8 @@ extension RCTCrowdConnectedLocationProvider: @MainActor CrowdConnectedDelegate {
192
208
  clLocationManager.startUpdatingHeading()
193
209
  }
194
210
 
211
+ settings.aliases.forEach(ccLocationManager.setAlias)
212
+
195
213
  (try? providerInfo.toDict()).map { updatingResolver?($0) }
196
214
  updatingResolver = nil
197
215
  updatingRejecter = nil
@@ -16,6 +16,9 @@ export const CrowdConnectedLocationProvider = {
16
16
  startUpdatingLocation: RCTCrowdConnectedLocationProviderNativeModule.startUpdatingLocation,
17
17
  stopUpdatingLocation: RCTCrowdConnectedLocationProviderNativeModule.stopUpdatingLocation,
18
18
  isLocationUpdating: RCTCrowdConnectedLocationProviderNativeModule.isLocationUpdating,
19
+ activateSimulation: RCTCrowdConnectedLocationProviderNativeModule.activateSimulation,
20
+ deactivateSimulation: RCTCrowdConnectedLocationProviderNativeModule.deactivateSimulation,
21
+ setLowPowerMode: RCTCrowdConnectedLocationProviderNativeModule.setLowPowerMode,
19
22
  onLocationChange: callback => {
20
23
  const onLocationChange = location => {
21
24
  callback(location);
@@ -33,6 +36,33 @@ export const CrowdConnectedLocationProvider = {
33
36
  return () => {
34
37
  errorListener.remove();
35
38
  };
39
+ },
40
+ onSimulationConnected: callback => {
41
+ const onSimulationConnected = () => {
42
+ callback();
43
+ };
44
+ const locationListener = nativeEventEmitter.addListener("onSimulationConnected", onSimulationConnected);
45
+ return () => {
46
+ locationListener.remove();
47
+ };
48
+ },
49
+ onSimulationDisconnected: callback => {
50
+ const onSimulationDisconnected = () => {
51
+ callback();
52
+ };
53
+ const locationListener = nativeEventEmitter.addListener("onSimulationDisconnected", onSimulationDisconnected);
54
+ return () => {
55
+ locationListener.remove();
56
+ };
57
+ },
58
+ onSimulationError: callback => {
59
+ const onSimulationError = error => {
60
+ callback(new Error(error));
61
+ };
62
+ const errorListener = nativeEventEmitter.addListener("onSimulationError", onSimulationError);
63
+ return () => {
64
+ errorListener.remove();
65
+ };
36
66
  }
37
67
  };
38
68
  //# sourceMappingURL=crowdconnected-location-provider-native-module.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","NativeModules","RCTCrowdConnectedLocationProvider","nativeEventEmitter","RCTCrowdConnectedLocationProviderNativeModule","CrowdConnectedLocationProvider","setup","startUpdatingLocation","stopUpdatingLocation","isLocationUpdating","onLocationChange","callback","location","locationListener","addListener","remove","onError","onLocationError","error","Error","errorListener"],"sourceRoot":"../../src","sources":["crowdconnected-location-provider-native-module.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,aAAa,QAAQ,cAAc;AAChE,MAAM;EAAEC;AAAkC,CAAC,GAAGD,aAAa;AAQ3D,MAAME,kBAAkB,GAAG,IAAIH,kBAAkB,CAC/CE,iCACF,CAAC;;AAED;AACA,OAAO,MAAME,6CAA6C,GACxDF,iCAAgF;;AAElF;AACA;AACA,OAAO,MAAMG,8BAA+D,GAAG;EAC7EC,KAAK,EAAEF,6CAA6C,CAACE,KAAK;EAC1DC,qBAAqB,EACnBH,6CAA6C,CAACG,qBAAqB;EACrEC,oBAAoB,EAClBJ,6CAA6C,CAACI,oBAAoB;EACpEC,kBAAkB,EAChBL,6CAA6C,CAACK,kBAAkB;EAClEC,gBAAgB,EAAGC,QAAQ,IAAK;IAC9B,MAAMD,gBAAgB,GAAIE,QAAwB,IAAK;MACrDD,QAAQ,CAACC,QAAQ,CAAC;IACpB,CAAC;IAED,MAAMC,gBAAgB,GAAGV,kBAAkB,CAACW,WAAW,CACrD,kBAAkB,EAClBJ,gBACF,CAAC;IAED,OAAO,MAAM;MACXG,gBAAgB,CAACE,MAAM,CAAC,CAAC;IAC3B,CAAC;EACH,CAAC;EAEDC,OAAO,EAAGL,QAAQ,IAAK;IACrB,MAAMM,eAAe,GAAIC,KAAa,IAAK;MACzCP,QAAQ,CAAC,IAAIQ,KAAK,CAACD,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAME,aAAa,GAAGjB,kBAAkB,CAACW,WAAW,CAClD,iBAAiB,EACjBG,eACF,CAAC;IAED,OAAO,MAAM;MACXG,aAAa,CAACL,MAAM,CAAC,CAAC;IACxB,CAAC;EACH;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","NativeModules","RCTCrowdConnectedLocationProvider","nativeEventEmitter","RCTCrowdConnectedLocationProviderNativeModule","CrowdConnectedLocationProvider","setup","startUpdatingLocation","stopUpdatingLocation","isLocationUpdating","activateSimulation","deactivateSimulation","setLowPowerMode","onLocationChange","callback","location","locationListener","addListener","remove","onError","onLocationError","error","Error","errorListener","onSimulationConnected","onSimulationDisconnected","onSimulationError"],"sourceRoot":"../../src","sources":["crowdconnected-location-provider-native-module.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,aAAa,QAAQ,cAAc;AAChE,MAAM;EAAEC;AAAkC,CAAC,GAAGD,aAAa;AAQ3D,MAAME,kBAAkB,GAAG,IAAIH,kBAAkB,CAC/CE,iCACF,CAAC;;AAED;AACA,OAAO,MAAME,6CAA6C,GACxDF,iCAAgF;;AAElF;AACA;AACA,OAAO,MAAMG,8BAA+D,GAAG;EAC7EC,KAAK,EAAEF,6CAA6C,CAACE,KAAK;EAC1DC,qBAAqB,EACnBH,6CAA6C,CAACG,qBAAqB;EACrEC,oBAAoB,EAClBJ,6CAA6C,CAACI,oBAAoB;EACpEC,kBAAkB,EAChBL,6CAA6C,CAACK,kBAAkB;EAClEC,kBAAkB,EAChBN,6CAA6C,CAACM,kBAAkB;EAClEC,oBAAoB,EAClBP,6CAA6C,CAACO,oBAAoB;EACpEC,eAAe,EACbR,6CAA6C,CAACQ,eAAe;EAC/DC,gBAAgB,EAAGC,QAAQ,IAAK;IAC9B,MAAMD,gBAAgB,GAAIE,QAAwB,IAAK;MACrDD,QAAQ,CAACC,QAAQ,CAAC;IACpB,CAAC;IAED,MAAMC,gBAAgB,GAAGb,kBAAkB,CAACc,WAAW,CACrD,kBAAkB,EAClBJ,gBACF,CAAC;IAED,OAAO,MAAM;MACXG,gBAAgB,CAACE,MAAM,CAAC,CAAC;IAC3B,CAAC;EACH,CAAC;EAEDC,OAAO,EAAGL,QAAQ,IAAK;IACrB,MAAMM,eAAe,GAAIC,KAAa,IAAK;MACzCP,QAAQ,CAAC,IAAIQ,KAAK,CAACD,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAME,aAAa,GAAGpB,kBAAkB,CAACc,WAAW,CAClD,iBAAiB,EACjBG,eACF,CAAC;IAED,OAAO,MAAM;MACXG,aAAa,CAACL,MAAM,CAAC,CAAC;IACxB,CAAC;EACH,CAAC;EAEDM,qBAAqB,EAAGV,QAAQ,IAAK;IACnC,MAAMU,qBAAqB,GAAGA,CAAA,KAAM;MAClCV,QAAQ,CAAC,CAAC;IACZ,CAAC;IAED,MAAME,gBAAgB,GAAGb,kBAAkB,CAACc,WAAW,CACrD,uBAAuB,EACvBO,qBACF,CAAC;IAED,OAAO,MAAM;MACXR,gBAAgB,CAACE,MAAM,CAAC,CAAC;IAC3B,CAAC;EACH,CAAC;EAEDO,wBAAwB,EAAGX,QAAQ,IAAK;IACtC,MAAMW,wBAAwB,GAAGA,CAAA,KAAM;MACrCX,QAAQ,CAAC,CAAC;IACZ,CAAC;IAED,MAAME,gBAAgB,GAAGb,kBAAkB,CAACc,WAAW,CACrD,0BAA0B,EAC1BQ,wBACF,CAAC;IAED,OAAO,MAAM;MACXT,gBAAgB,CAACE,MAAM,CAAC,CAAC;IAC3B,CAAC;EACH,CAAC;EAEDQ,iBAAiB,EAAGZ,QAAQ,IAAK;IAC/B,MAAMY,iBAAiB,GAAIL,KAAa,IAAK;MAC3CP,QAAQ,CAAC,IAAIQ,KAAK,CAACD,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAME,aAAa,GAAGpB,kBAAkB,CAACc,WAAW,CAClD,mBAAmB,EACnBS,iBACF,CAAC;IAED,OAAO,MAAM;MACXH,aAAa,CAACL,MAAM,CAAC,CAAC;IACxB,CAAC;EACH;AACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"crowdconnected-location-provider-native-module.d.ts","sourceRoot":"","sources":["../../../src/crowdconnected-location-provider-native-module.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAEhC,MAAM,SAAS,CAAC;AAOjB,eAAO,MAAM,6CAA6C,EACnB,2CAA2C,CAAC;AAInF,eAAO,MAAM,8BAA8B,EAAE,+BAqC5C,CAAC"}
1
+ {"version":3,"file":"crowdconnected-location-provider-native-module.d.ts","sourceRoot":"","sources":["../../../src/crowdconnected-location-provider-native-module.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAEhC,MAAM,SAAS,CAAC;AAOjB,eAAO,MAAM,6CAA6C,EACnB,2CAA2C,CAAC;AAInF,eAAO,MAAM,8BAA8B,EAAE,+BAwF5C,CAAC"}
@@ -3,6 +3,9 @@ export interface ICrowdConnectedLocationProviderNativeModule {
3
3
  startUpdatingLocation(): Promise<ExpoFpProviderInfo>;
4
4
  stopUpdatingLocation(): Promise<ExpoFpProviderInfo>;
5
5
  isLocationUpdating(): Promise<ExpoFpProviderInfo>;
6
+ activateSimulation(token: string): void;
7
+ deactivateSimulation(): void;
8
+ setLowPowerMode(enabled: boolean): void;
6
9
  }
7
10
  export interface ICrowdConnectedLocationProvider {
8
11
  setup(settings: ExpoFpLocationSettings): Promise<ExpoFpProviderInfo>;
@@ -11,18 +14,44 @@ export interface ICrowdConnectedLocationProvider {
11
14
  isLocationUpdating(): Promise<ExpoFpProviderInfo>;
12
15
  onLocationChange(callback: LocationUpdateCallback): Unsubscribe;
13
16
  onError(callback: ErrorCallback): Unsubscribe;
17
+ /**
18
+ * Starts a simulation session that replays GPS/IPS paths on the device
19
+ * without physical movement.
20
+ *
21
+ * The SDK must already be started (`startUpdatingLocation()`) before calling
22
+ * this. A second call replaces any existing session.
23
+ *
24
+ * @param token A signed JWT containing the `sid` (session ID) and `exp` claims.
25
+ */
26
+ activateSimulation(token: string): void;
27
+ /** Stops the active simulation session. */
28
+ deactivateSimulation(): void;
29
+ /**
30
+ * Manually toggles low-power GPS mode at runtime. `true` drops to a
31
+ * low-frequency, battery-saving mode; `false` restores high-frequency
32
+ * navigation mode.
33
+ *
34
+ * The SDK must already be started (`startUpdatingLocation()`); otherwise this
35
+ * is a safe no-op.
36
+ */
37
+ setLowPowerMode(enabled: boolean): void;
38
+ onSimulationConnected(callback: VoidCallback): Unsubscribe;
39
+ onSimulationDisconnected(callback: VoidCallback): Unsubscribe;
40
+ onSimulationError(callback: ErrorCallback): Unsubscribe;
14
41
  }
15
42
  export type Unsubscribe = () => void;
16
43
  export type LocationUpdateCallback = (location: ExpoFpPosition) => void;
44
+ export type VoidCallback = () => void;
17
45
  export type ErrorCallback = (e: Error) => void;
18
46
  export interface ExpoFpLocationSettings {
19
47
  appKey: string;
20
- token: string;
21
- secret: string;
48
+ clientId: string;
49
+ clientSecret: string;
22
50
  navigationType: "all" | "GEO" | "IPS";
23
51
  isBackgroundUpdateEnabled: boolean;
24
52
  isBluetoothEnabled: boolean;
25
53
  isHeadingEnabled: boolean;
54
+ isLowPowerModeEnabled?: boolean;
26
55
  aliases?: Record<string, string>;
27
56
  }
28
57
  export type ExpoFpPosition = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,2CAA2C;IAC1D,KAAK,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,WAAW,CAAC;IAChE,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,CAAC;CAC/C;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACtC,yBAAyB,EAAE,OAAO,CAAC;IACnC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAGD,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,2CAA2C;IAC1D,KAAK,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,oBAAoB,IAAI,IAAI,CAAC;IAC7B,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,WAAW,CAAC;IAChE,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,CAAC;IAE9C;;;;;;;;OAQG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,2CAA2C;IAC3C,oBAAoB,IAAI,IAAI,CAAC;IAE7B;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,CAAC;IAC3D,wBAAwB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,CAAC;IAC9D,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,CAAC;CACzD;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;AACtC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACtC,yBAAyB,EAAE,OAAO,CAAC;IACnC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAGD,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/react-native-efp-crowdconnected",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "React Native wrapper for ExpoFP around CrowdConnected SDK",
5
5
  "keywords": [
6
6
  "react-native",
@@ -25,6 +25,12 @@ export const CrowdConnectedLocationProvider: ICrowdConnectedLocationProvider = {
25
25
  RCTCrowdConnectedLocationProviderNativeModule.stopUpdatingLocation,
26
26
  isLocationUpdating:
27
27
  RCTCrowdConnectedLocationProviderNativeModule.isLocationUpdating,
28
+ activateSimulation:
29
+ RCTCrowdConnectedLocationProviderNativeModule.activateSimulation,
30
+ deactivateSimulation:
31
+ RCTCrowdConnectedLocationProviderNativeModule.deactivateSimulation,
32
+ setLowPowerMode:
33
+ RCTCrowdConnectedLocationProviderNativeModule.setLowPowerMode,
28
34
  onLocationChange: (callback) => {
29
35
  const onLocationChange = (location: ExpoFpPosition) => {
30
36
  callback(location);
@@ -54,4 +60,49 @@ export const CrowdConnectedLocationProvider: ICrowdConnectedLocationProvider = {
54
60
  errorListener.remove();
55
61
  };
56
62
  },
63
+
64
+ onSimulationConnected: (callback) => {
65
+ const onSimulationConnected = () => {
66
+ callback();
67
+ };
68
+
69
+ const locationListener = nativeEventEmitter.addListener(
70
+ "onSimulationConnected",
71
+ onSimulationConnected,
72
+ );
73
+
74
+ return () => {
75
+ locationListener.remove();
76
+ };
77
+ },
78
+
79
+ onSimulationDisconnected: (callback) => {
80
+ const onSimulationDisconnected = () => {
81
+ callback();
82
+ };
83
+
84
+ const locationListener = nativeEventEmitter.addListener(
85
+ "onSimulationDisconnected",
86
+ onSimulationDisconnected,
87
+ );
88
+
89
+ return () => {
90
+ locationListener.remove();
91
+ };
92
+ },
93
+
94
+ onSimulationError: (callback) => {
95
+ const onSimulationError = (error: string) => {
96
+ callback(new Error(error));
97
+ };
98
+
99
+ const errorListener = nativeEventEmitter.addListener(
100
+ "onSimulationError",
101
+ onSimulationError,
102
+ );
103
+
104
+ return () => {
105
+ errorListener.remove();
106
+ };
107
+ },
57
108
  };
package/src/types.ts CHANGED
@@ -6,6 +6,9 @@ export interface ICrowdConnectedLocationProviderNativeModule {
6
6
  startUpdatingLocation(): Promise<ExpoFpProviderInfo>;
7
7
  stopUpdatingLocation(): Promise<ExpoFpProviderInfo>;
8
8
  isLocationUpdating(): Promise<ExpoFpProviderInfo>;
9
+ activateSimulation(token: string): void;
10
+ deactivateSimulation(): void;
11
+ setLowPowerMode(enabled: boolean): void;
9
12
  }
10
13
 
11
14
  export interface ICrowdConnectedLocationProvider {
@@ -15,21 +18,49 @@ export interface ICrowdConnectedLocationProvider {
15
18
  isLocationUpdating(): Promise<ExpoFpProviderInfo>;
16
19
  onLocationChange(callback: LocationUpdateCallback): Unsubscribe;
17
20
  onError(callback: ErrorCallback): Unsubscribe;
21
+
22
+ /**
23
+ * Starts a simulation session that replays GPS/IPS paths on the device
24
+ * without physical movement.
25
+ *
26
+ * The SDK must already be started (`startUpdatingLocation()`) before calling
27
+ * this. A second call replaces any existing session.
28
+ *
29
+ * @param token A signed JWT containing the `sid` (session ID) and `exp` claims.
30
+ */
31
+ activateSimulation(token: string): void;
32
+ /** Stops the active simulation session. */
33
+ deactivateSimulation(): void;
34
+
35
+ /**
36
+ * Manually toggles low-power GPS mode at runtime. `true` drops to a
37
+ * low-frequency, battery-saving mode; `false` restores high-frequency
38
+ * navigation mode.
39
+ *
40
+ * The SDK must already be started (`startUpdatingLocation()`); otherwise this
41
+ * is a safe no-op.
42
+ */
43
+ setLowPowerMode(enabled: boolean): void;
44
+ onSimulationConnected(callback: VoidCallback): Unsubscribe;
45
+ onSimulationDisconnected(callback: VoidCallback): Unsubscribe;
46
+ onSimulationError(callback: ErrorCallback): Unsubscribe;
18
47
  }
19
48
 
20
49
  export type Unsubscribe = () => void;
21
50
 
22
51
  export type LocationUpdateCallback = (location: ExpoFpPosition) => void;
52
+ export type VoidCallback = () => void;
23
53
  export type ErrorCallback = (e: Error) => void;
24
54
 
25
55
  export interface ExpoFpLocationSettings {
26
56
  appKey: string;
27
- token: string;
28
- secret: string;
57
+ clientId: string;
58
+ clientSecret: string;
29
59
  navigationType: "all" | "GEO" | "IPS";
30
60
  isBackgroundUpdateEnabled: boolean;
31
61
  isBluetoothEnabled: boolean;
32
62
  isHeadingEnabled: boolean;
63
+ isLowPowerModeEnabled?: boolean;
33
64
  aliases?: Record<string, string>;
34
65
  }
35
66