@woosmap/react-native-plugin-geofencing 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,7 +60,7 @@ dependencies {
60
60
  implementation 'com.google.android.gms:play-services-location:21.0.1'
61
61
  implementation 'com.google.code.gson:gson:2.8.8'
62
62
  implementation "com.github.woosmap:geofencing-core-android-sdk:core_geofence_2.+"
63
- implementation("com.webgeoservices.woosmapgeofencing:woosmap-mobile-sdk:3.0.12")
63
+ implementation("com.webgeoservices.woosmapgeofencing:woosmap-mobile-sdk:4.+")
64
64
  implementation 'com.google.android.gms:play-services-maps:18.1.0'
65
65
  implementation 'androidx.room:room-runtime:2.2.4'
66
66
  annotationProcessor 'androidx.room:room-compiler:2.2.4'
@@ -9,6 +9,7 @@ import android.util.Log;
9
9
 
10
10
  import androidx.annotation.NonNull;
11
11
  import androidx.annotation.RequiresApi;
12
+ import androidx.appcompat.app.AppCompatActivity;
12
13
  import androidx.core.app.ActivityCompat;
13
14
 
14
15
  import com.facebook.react.bridge.Callback;
@@ -42,7 +43,9 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
42
43
  private ReactApplicationContext reactContext;
43
44
  private Woosmap woosmap;
44
45
  private static final int PERMISSIONS_REQUEST_CODE = 150; // random request code
46
+ private static final int BLE_PERMISSIONS_REQUEST_CODE = 160;
45
47
  private Promise mPermissionsRequestPromise;
48
+ private Promise mBLEPermissionsRequestPromise;
46
49
  private WoosLocationReadyListener locationReadyListener;
47
50
  private WoosRegionReadyListener regionReadyListener;
48
51
 
@@ -88,6 +91,8 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
88
91
  trackingProfile = Woosmap.ConfigurationProfile.passiveTracking;
89
92
  } else if (map.getString(WoosmapMessageAndKey.profileTrackingKey).equals(Woosmap.ConfigurationProfile.visitsTracking)) {
90
93
  trackingProfile = Woosmap.ConfigurationProfile.visitsTracking;
94
+ } else if (map.getString(WoosmapMessageAndKey.profileTrackingKey).equals(Woosmap.ConfigurationProfile.beaconTracking)) {
95
+ trackingProfile = Woosmap.ConfigurationProfile.beaconTracking;
91
96
  } else {
92
97
  promise.reject(WoosmapMessageAndKey.errorCode, WoosmapMessageAndKey.invalidProfileTrackingError);
93
98
  return;
@@ -107,6 +112,10 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
107
112
  this.woosmap.createWoosmapNotifChannel();
108
113
  }
109
114
  this.woosmap.onResume();
115
+ //Add region listener
116
+ regionReadyListener = new WoosRegionReadyListener(getReactApplicationContext());
117
+ woosmap.setRegionLogReadyListener(regionReadyListener);
118
+ woosmap.setRegionReadyListener(regionReadyListener);
110
119
  if (!trackingProfile.isEmpty()) {
111
120
  woosmap.startTracking(trackingProfile);
112
121
  }
@@ -161,6 +170,32 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
161
170
  }
162
171
  }
163
172
 
173
+ /***
174
+ * Requests Bluetooth permissions.
175
+ * @param promise React native callback context.
176
+ */
177
+ @ReactMethod
178
+ public void requestBLEPermissions(Promise promise){
179
+ try{
180
+ if (promise == null) {
181
+ return;
182
+ }
183
+ PermissionAwareActivity activity = (PermissionAwareActivity) getCurrentActivity();
184
+ if (activity == null) {
185
+ promise.resolve(WoosmapMessageAndKey.unknownMessage);
186
+ return;
187
+ }
188
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
189
+ mBLEPermissionsRequestPromise = promise;
190
+ activity.requestPermissions(new String[]{Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH}, BLE_PERMISSIONS_REQUEST_CODE, this);
191
+ }else{
192
+ promise.resolve(WoosmapMessageAndKey.backgroundPermissionGrantedMessage);
193
+ }
194
+ }
195
+ catch (Exception ex){
196
+ promise.reject(WoosmapMessageAndKey.errorCode, ex.getMessage(), ex);
197
+ }
198
+ }
164
199
 
165
200
  @Override
166
201
  public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
@@ -168,9 +203,50 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
168
203
  providePermissionStatus(mPermissionsRequestPromise);
169
204
  mPermissionsRequestPromise = null;
170
205
  }
206
+ if (requestCode == BLE_PERMISSIONS_REQUEST_CODE && mBLEPermissionsRequestPromise != null) {
207
+ provideBLEPermissionStatus(mBLEPermissionsRequestPromise);
208
+ mBLEPermissionsRequestPromise = null;
209
+ }
171
210
  return true;
172
211
  }
173
212
 
213
+ /***
214
+ * Provide status of bluetooth permission.
215
+ * @param promise React native callback context.
216
+ */
217
+ private void provideBLEPermissionStatus(final Promise promise){
218
+ if (promise == null) {
219
+ return;
220
+ }
221
+ Activity activity = getCurrentActivity();
222
+ if (activity == null) {
223
+ promise.resolve(WoosmapMessageAndKey.unknownMessage);
224
+ return;
225
+ }
226
+ boolean granted = true;
227
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
228
+ granted = ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_BACKGROUND_LOCATION) == PackageManager.PERMISSION_GRANTED;
229
+ }
230
+ if (granted){
231
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
232
+ granted = ActivityCompat.checkSelfPermission(activity, Manifest.permission.BLUETOOTH_SCAN) == PackageManager.PERMISSION_GRANTED;
233
+ }
234
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
235
+ if (granted){
236
+ granted = ActivityCompat.checkSelfPermission(activity, Manifest.permission.BLUETOOTH_ADMIN) == PackageManager.PERMISSION_GRANTED;
237
+ }
238
+ }
239
+ if (granted) {
240
+ promise.resolve(WoosmapMessageAndKey.blePermissionGrantedMessage);
241
+ } else {
242
+ promise.resolve(WoosmapMessageAndKey.deniedPermissionMessage);
243
+ }
244
+ }
245
+ else{
246
+ promise.resolve(WoosmapMessageAndKey.backgroundPermissionDeniedMessage);
247
+ }
248
+ }
249
+
174
250
  /***
175
251
  * Provide status of foreground and background location permission.
176
252
  * @param promise React native callback context.
@@ -220,6 +296,17 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
220
296
  providePermissionStatus(promise);
221
297
  }
222
298
 
299
+ /***
300
+ * Checks if the required Bluetooth permissions are granted or not.
301
+ * Returns DENIED if no permissions are granted.
302
+ * Returns GRANTED if bluetooth permission is granted.
303
+ * Returns BACKGROUND_LOCATION_DENIED if background location permission is not granted.
304
+ */
305
+ @ReactMethod
306
+ public void getBLEPermissionsStatus(final Promise promise){
307
+ provideBLEPermissionStatus(promise);
308
+ }
309
+
223
310
  /***
224
311
  * Check if the user has given location permission.
225
312
  * @param isBackground Pass true if the background permission needs to be checked.
@@ -315,6 +402,7 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
315
402
  String trackingProfile = data.getString(0);
316
403
  if (trackingProfile.equals(Woosmap.ConfigurationProfile.liveTracking) ||
317
404
  trackingProfile.equals(Woosmap.ConfigurationProfile.passiveTracking) ||
405
+ trackingProfile.equals(Woosmap.ConfigurationProfile.beaconTracking) ||
318
406
  trackingProfile.equals(Woosmap.ConfigurationProfile.visitsTracking)) {
319
407
  woosmap.startTracking(trackingProfile);
320
408
  promise.resolve(WoosmapMessageAndKey.successMessage);
@@ -449,10 +537,8 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
449
537
  public void watchRegions(String watchID, Promise promise) {
450
538
  try {
451
539
  if (isWoosmapInitialized()) {
452
- if (regionReadyListener == null) {
453
- regionReadyListener = new WoosRegionReadyListener(reactContext);
454
- woosmap.setRegionLogReadyListener(regionReadyListener);
455
- woosmap.setRegionReadyListener(regionReadyListener);
540
+ if (!regionReadyListener.getIsRegionWatchEnabled()) {
541
+ regionReadyListener.setIsRegionWatchEnabled(true);
456
542
  promise.resolve(watchID);
457
543
  } else {
458
544
  promise.reject(WoosmapMessageAndKey.errorCode, WoosmapMessageAndKey.regionWatchAlreadyStarted);
@@ -474,10 +560,8 @@ public class PluginGeofencingModule extends ReactContextBaseJavaModule implement
474
560
  @ReactMethod
475
561
  public void clearRegionsWatch(String watchID, Promise promise) {
476
562
  try {
477
- if (regionReadyListener != null) {
478
- woosmap.setRegionLogReadyListener(null);
479
- woosmap.setRegionReadyListener(null);
480
- regionReadyListener = null;
563
+ if (regionReadyListener.getIsRegionWatchEnabled()) {
564
+ regionReadyListener.setIsRegionWatchEnabled(false);
481
565
  promise.resolve(watchID);
482
566
  } else {
483
567
  promise.reject(WoosmapMessageAndKey.errorCode, WoosmapMessageAndKey.regionWatchNotStarted);
@@ -20,9 +20,18 @@ public class WoosRegionReadyListener implements Woosmap.RegionReadyListener,Woos
20
20
 
21
21
  private ReactNativeHost reactNativeHost;
22
22
  private Context context;
23
+ private boolean isRegionWatchEnabled = false;
23
24
  public WoosRegionReadyListener(Context context){
24
25
  this.context=context;
25
26
  }
27
+
28
+ public boolean getIsRegionWatchEnabled(){
29
+ return isRegionWatchEnabled;
30
+ }
31
+
32
+ public void setIsRegionWatchEnabled(boolean value){
33
+ isRegionWatchEnabled = value;
34
+ }
26
35
  private void sendEvent(final String eventName, final Object data) {
27
36
  final ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager();
28
37
  ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
@@ -33,15 +42,17 @@ public class WoosRegionReadyListener implements Woosmap.RegionReadyListener,Woos
33
42
  @Override
34
43
  public void RegionLogReadyCallback(RegionLog regionLog) {
35
44
  try {
36
- ReactApplication reactApplication = ((ReactApplication)context.getApplicationContext());
37
45
  if (WoosmapUtil.getEnableAishipConnector(context)){
38
46
  //Do the airship push here.
39
47
  AirshipPushHelper airshipPushHelper = new AirshipPushHelper(context);
40
48
  HashMap<String, Object> data = airshipPushHelper.getAirshipData(regionLog);
41
49
  airshipPushHelper.pushDataToCloud(data);
42
50
  }
43
- reactNativeHost = reactApplication.getReactNativeHost();
44
- sendEvent(WoosmapMessageAndKey.regionSuccessCallbackName, WoosmapUtil.getRegionWritableMap(regionLog));
51
+ if (isRegionWatchEnabled){
52
+ ReactApplication reactApplication = ((ReactApplication)context.getApplicationContext());
53
+ reactNativeHost = reactApplication.getReactNativeHost();
54
+ sendEvent(WoosmapMessageAndKey.regionSuccessCallbackName, WoosmapUtil.getRegionWritableMap(regionLog));
55
+ }
45
56
  }catch (Exception ex){
46
57
  sendEvent(WoosmapMessageAndKey.regionErrorCallbackName, ex.getMessage());
47
58
  }
@@ -13,6 +13,8 @@ public class WoosmapMessageAndKey {
13
13
  protected static String deniedPermissionMessage="DENIED";
14
14
  protected static String foregroundPermissionGrantedMessage="GRANTED_FOREGROUND";
15
15
  protected static String backgroundPermissionGrantedMessage="GRANTED_BACKGROUND";
16
+ protected static String backgroundPermissionDeniedMessage="BACKGROUND_LOCATION_DENIED";
17
+ protected static String blePermissionGrantedMessage="GRANTED";
16
18
  protected static String woosmapKeyNotProvide="Woosmap API Key not provided";
17
19
  protected static String woosmapNotInitialized="Woosmap not initialized";
18
20
  protected static String trackingProfileNotProvided="Tracking profile is missing";
@@ -48,10 +48,10 @@ import WoosmapGeofencing
48
48
  /// Status of search api On/Off
49
49
  @objc public var searchAPIRequestEnable: Bool {
50
50
  get {
51
- return WoosmapGeofencing.shared.getSearchAPIRequestEnable()
51
+ return WoosmapGeofenceManager.shared.getSearchAPIRequestEnable()
52
52
  }
53
53
  set {
54
- WoosmapGeofencing.shared.setSearchAPIRequestEnable(enable: newValue)
54
+ WoosmapGeofenceManager.shared.setSearchAPIRequestEnable(enable: newValue)
55
55
 
56
56
  }
57
57
  }
@@ -59,10 +59,10 @@ import WoosmapGeofencing
59
59
  /// Status of distance api On/Off
60
60
  @objc public var distanceAPIRequestEnable: Bool {
61
61
  get {
62
- return WoosmapGeofencing.shared.getDistanceAPIRequestEnable()
62
+ return WoosmapGeofenceManager.shared.getDistanceAPIRequestEnable()
63
63
  }
64
64
  set {
65
- WoosmapGeofencing.shared.setDistanceAPIRequestEnable(enable: newValue)
65
+ WoosmapGeofenceManager.shared.setDistanceAPIRequestEnable(enable: newValue)
66
66
 
67
67
  }
68
68
  }
@@ -70,10 +70,10 @@ import WoosmapGeofencing
70
70
  /// status of CreationRegionEnable. On/Off
71
71
  @objc public var searchAPICreationRegionEnable: Bool {
72
72
  get {
73
- return WoosmapGeofencing.shared.getSearchAPICreationRegionEnable()
73
+ return WoosmapGeofenceManager.shared.getSearchAPICreationRegionEnable()
74
74
  }
75
75
  set {
76
- WoosmapGeofencing.shared.setSearchAPICreationRegionEnable(enable: newValue)
76
+ WoosmapGeofenceManager.shared.setSearchAPICreationRegionEnable(enable: newValue)
77
77
 
78
78
  }
79
79
  }
@@ -81,20 +81,20 @@ import WoosmapGeofencing
81
81
  /// Status of HighfrequencyLocation Mode. On/Off
82
82
  @objc public var modeHighfrequencyLocation: Bool {
83
83
  get {
84
- return WoosmapGeofencing.shared.getModeHighfrequencyLocation()
84
+ return WoosmapGeofenceManager.shared.getModeHighfrequencyLocation()
85
85
  }
86
86
  set {
87
- WoosmapGeofencing.shared.setModeHighfrequencyLocation(enable: newValue)
87
+ WoosmapGeofenceManager.shared.setModeHighfrequencyLocation(enable: newValue)
88
88
  }
89
89
  }
90
90
 
91
91
  /// Status of tracking state. On/Off
92
92
  @objc public var trackingState: Bool {
93
93
  get {
94
- return WoosmapGeofencing.shared.getTrackingState()
94
+ return WoosmapGeofenceManager.shared.getTrackingState()
95
95
  }
96
96
  set {
97
- WoosmapGeofencing.shared.setTrackingEnable(enable: newValue)
97
+ WoosmapGeofenceManager.shared.setTrackingEnable(enable: newValue)
98
98
  }
99
99
  }
100
100
 
@@ -103,7 +103,7 @@ import WoosmapGeofencing
103
103
  /// This callback received when application become active
104
104
  @objc func appDidBecomeActive() {
105
105
  DispatchQueue.main.async {
106
- WoosmapGeofencing.shared.didBecomeActive()
106
+ WoosmapGeofenceManager.shared.didBecomeActive()
107
107
  }
108
108
  }
109
109
 
@@ -111,14 +111,14 @@ import WoosmapGeofencing
111
111
  @objc func appDidEnterBackground() {
112
112
  if CLLocationManager.authorizationStatus() != .notDetermined {
113
113
  DispatchQueue.main.async {
114
- WoosmapGeofencing.shared.startMonitoringInBackground()
114
+ WoosmapGeofenceManager.shared.startMonitoringInBackground()
115
115
  }
116
116
  }
117
117
  }
118
118
 
119
119
  /// This callback received when application is terminated
120
120
  @objc func appWillTerminate() {
121
- WoosmapGeofencing.shared.setModeHighfrequencyLocation(enable: false)
121
+ WoosmapGeofenceManager.shared.setModeHighfrequencyLocation(enable: false)
122
122
  }
123
123
  // MARK: Init
124
124
 
@@ -203,7 +203,7 @@ import WoosmapGeofencing
203
203
  let group = DispatchGroup()
204
204
  group.enter()
205
205
  DispatchQueue.main.async {
206
- WoosmapGeofencing.shared.setWoosmapAPIKey(key: self.woosmapKey)
206
+ WoosmapGeofenceManager.shared.setWoosmapAPIKey(key: self.woosmapKey)
207
207
  group.leave()
208
208
  }
209
209
  group.wait()
@@ -220,7 +220,7 @@ import WoosmapGeofencing
220
220
  let group = DispatchGroup()
221
221
  group.enter()
222
222
  DispatchQueue.main.async {
223
- WoosmapGeofencing.shared.startTracking(configurationProfile: savedProfile)
223
+ WoosmapGeofenceManager.shared.startTracking(configurationProfile: savedProfile)
224
224
  group.leave()
225
225
  }
226
226
  group.wait()
@@ -234,47 +234,47 @@ import WoosmapGeofencing
234
234
  defaults.set(self.defaultProfile, forKey: "WoosmapGeofenceService.profile")
235
235
  throw WoosGeofenceError(WoosmapGeofenceMessage.invalidProfile)
236
236
  }
237
- // print ("Highfrequency \(WoosmapGeofencing.shared.getModeHighfrequencyLocation()) , TrackingState \(WoosmapGeofencing.shared.getTrackingState()) ")
237
+ // print ("Highfrequency \(WoosmapGeofenceManager.shared.getModeHighfrequencyLocation()) , TrackingState \(WoosmapGeofenceManager.shared.getTrackingState()) ")
238
238
  }
239
239
 
240
240
  /// Stop tracking
241
241
  public func stopTracking() {
242
- WoosmapGeofencing.shared.stopTracking()
242
+ WoosmapGeofenceManager.shared.stopTracking()
243
243
  }
244
244
 
245
245
  /// activating WoosmapGeofencing with default parameters
246
246
  private func activateGeofenceService() {
247
247
  // Set private Woosmap key API
248
- WoosmapGeofencing.shared.setWoosmapAPIKey(key: woosmapKey)
248
+ WoosmapGeofenceManager.shared.setWoosmapAPIKey(key: woosmapKey)
249
249
 
250
250
  // Set delegate of protocol Location, POI and Distance
251
- WoosmapGeofencing.shared.getLocationService().locationServiceDelegate = dataLocation
252
- WoosmapGeofencing.shared.getLocationService().searchAPIDataDelegate = dataPOI
253
- WoosmapGeofencing.shared.getLocationService().distanceAPIDataDelegate = dataDistance
254
- WoosmapGeofencing.shared.getLocationService().regionDelegate = dataRegion
251
+ WoosmapGeofenceManager.shared.getLocationService().locationServiceDelegate = dataLocation
252
+ WoosmapGeofenceManager.shared.getLocationService().searchAPIDataDelegate = dataPOI
253
+ WoosmapGeofenceManager.shared.getLocationService().distanceAPIDataDelegate = dataDistance
254
+ WoosmapGeofenceManager.shared.getLocationService().regionDelegate = dataRegion
255
255
 
256
256
  // Enable Visit and set delegate of protocol Visit
257
- WoosmapGeofencing.shared.getLocationService().visitDelegate = dataVisit
257
+ WoosmapGeofenceManager.shared.getLocationService().visitDelegate = dataVisit
258
258
  if(self.enableAirshipCallback){
259
259
  // Set delagate for Airship Cloud
260
- WoosmapGeofencing.shared.getLocationService().airshipEventsDelegate = airshipEvents
260
+ WoosmapGeofenceManager.shared.getLocationService().airshipEventsDelegate = airshipEvents
261
261
  }
262
262
 
263
263
  // Set delagate for Marketing Cloud
264
- WoosmapGeofencing.shared.getLocationService().marketingCloudEventsDelegate = marketingCloudEvents
264
+ WoosmapGeofenceManager.shared.getLocationService().marketingCloudEventsDelegate = marketingCloudEvents
265
265
  if defaultPOIRadius != "" {
266
- WoosmapGeofencing.shared.setPoiRadius(radius: formatedRadius(radius: defaultPOIRadius))
266
+ WoosmapGeofenceManager.shared.setPoiRadius(radius: formatedRadius(radius: defaultPOIRadius))
267
267
  }
268
268
 
269
269
  if let savedProfile = ConfigurationProfile(rawValue: defaultProfile) {
270
- WoosmapGeofencing.shared.startTracking(configurationProfile: savedProfile)
270
+ WoosmapGeofenceManager.shared.startTracking(configurationProfile: savedProfile)
271
271
  }
272
272
  // else{ //Default tracking
273
- // WoosmapGeofencing.shared.startTracking(configurationProfile: ConfigurationProfile.passiveTracking)
273
+ // WoosmapGeofenceManager.shared.startTracking(configurationProfile: ConfigurationProfile.passiveTracking)
274
274
  // }
275
275
  // Check if the authorization Status of location Manager
276
276
  if CLLocationManager.authorizationStatus() != .notDetermined {
277
- WoosmapGeofencing.shared.startMonitoringInBackground()
277
+ WoosmapGeofenceManager.shared.startMonitoringInBackground()
278
278
  }
279
279
 
280
280
  NotificationCenter.default.addObserver(self,
@@ -290,7 +290,7 @@ import WoosmapGeofencing
290
290
  // self.searchAPIRequestEnable = true
291
291
  // self.distanceAPIRequestEnable = true
292
292
  // self.searchAPICreationRegionEnable = true
293
- // print ("\(WoosmapGeofencing.shared.getModeHighfrequencyLocation()) \(WoosmapGeofencing.shared.getTrackingState()) ")
293
+ // print ("\(WoosmapGeofenceManager.shared.getModeHighfrequencyLocation()) \(WoosmapGeofenceManager.shared.getTrackingState()) ")
294
294
  }
295
295
 
296
296
  /// Adding new region
@@ -301,19 +301,19 @@ import WoosmapGeofencing
301
301
  /// - type: String circle/isochrone
302
302
  /// - Returns: Status for reagion created or not and new region id from system
303
303
  public func addRegion(identifier: String, center: CLLocationCoordinate2D, radius: Int, type: String) -> (isCreate: Bool, identifier: String) {
304
- return WoosmapGeofencing.shared.locationService.addRegion(identifier: identifier, center: center, radius: radius, type:type)
304
+ return WoosmapGeofenceManager.shared.locationService.addRegion(identifier: identifier, center: center, radius: radius, type:type)
305
305
  }
306
306
 
307
307
  /// Remove region from system
308
308
  /// - Parameter center: geoLocation point of region
309
309
  public func removeRegion(center: CLLocationCoordinate2D) {
310
- return WoosmapGeofencing.shared.locationService.removeRegion(center: center)
310
+ return WoosmapGeofenceManager.shared.locationService.removeRegion(center: center)
311
311
  }
312
312
 
313
313
  /// Remove region from system
314
314
  /// - Parameter identifier: region id assined for region
315
315
  public func removeRegion(identifier: String) {
316
- return WoosmapGeofencing.shared.locationService.removeRegion(identifier: identifier)
316
+ return WoosmapGeofenceManager.shared.locationService.removeRegion(identifier: identifier)
317
317
  }
318
318
 
319
319
  /// Get location information for geopoint from woos system
@@ -322,7 +322,7 @@ import WoosmapGeofencing
322
322
  /// - locationId: id recorded for that location
323
323
  public func searchAPIRequest(location: CLLocationCoordinate2D, locationId: String = "") {
324
324
  // TODO: Missing implementation
325
- //WoosmapGeofencing.shared.getLocationService().searchAPIRequest(location: CLLocation.init(latitude: location.latitude, longitude: location.longitude), locationId: locationId)
325
+ //WoosmapGeofenceManager.shared.getLocationService().searchAPIRequest(location: CLLocation.init(latitude: location.latitude, longitude: location.longitude), locationId: locationId)
326
326
  }
327
327
  // TODO: Missing implementation
328
328
  // /// Get distnce between location point and origin
@@ -335,7 +335,7 @@ import WoosmapGeofencing
335
335
  // let lngDest = coordinatesDest.coordinate.longitude
336
336
  // let originLocation = CLLocation.init(latitude: locationOrigin.latitude,
337
337
  // longitude: locationOrigin.longitude)
338
- // WoosmapGeofencing.shared.getLocationService().distanceAPIRequest(locationOrigin: originLocation,
338
+ // WoosmapGeofenceManager.shared.getLocationService().distanceAPIRequest(locationOrigin: originLocation,
339
339
  // coordinatesDest: [(latDest, lngDest)],
340
340
  // locationId: locationId)
341
341
  // }
@@ -350,7 +350,7 @@ import WoosmapGeofencing
350
350
  // let lngDest = poi.longitude
351
351
  // let originLocation = CLLocation.init(latitude: locationOrigin.latitude,
352
352
  // longitude: locationOrigin.longitude)
353
- // WoosmapGeofencing.shared.getLocationService().distanceAPIRequest(locationOrigin: originLocation,
353
+ // WoosmapGeofenceManager.shared.getLocationService().distanceAPIRequest(locationOrigin: originLocation,
354
354
  // coordinatesDest: [(latDest, lngDest)],
355
355
  // locationId: locationId)
356
356
  // }
@@ -396,28 +396,26 @@ import WoosmapGeofencing
396
396
  var regions = DataRegion().readRegions()
397
397
  let IsochroneRegion = DataRegion().readIsochroneRegions()
398
398
  IsochroneRegion.forEach { item in
399
- let customRegion = Region()
400
- customRegion.identifier = item.identifier ?? "-"
401
- customRegion.latitude = item.latitude
402
- customRegion.longitude = item.longitude
403
- customRegion.radius = Double(item.radius)
399
+ let customRegion = Region(latitude: item.latitude, longitude: item.latitude, radius: Double(item.radius), dateCaptured: Date(), identifier: item.identifier ?? "-", didEnter: false, fromPositionDetection: false, eventName: "")
404
400
  customRegion.type = item.type
405
401
  regions.append(customRegion)
406
402
  }
407
403
 
408
- if let locationService = WoosmapGeofencing.shared.locationService{
404
+ if let locationService = WoosmapGeofenceManager.shared.locationService{
409
405
  if let customRegion = locationService.locationManager?.monitoredRegions{
410
406
  customRegion.forEach { item in
411
407
  if(locationService.getRegionType(identifier: item.identifier) == RegionType.custom){
412
- let customRegion = Region()
413
- customRegion.identifier = item.identifier
408
+
409
+ let customRegionItem = Region(latitude: 0, longitude: 0, radius: 0, dateCaptured: Date(), identifier: item.identifier , didEnter: false, fromPositionDetection: false, eventName: "")
410
+
411
+ customRegionItem.identifier = item.identifier
414
412
  if let circleRegion = item as? CLCircularRegion{
415
- customRegion.latitude = circleRegion.center.latitude
416
- customRegion.longitude = circleRegion.center.longitude
417
- customRegion.radius = circleRegion.radius
418
- customRegion.type = "circle"
413
+ customRegionItem.latitude = circleRegion.center.latitude
414
+ customRegionItem.longitude = circleRegion.center.longitude
415
+ customRegionItem.radius = circleRegion.radius
416
+ customRegionItem.type = "circle"
419
417
  }
420
- regions.append(customRegion)
418
+ regions.append(customRegionItem)
421
419
  }
422
420
  }
423
421
  }
@@ -430,14 +428,15 @@ import WoosmapGeofencing
430
428
  /// - Parameter id: region id
431
429
  /// - Returns: Region
432
430
  public func getRegions(id:String) -> Region? {
433
- if let locationService = WoosmapGeofencing.shared.locationService{
431
+ if let locationService = WoosmapGeofenceManager.shared.locationService{
434
432
  let regiontype = locationService.getRegionType(identifier: id)
435
433
  if( regiontype == RegionType.custom){
436
434
  if let customRegions = locationService.locationManager?.monitoredRegions{
437
435
  if let watchRegion = customRegions.first(where: { item in
438
436
  return item.identifier == id
439
437
  }){
440
- let customRegion = Region()
438
+ let customRegion = Region(latitude: 0, longitude: 0, radius: 0, dateCaptured: Date(), identifier: "-", didEnter: false, fromPositionDetection: false, eventName: "")
439
+
441
440
  customRegion.identifier = watchRegion.identifier
442
441
  if let circleRegion = watchRegion as? CLCircularRegion{
443
442
  customRegion.latitude = circleRegion.center.latitude
@@ -456,7 +455,7 @@ import WoosmapGeofencing
456
455
  }
457
456
  if let regions = DataRegion().readIsochroneRegions(id: id){
458
457
 
459
- let customRegion = Region()
458
+ let customRegion = Region(latitude: 0, longitude: 0, radius: 0, dateCaptured: Date(), identifier: "-", didEnter: false, fromPositionDetection: false, eventName: "")
460
459
  customRegion.identifier = regions.identifier ?? "-"
461
460
  customRegion.latitude = regions.latitude
462
461
  customRegion.longitude = regions.longitude
@@ -498,12 +497,12 @@ import WoosmapGeofencing
498
497
 
499
498
  /// Delete all ZOI regions
500
499
  public func deleteAllZoiRegion() {
501
- WoosmapGeofencing.shared.locationService.removeRegions(type: RegionType.custom)
500
+ WoosmapGeofenceManager.shared.locationService.removeRegions(type: RegionType.custom)
502
501
  }
503
502
 
504
503
  /// Delete all POI regions
505
504
  public func deleteAllPoiRegion() {
506
- WoosmapGeofencing.shared.locationService.removeRegions(type: RegionType.poi)
505
+ WoosmapGeofenceManager.shared.locationService.removeRegions(type: RegionType.poi)
507
506
  }
508
507
 
509
508
  /// Delete regions by id
@@ -512,7 +511,7 @@ import WoosmapGeofencing
512
511
  public func deleteRegions(id:String) throws {
513
512
  if isRegionIDExist(id: id){
514
513
  DataRegion().eraseRegions(id: id)
515
- WoosmapGeofencing.shared.locationService.removeRegion(identifier: id)
514
+ WoosmapGeofenceManager.shared.locationService.removeRegion(identifier: id)
516
515
  }
517
516
  else{
518
517
  throw WoosGeofenceError(WoosmapGeofenceMessage.regionid_notexist )
@@ -523,7 +522,7 @@ import WoosmapGeofencing
523
522
  /// Delete all regions
524
523
  public func deleteAllRegion() {
525
524
  DataRegion().eraseRegions()
526
- WoosmapGeofencing.shared.locationService.removeRegions(type: RegionType.none)
525
+ WoosmapGeofenceManager.shared.locationService.removeRegions(type: RegionType.none)
527
526
  }
528
527
 
529
528
  @objc static public func mockdata() {
@@ -559,7 +558,7 @@ import WoosmapGeofencing
559
558
  throw WoosGeofenceError(WoosmapGeofenceMessage.required_contactKey)
560
559
  }
561
560
  if requiredSatisfied {
562
- WoosmapGeofencing.shared.setSFMCCredentials(credentials: credentials)
561
+ WoosmapGeofenceManager.shared.setSFMCCredentials(credentials: credentials)
563
562
  }
564
563
  }
565
564
 
@@ -567,7 +566,7 @@ import WoosmapGeofencing
567
566
  /// - Parameter radius: integer or string for radius value
568
567
  public func setPoiRadius(radius: String) {
569
568
  self.defaultPOIRadius = radius
570
- WoosmapGeofencing.shared.setPoiRadius(radius: formatedRadius(radius: radius))
569
+ WoosmapGeofenceManager.shared.setPoiRadius(radius: formatedRadius(radius: radius))
571
570
  }
572
571
 
573
572
  /// Format String value to proper datatype
@@ -598,7 +597,7 @@ import WoosmapGeofencing
598
597
  if(mode == "local"){
599
598
  let bundle = Bundle.main //Bundle(for: Self.self)
600
599
  if let url = bundle.url(forResource: source, withExtension: nil){
601
- let (status,errors) = WoosmapGeofencing.shared.startCustomTracking(url: url.absoluteString)
600
+ let (status,errors) = WoosmapGeofenceManager.shared.startCustomTracking(url: url.absoluteString)
602
601
 
603
602
  if(status == false){
604
603
  completion(false,WoosGeofenceError(errors[0]))
@@ -612,7 +611,7 @@ import WoosmapGeofencing
612
611
  }
613
612
  }
614
613
  else if(mode == "external"){
615
- let (status,errors) = WoosmapGeofencing.shared.startCustomTracking(url: source)
614
+ let (status,errors) = WoosmapGeofenceManager.shared.startCustomTracking(url: source)
616
615
  if(status == false){
617
616
  completion(false,WoosGeofenceError(errors[0]))
618
617
  }
@@ -632,7 +631,7 @@ import WoosmapGeofencing
632
631
  if(mode == "local"){
633
632
  let bundle = Bundle.main //Bundle(for: Self.self)
634
633
  if let url = bundle.url(forResource: source, withExtension: nil){
635
- let (status,errors) = WoosmapGeofencing.shared.startCustomTracking(url: url.absoluteString)
634
+ let (status,errors) = WoosmapGeofenceManager.shared.startCustomTracking(url: url.absoluteString)
636
635
  if(status == false){
637
636
  throw WoosGeofenceError(errors[0])
638
637
  }
@@ -642,7 +641,7 @@ import WoosmapGeofencing
642
641
  }
643
642
  }
644
643
  else if(mode == "external"){
645
- let (status,errors) = WoosmapGeofencing.shared.startCustomTracking(url: source)
644
+ let (status,errors) = WoosmapGeofenceManager.shared.startCustomTracking(url: source)
646
645
  if(status == false){
647
646
  throw WoosGeofenceError(errors[0])
648
647
  }
@@ -68,6 +68,21 @@ function requestPermissions(background) {
68
68
  return _nativeInterface.default.requestPermissions([background]);
69
69
  }
70
70
 
71
+ /**
72
+ * A method to request the required permissions to collect locations.
73
+ * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission.
74
+ * The plugin will return an object with either one of the messages - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED
75
+ */
76
+ function requestBLEPermissions() {
77
+ if (_reactNative.Platform.OS == 'android') {
78
+ return _nativeInterface.default.requestBLEPermissions();
79
+ } else {
80
+ return new Promise(resolve => {
81
+ resolve("GRANTED");
82
+ });
83
+ }
84
+ }
85
+
71
86
  /**
72
87
  * A method to check if the app has granted required permissions to track location.
73
88
  * @returns A callback that will be called with the following status - GRANTED_BACKGROUND, GRANTED_FOREGROUND, DENIED
@@ -76,6 +91,20 @@ function getPermissionsStatus() {
76
91
  return _nativeInterface.default.getPermissionsStatus();
77
92
  }
78
93
 
94
+ /**
95
+ * A method to check if the app has granted required permissions to track location.
96
+ * @returns A callback that will be called with the following status - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED
97
+ */
98
+ function getBLEPermissionsStatus() {
99
+ if (_reactNative.Platform.OS == 'android') {
100
+ return _nativeInterface.default.getBLEPermissionsStatus();
101
+ } else {
102
+ return new Promise(resolve => {
103
+ resolve("GRANTED");
104
+ });
105
+ }
106
+ }
107
+
79
108
  /**
80
109
  * Method will
81
110
  invoke callback and pass a location object as a parameter. Method will return a watchId . This id can be used to remove a callback.
@@ -311,7 +340,9 @@ const WoosmapGeofencing = {
311
340
  setWoosmapApiKey,
312
341
  startTracking,
313
342
  requestPermissions,
343
+ requestBLEPermissions,
314
344
  getPermissionsStatus,
345
+ getBLEPermissionsStatus,
315
346
  stopTracking,
316
347
  watchLocation,
317
348
  clearLocationWatch,
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeUuid","_interopRequireDefault","_nativeInterface","_Location","_Region","_Poi","obj","__esModule","default","eventEmitter","NativeEventEmitter","PluginGeofencing","subscriptionsLocation","subscriptionsRegion","initialize","arg0","setWoosmapApiKey","apiKey","startTracking","trackingProfile","stopTracking","requestPermissions","background","getPermissionsStatus","watchLocation","success","error","watchID","uuid","v1","toString","successCallback","result","Location","jsonToObj","addListener","clearLocationWatch","removeAllListeners","clearAllLocationWatch","saved","removeListener","arg1","undefined","watchRegions","Region","clearRegionsWatch","clearAllRegionsWatch","setSFMCCredentials","setPoiRadius","radius","addRegion","region","getRegions","regionID","getAllRegions","then","formatted","forEach","item","push","Promise","resolve","catch","e","reject","getLocations","locationID","getAllLocations","getLocation","getPois","poiID","getAllPois","Poi","getPoi","removeRegions","removeAllRegions","removeRegion","removeLocations","removeAllLocations","removePois","removeAllPois","startCustomTracking","sourceType","source","WoosmapGeofencing","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport uuid from 'react-native-uuid';\nimport PluginGeofencing from './internal/nativeInterface';\nimport Location from './internal/Location';\nimport Region from './internal/Region';\nimport Poi from './internal/Poi';\nimport type {\n GeofenceRegion,\n RegionType,\n ProfileSource,\n} from './internal/types';\n\nconst eventEmitter = new NativeEventEmitter(PluginGeofencing);\n\nlet subscriptionsLocation: any = {};\nlet subscriptionsRegion: any = {};\n/**\n * Initializes the Woosmap object\n * @param arg0 A JSON object with Woosmap Key (optional) and tracking profile (`liveTracking`,`passiveTracking`,`visitsTracking`).\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction initialize(arg0?: any): Promise<string> {\n if (arg0 == null) {\n arg0 = {};\n }\n return PluginGeofencing.initialize(arg0);\n}\n\n/**\n * A method that sets Woosmap private API key\n * @param apiKey new API key.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction setWoosmapApiKey(apiKey: string): Promise<string> {\n return PluginGeofencing.setWoosmapApiKey([apiKey]);\n}\n\n/**\n * A method to start tracking the user's location.\n * @param trackingProfile The configuration profile to use. Values could be anyone of the following: liveTracking, passiveTracking and visitsTracking.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction startTracking(trackingProfile: string): Promise<string> {\n return PluginGeofencing.startTracking([trackingProfile]);\n}\n\n/**\n * Stops tracking the user's location.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction stopTracking(): Promise<string> {\n return PluginGeofencing.stopTracking();\n}\n\n/**\n * A method to request the required permissions to collect locations.\n * @param background - A boolean value indicating whether the permissions to request is for background or foreground permission.\n * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission. The plugin will return an object with a message - 'Permission Denied'.\n */\nfunction requestPermissions(background?: boolean): Promise<string> {\n if (background == null) {\n background = false;\n }\n return PluginGeofencing.requestPermissions([background]);\n}\n\n/**\n * A method to check if the app has granted required permissions to track location.\n * @returns A callback that will be called with the following status - GRANTED_BACKGROUND, GRANTED_FOREGROUND, DENIED\n */\nfunction getPermissionsStatus(): Promise<string> {\n return PluginGeofencing.getPermissionsStatus();\n}\n\n/**\n * Method will\ninvoke callback and pass a location object as a parameter. Method will return a watchId . This id can be used to remove a callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchLocation(\n success: (result: Location) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Location.jsonToObj(result));\n };\n\n subscriptionsLocation[watchID] = [\n eventEmitter.addListener('geolocationDidChange', successCallback),\n error ? eventEmitter.addListener('geolocationError', error) : null,\n ];\n return PluginGeofencing.watchLocation(watchID);\n}\n\n/**\n * A method to stop tracking location for a specified watch. If watchId is null or undefined the plugin will clear all watches.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearLocationWatch(watchID?: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('geolocationDidChange');\n eventEmitter.removeAllListeners('geolocationError');\n subscriptionsLocation = {};\n return PluginGeofencing.clearAllLocationWatch();\n } else {\n const saved = subscriptionsLocation[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('geolocationDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('geolocationError', arg1);\n }\n subscriptionsLocation[watchID] = undefined;\n }\n return PluginGeofencing.clearLocationWatch(watchID);\n }\n}\n\n/**\n * A method to to track Regions. Method will invoke a callback with Region object. Method will return\na watch id which can be used later to remove the callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchRegions(\n success: (result: Region) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Region.jsonToObj(result));\n };\n\n subscriptionsRegion[watchID] = [\n eventEmitter.addListener('woosmapgeofenceRegionDidChange', successCallback),\n error\n ? eventEmitter.addListener('woosmapgeofenceRegionError', error)\n : null,\n ];\n return PluginGeofencing.watchRegions(watchID);\n}\n\n/**\n * A method to clear the specified watch tracing the regions. If the watchId is null or undefined then it will clear all the watches tracking the regions.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearRegionsWatch(watchID: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('woosmapgeofenceRegionDidChange');\n eventEmitter.removeAllListeners('woosmapgeofenceRegionError');\n subscriptionsRegion = {};\n return PluginGeofencing.clearAllRegionsWatch();\n } else {\n const saved = subscriptionsRegion[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('woosmapgeofenceRegionDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('woosmapgeofenceRegionError', arg1);\n }\n subscriptionsRegion[watchID] = undefined;\n }\n return PluginGeofencing.clearRegionsWatch(watchID);\n }\n}\n/**\n * Sets Sales Force Marketing Cloud (SFMC) credentials\n * @param arg0 A JSON object with SFMC credentials. Keys authenticationBaseURI, restBaseURI, client_id, client_secret and contactKey are required.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setSFMCCredentials(arg0: Object): Promise<string> {\n return PluginGeofencing.setSFMCCredentials(arg0);\n}\n\n/**\n * When you create a geofence around a POI, manually define the radius value (100.0) or choose the user_properties subfield that corresponds to radius value of the geofence (\"radiusPOI\").\n * @param radius can be integer or string.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setPoiRadius(radius: string): Promise<string> {\n return PluginGeofencing.setPoiRadius(radius);\n}\n/**\n * Adds a custom region that you want to monitor.\n * @param region A GeofenceRegion object with latitude, longitude, radius and type.\n * @returns promise with A callback that will be called on success or error.\n */\n\nfunction addRegion(region: GeofenceRegion): Promise<string> {\n return PluginGeofencing.addRegion(region);\n}\n/**\n * Retrieve saved region info\n * @param regionID If it pass return info for given region or return all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getRegions(regionID?: string): Promise<Region[]> {\n if (regionID == null) {\n return PluginGeofencing.getAllRegions()\n .then((result: any[]) => {\n var formatted: Region[] = [];\n result.forEach((item) => {\n formatted.push(Region.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getRegions(regionID)\n .then((result: any) => {\n var formatted: Region[] = [];\n formatted.push(Region.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved location info\n * @param locationID - Optional in case of location id pass it return only that location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getLocations(locationID?: string): Promise<Location[]> {\n if (locationID == null) {\n return PluginGeofencing.getAllLocations()\n .then((result: any[]) => {\n var formatted: Location[] = [];\n result.forEach((item) => {\n formatted.push(Location.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getLocation(locationID)\n .then((result: any) => {\n var formatted: Location[] = [];\n formatted.push(Location.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved POI info\n * @param poiID - Optional in case of poi id (LocationID or StoreID) pass it return only that POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getPois(poiID?: string): Promise<Poi[]> {\n if (poiID == null) {\n return PluginGeofencing.getAllPois()\n .then((result: any[]) => {\n var formatted: Poi[] = [];\n result.forEach((item) => {\n formatted.push(Poi.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getPoi(poiID)\n .then((result: any) => {\n var formatted: Poi[] = [];\n formatted.push(Poi.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Remove saved region info\n * @param regionID If it pass remove info for given region or removes all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeRegions(regionID?: string): Promise<string> {\n if (regionID == null) {\n return PluginGeofencing.removeAllRegions();\n } else {\n return PluginGeofencing.removeRegion(regionID);\n }\n}\n\n/**\n * Remove saved location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeLocations(): Promise<string> {\n return PluginGeofencing.removeAllLocations();\n}\n\n/**\n * Remove saved POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removePois(): Promise<string> {\n return PluginGeofencing.removeAllPois();\n}\n/**\n * if preset tracking profiles don’t fit with your use cases, you can build your own profile and uses the startCustomTracking() method. \n * There are two way to host the json file:\n * - included in the client application (local)\n * - hosted externally in a file folder in your information system (external)\n * @param sourceType local/external\n * @param source location of profile to be fetch\n * @returns promise with A callback that will be called on success or error.\n */\nfunction startCustomTracking(\n sourceType: ProfileSource,\n source: string\n): Promise<string> {\n return PluginGeofencing.startCustomTracking(sourceType, source);\n}\n\nexport type {\n RegionType,\n GeofenceRegion,\n Region,\n Location,\n Poi,\n ProfileSource,\n};\n\nconst WoosmapGeofencing = {\n initialize,\n setWoosmapApiKey,\n startTracking,\n requestPermissions,\n getPermissionsStatus,\n stopTracking,\n watchLocation,\n clearLocationWatch,\n watchRegions,\n clearRegionsWatch,\n setSFMCCredentials,\n setPoiRadius,\n addRegion,\n getRegions,\n removeRegions,\n getLocations,\n removeLocations,\n getPois,\n removePois,\n startCustomTracking,\n};\n\nexport default WoosmapGeofencing;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeUuid","_interopRequireDefault","_nativeInterface","_Location","_Region","_Poi","obj","__esModule","default","eventEmitter","NativeEventEmitter","PluginGeofencing","subscriptionsLocation","subscriptionsRegion","initialize","arg0","setWoosmapApiKey","apiKey","startTracking","trackingProfile","stopTracking","requestPermissions","background","requestBLEPermissions","Platform","OS","Promise","resolve","getPermissionsStatus","getBLEPermissionsStatus","watchLocation","success","error","watchID","uuid","v1","toString","successCallback","result","Location","jsonToObj","addListener","clearLocationWatch","removeAllListeners","clearAllLocationWatch","saved","removeListener","arg1","undefined","watchRegions","Region","clearRegionsWatch","clearAllRegionsWatch","setSFMCCredentials","setPoiRadius","radius","addRegion","region","getRegions","regionID","getAllRegions","then","formatted","forEach","item","push","catch","e","reject","getLocations","locationID","getAllLocations","getLocation","getPois","poiID","getAllPois","Poi","getPoi","removeRegions","removeAllRegions","removeRegion","removeLocations","removeAllLocations","removePois","removeAllPois","startCustomTracking","sourceType","source","WoosmapGeofencing","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\nimport uuid from 'react-native-uuid';\nimport PluginGeofencing from './internal/nativeInterface';\nimport Location from './internal/Location';\nimport Region from './internal/Region';\nimport Poi from './internal/Poi';\nimport type {\n GeofenceRegion,\n RegionType,\n ProfileSource,\n} from './internal/types';\n\nconst eventEmitter = new NativeEventEmitter(PluginGeofencing);\n\nlet subscriptionsLocation: any = {};\nlet subscriptionsRegion: any = {};\n/**\n * Initializes the Woosmap object\n * @param arg0 A JSON object with Woosmap Key (optional) and tracking profile (`liveTracking`,`passiveTracking`,`visitsTracking`).\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction initialize(arg0?: any): Promise<string> {\n if (arg0 == null) {\n arg0 = {};\n }\n return PluginGeofencing.initialize(arg0);\n}\n\n/**\n * A method that sets Woosmap private API key\n * @param apiKey new API key.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction setWoosmapApiKey(apiKey: string): Promise<string> {\n return PluginGeofencing.setWoosmapApiKey([apiKey]);\n}\n\n/**\n * A method to start tracking the user's location.\n * @param trackingProfile The configuration profile to use. Values could be anyone of the following: liveTracking, passiveTracking and visitsTracking.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction startTracking(trackingProfile: string): Promise<string> {\n return PluginGeofencing.startTracking([trackingProfile]);\n}\n\n/**\n * Stops tracking the user's location.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction stopTracking(): Promise<string> {\n return PluginGeofencing.stopTracking();\n}\n\n/**\n * A method to request the required permissions to collect locations.\n * @param background - A boolean value indicating whether the permissions to request is for background or foreground permission.\n * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission. The plugin will return an object with a message - 'Permission Denied'.\n */\nfunction requestPermissions(background?: boolean): Promise<string> {\n if (background == null) {\n background = false;\n }\n return PluginGeofencing.requestPermissions([background]);\n}\n\n/**\n * A method to request the required permissions to collect locations.\n * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission. \n * The plugin will return an object with either one of the messages - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED\n */\nfunction requestBLEPermissions(): Promise<string> {\n if (Platform.OS == 'android'){\n return PluginGeofencing.requestBLEPermissions();\n }\n else{\n return new Promise((resolve) => {\n resolve(\"GRANTED\");\n });\n }\n}\n\n/**\n * A method to check if the app has granted required permissions to track location.\n * @returns A callback that will be called with the following status - GRANTED_BACKGROUND, GRANTED_FOREGROUND, DENIED\n */\nfunction getPermissionsStatus(): Promise<string> {\n return PluginGeofencing.getPermissionsStatus();\n}\n\n/**\n * A method to check if the app has granted required permissions to track location.\n * @returns A callback that will be called with the following status - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED\n */\nfunction getBLEPermissionsStatus(): Promise<string> {\n if (Platform.OS == 'android'){\n return PluginGeofencing.getBLEPermissionsStatus();\n }\n else{\n return new Promise((resolve) => {\n resolve(\"GRANTED\");\n });\n }\n}\n\n/**\n * Method will\ninvoke callback and pass a location object as a parameter. Method will return a watchId . This id can be used to remove a callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchLocation(\n success: (result: Location) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Location.jsonToObj(result));\n };\n\n subscriptionsLocation[watchID] = [\n eventEmitter.addListener('geolocationDidChange', successCallback),\n error ? eventEmitter.addListener('geolocationError', error) : null,\n ];\n return PluginGeofencing.watchLocation(watchID);\n}\n\n/**\n * A method to stop tracking location for a specified watch. If watchId is null or undefined the plugin will clear all watches.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearLocationWatch(watchID?: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('geolocationDidChange');\n eventEmitter.removeAllListeners('geolocationError');\n subscriptionsLocation = {};\n return PluginGeofencing.clearAllLocationWatch();\n } else {\n const saved = subscriptionsLocation[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('geolocationDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('geolocationError', arg1);\n }\n subscriptionsLocation[watchID] = undefined;\n }\n return PluginGeofencing.clearLocationWatch(watchID);\n }\n}\n\n/**\n * A method to to track Regions. Method will invoke a callback with Region object. Method will return\na watch id which can be used later to remove the callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchRegions(\n success: (result: Region) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Region.jsonToObj(result));\n };\n\n subscriptionsRegion[watchID] = [\n eventEmitter.addListener('woosmapgeofenceRegionDidChange', successCallback),\n error\n ? eventEmitter.addListener('woosmapgeofenceRegionError', error)\n : null,\n ];\n return PluginGeofencing.watchRegions(watchID);\n}\n\n/**\n * A method to clear the specified watch tracing the regions. If the watchId is null or undefined then it will clear all the watches tracking the regions.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearRegionsWatch(watchID: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('woosmapgeofenceRegionDidChange');\n eventEmitter.removeAllListeners('woosmapgeofenceRegionError');\n subscriptionsRegion = {};\n return PluginGeofencing.clearAllRegionsWatch();\n } else {\n const saved = subscriptionsRegion[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('woosmapgeofenceRegionDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('woosmapgeofenceRegionError', arg1);\n }\n subscriptionsRegion[watchID] = undefined;\n }\n return PluginGeofencing.clearRegionsWatch(watchID);\n }\n}\n/**\n * Sets Sales Force Marketing Cloud (SFMC) credentials\n * @param arg0 A JSON object with SFMC credentials. Keys authenticationBaseURI, restBaseURI, client_id, client_secret and contactKey are required.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setSFMCCredentials(arg0: Object): Promise<string> {\n return PluginGeofencing.setSFMCCredentials(arg0);\n}\n\n/**\n * When you create a geofence around a POI, manually define the radius value (100.0) or choose the user_properties subfield that corresponds to radius value of the geofence (\"radiusPOI\").\n * @param radius can be integer or string.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setPoiRadius(radius: string): Promise<string> {\n return PluginGeofencing.setPoiRadius(radius);\n}\n/**\n * Adds a custom region that you want to monitor.\n * @param region A GeofenceRegion object with latitude, longitude, radius and type.\n * @returns promise with A callback that will be called on success or error.\n */\n\nfunction addRegion(region: GeofenceRegion): Promise<string> {\n return PluginGeofencing.addRegion(region);\n}\n/**\n * Retrieve saved region info\n * @param regionID If it pass return info for given region or return all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getRegions(regionID?: string): Promise<Region[]> {\n if (regionID == null) {\n return PluginGeofencing.getAllRegions()\n .then((result: any[]) => {\n var formatted: Region[] = [];\n result.forEach((item) => {\n formatted.push(Region.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getRegions(regionID)\n .then((result: any) => {\n var formatted: Region[] = [];\n formatted.push(Region.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved location info\n * @param locationID - Optional in case of location id pass it return only that location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getLocations(locationID?: string): Promise<Location[]> {\n if (locationID == null) {\n return PluginGeofencing.getAllLocations()\n .then((result: any[]) => {\n var formatted: Location[] = [];\n result.forEach((item) => {\n formatted.push(Location.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getLocation(locationID)\n .then((result: any) => {\n var formatted: Location[] = [];\n formatted.push(Location.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved POI info\n * @param poiID - Optional in case of poi id (LocationID or StoreID) pass it return only that POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getPois(poiID?: string): Promise<Poi[]> {\n if (poiID == null) {\n return PluginGeofencing.getAllPois()\n .then((result: any[]) => {\n var formatted: Poi[] = [];\n result.forEach((item) => {\n formatted.push(Poi.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getPoi(poiID)\n .then((result: any) => {\n var formatted: Poi[] = [];\n formatted.push(Poi.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Remove saved region info\n * @param regionID If it pass remove info for given region or removes all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeRegions(regionID?: string): Promise<string> {\n if (regionID == null) {\n return PluginGeofencing.removeAllRegions();\n } else {\n return PluginGeofencing.removeRegion(regionID);\n }\n}\n\n/**\n * Remove saved location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeLocations(): Promise<string> {\n return PluginGeofencing.removeAllLocations();\n}\n\n/**\n * Remove saved POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removePois(): Promise<string> {\n return PluginGeofencing.removeAllPois();\n}\n/**\n * if preset tracking profiles don’t fit with your use cases, you can build your own profile and uses the startCustomTracking() method. \n * There are two way to host the json file:\n * - included in the client application (local)\n * - hosted externally in a file folder in your information system (external)\n * @param sourceType local/external\n * @param source location of profile to be fetch\n * @returns promise with A callback that will be called on success or error.\n */\nfunction startCustomTracking(\n sourceType: ProfileSource,\n source: string\n): Promise<string> {\n return PluginGeofencing.startCustomTracking(sourceType, source);\n}\n\nexport type {\n RegionType,\n GeofenceRegion,\n Region,\n Location,\n Poi,\n ProfileSource,\n};\n\nconst WoosmapGeofencing = {\n initialize,\n setWoosmapApiKey,\n startTracking,\n requestPermissions,\n requestBLEPermissions,\n getPermissionsStatus,\n getBLEPermissionsStatus,\n stopTracking,\n watchLocation,\n clearLocationWatch,\n watchRegions,\n clearRegionsWatch,\n setSFMCCredentials,\n setPoiRadius,\n addRegion,\n getRegions,\n removeRegions,\n getLocations,\n removeLocations,\n getPois,\n removePois,\n startCustomTracking,\n};\n\nexport default WoosmapGeofencing;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { NativeEventEmitter } from 'react-native';
1
+ import { NativeEventEmitter, Platform } from 'react-native';
2
2
  import uuid from 'react-native-uuid';
3
3
  import PluginGeofencing from './internal/nativeInterface';
4
4
  import Location from './internal/Location';
@@ -61,6 +61,21 @@ function requestPermissions(background) {
61
61
  return PluginGeofencing.requestPermissions([background]);
62
62
  }
63
63
 
64
+ /**
65
+ * A method to request the required permissions to collect locations.
66
+ * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission.
67
+ * The plugin will return an object with either one of the messages - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED
68
+ */
69
+ function requestBLEPermissions() {
70
+ if (Platform.OS == 'android') {
71
+ return PluginGeofencing.requestBLEPermissions();
72
+ } else {
73
+ return new Promise(resolve => {
74
+ resolve("GRANTED");
75
+ });
76
+ }
77
+ }
78
+
64
79
  /**
65
80
  * A method to check if the app has granted required permissions to track location.
66
81
  * @returns A callback that will be called with the following status - GRANTED_BACKGROUND, GRANTED_FOREGROUND, DENIED
@@ -69,6 +84,20 @@ function getPermissionsStatus() {
69
84
  return PluginGeofencing.getPermissionsStatus();
70
85
  }
71
86
 
87
+ /**
88
+ * A method to check if the app has granted required permissions to track location.
89
+ * @returns A callback that will be called with the following status - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED
90
+ */
91
+ function getBLEPermissionsStatus() {
92
+ if (Platform.OS == 'android') {
93
+ return PluginGeofencing.getBLEPermissionsStatus();
94
+ } else {
95
+ return new Promise(resolve => {
96
+ resolve("GRANTED");
97
+ });
98
+ }
99
+ }
100
+
72
101
  /**
73
102
  * Method will
74
103
  invoke callback and pass a location object as a parameter. Method will return a watchId . This id can be used to remove a callback.
@@ -304,7 +333,9 @@ const WoosmapGeofencing = {
304
333
  setWoosmapApiKey,
305
334
  startTracking,
306
335
  requestPermissions,
336
+ requestBLEPermissions,
307
337
  getPermissionsStatus,
338
+ getBLEPermissionsStatus,
308
339
  stopTracking,
309
340
  watchLocation,
310
341
  clearLocationWatch,
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","uuid","PluginGeofencing","Location","Region","Poi","eventEmitter","subscriptionsLocation","subscriptionsRegion","initialize","arg0","setWoosmapApiKey","apiKey","startTracking","trackingProfile","stopTracking","requestPermissions","background","getPermissionsStatus","watchLocation","success","error","watchID","v1","toString","successCallback","result","jsonToObj","addListener","clearLocationWatch","removeAllListeners","clearAllLocationWatch","saved","removeListener","arg1","undefined","watchRegions","clearRegionsWatch","clearAllRegionsWatch","setSFMCCredentials","setPoiRadius","radius","addRegion","region","getRegions","regionID","getAllRegions","then","formatted","forEach","item","push","Promise","resolve","catch","e","reject","getLocations","locationID","getAllLocations","getLocation","getPois","poiID","getAllPois","getPoi","removeRegions","removeAllRegions","removeRegion","removeLocations","removeAllLocations","removePois","removeAllPois","startCustomTracking","sourceType","source","WoosmapGeofencing"],"sources":["index.tsx"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport uuid from 'react-native-uuid';\nimport PluginGeofencing from './internal/nativeInterface';\nimport Location from './internal/Location';\nimport Region from './internal/Region';\nimport Poi from './internal/Poi';\nimport type {\n GeofenceRegion,\n RegionType,\n ProfileSource,\n} from './internal/types';\n\nconst eventEmitter = new NativeEventEmitter(PluginGeofencing);\n\nlet subscriptionsLocation: any = {};\nlet subscriptionsRegion: any = {};\n/**\n * Initializes the Woosmap object\n * @param arg0 A JSON object with Woosmap Key (optional) and tracking profile (`liveTracking`,`passiveTracking`,`visitsTracking`).\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction initialize(arg0?: any): Promise<string> {\n if (arg0 == null) {\n arg0 = {};\n }\n return PluginGeofencing.initialize(arg0);\n}\n\n/**\n * A method that sets Woosmap private API key\n * @param apiKey new API key.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction setWoosmapApiKey(apiKey: string): Promise<string> {\n return PluginGeofencing.setWoosmapApiKey([apiKey]);\n}\n\n/**\n * A method to start tracking the user's location.\n * @param trackingProfile The configuration profile to use. Values could be anyone of the following: liveTracking, passiveTracking and visitsTracking.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction startTracking(trackingProfile: string): Promise<string> {\n return PluginGeofencing.startTracking([trackingProfile]);\n}\n\n/**\n * Stops tracking the user's location.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction stopTracking(): Promise<string> {\n return PluginGeofencing.stopTracking();\n}\n\n/**\n * A method to request the required permissions to collect locations.\n * @param background - A boolean value indicating whether the permissions to request is for background or foreground permission.\n * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission. The plugin will return an object with a message - 'Permission Denied'.\n */\nfunction requestPermissions(background?: boolean): Promise<string> {\n if (background == null) {\n background = false;\n }\n return PluginGeofencing.requestPermissions([background]);\n}\n\n/**\n * A method to check if the app has granted required permissions to track location.\n * @returns A callback that will be called with the following status - GRANTED_BACKGROUND, GRANTED_FOREGROUND, DENIED\n */\nfunction getPermissionsStatus(): Promise<string> {\n return PluginGeofencing.getPermissionsStatus();\n}\n\n/**\n * Method will\ninvoke callback and pass a location object as a parameter. Method will return a watchId . This id can be used to remove a callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchLocation(\n success: (result: Location) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Location.jsonToObj(result));\n };\n\n subscriptionsLocation[watchID] = [\n eventEmitter.addListener('geolocationDidChange', successCallback),\n error ? eventEmitter.addListener('geolocationError', error) : null,\n ];\n return PluginGeofencing.watchLocation(watchID);\n}\n\n/**\n * A method to stop tracking location for a specified watch. If watchId is null or undefined the plugin will clear all watches.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearLocationWatch(watchID?: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('geolocationDidChange');\n eventEmitter.removeAllListeners('geolocationError');\n subscriptionsLocation = {};\n return PluginGeofencing.clearAllLocationWatch();\n } else {\n const saved = subscriptionsLocation[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('geolocationDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('geolocationError', arg1);\n }\n subscriptionsLocation[watchID] = undefined;\n }\n return PluginGeofencing.clearLocationWatch(watchID);\n }\n}\n\n/**\n * A method to to track Regions. Method will invoke a callback with Region object. Method will return\na watch id which can be used later to remove the callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchRegions(\n success: (result: Region) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Region.jsonToObj(result));\n };\n\n subscriptionsRegion[watchID] = [\n eventEmitter.addListener('woosmapgeofenceRegionDidChange', successCallback),\n error\n ? eventEmitter.addListener('woosmapgeofenceRegionError', error)\n : null,\n ];\n return PluginGeofencing.watchRegions(watchID);\n}\n\n/**\n * A method to clear the specified watch tracing the regions. If the watchId is null or undefined then it will clear all the watches tracking the regions.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearRegionsWatch(watchID: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('woosmapgeofenceRegionDidChange');\n eventEmitter.removeAllListeners('woosmapgeofenceRegionError');\n subscriptionsRegion = {};\n return PluginGeofencing.clearAllRegionsWatch();\n } else {\n const saved = subscriptionsRegion[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('woosmapgeofenceRegionDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('woosmapgeofenceRegionError', arg1);\n }\n subscriptionsRegion[watchID] = undefined;\n }\n return PluginGeofencing.clearRegionsWatch(watchID);\n }\n}\n/**\n * Sets Sales Force Marketing Cloud (SFMC) credentials\n * @param arg0 A JSON object with SFMC credentials. Keys authenticationBaseURI, restBaseURI, client_id, client_secret and contactKey are required.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setSFMCCredentials(arg0: Object): Promise<string> {\n return PluginGeofencing.setSFMCCredentials(arg0);\n}\n\n/**\n * When you create a geofence around a POI, manually define the radius value (100.0) or choose the user_properties subfield that corresponds to radius value of the geofence (\"radiusPOI\").\n * @param radius can be integer or string.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setPoiRadius(radius: string): Promise<string> {\n return PluginGeofencing.setPoiRadius(radius);\n}\n/**\n * Adds a custom region that you want to monitor.\n * @param region A GeofenceRegion object with latitude, longitude, radius and type.\n * @returns promise with A callback that will be called on success or error.\n */\n\nfunction addRegion(region: GeofenceRegion): Promise<string> {\n return PluginGeofencing.addRegion(region);\n}\n/**\n * Retrieve saved region info\n * @param regionID If it pass return info for given region or return all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getRegions(regionID?: string): Promise<Region[]> {\n if (regionID == null) {\n return PluginGeofencing.getAllRegions()\n .then((result: any[]) => {\n var formatted: Region[] = [];\n result.forEach((item) => {\n formatted.push(Region.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getRegions(regionID)\n .then((result: any) => {\n var formatted: Region[] = [];\n formatted.push(Region.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved location info\n * @param locationID - Optional in case of location id pass it return only that location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getLocations(locationID?: string): Promise<Location[]> {\n if (locationID == null) {\n return PluginGeofencing.getAllLocations()\n .then((result: any[]) => {\n var formatted: Location[] = [];\n result.forEach((item) => {\n formatted.push(Location.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getLocation(locationID)\n .then((result: any) => {\n var formatted: Location[] = [];\n formatted.push(Location.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved POI info\n * @param poiID - Optional in case of poi id (LocationID or StoreID) pass it return only that POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getPois(poiID?: string): Promise<Poi[]> {\n if (poiID == null) {\n return PluginGeofencing.getAllPois()\n .then((result: any[]) => {\n var formatted: Poi[] = [];\n result.forEach((item) => {\n formatted.push(Poi.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getPoi(poiID)\n .then((result: any) => {\n var formatted: Poi[] = [];\n formatted.push(Poi.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Remove saved region info\n * @param regionID If it pass remove info for given region or removes all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeRegions(regionID?: string): Promise<string> {\n if (regionID == null) {\n return PluginGeofencing.removeAllRegions();\n } else {\n return PluginGeofencing.removeRegion(regionID);\n }\n}\n\n/**\n * Remove saved location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeLocations(): Promise<string> {\n return PluginGeofencing.removeAllLocations();\n}\n\n/**\n * Remove saved POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removePois(): Promise<string> {\n return PluginGeofencing.removeAllPois();\n}\n/**\n * if preset tracking profiles don’t fit with your use cases, you can build your own profile and uses the startCustomTracking() method. \n * There are two way to host the json file:\n * - included in the client application (local)\n * - hosted externally in a file folder in your information system (external)\n * @param sourceType local/external\n * @param source location of profile to be fetch\n * @returns promise with A callback that will be called on success or error.\n */\nfunction startCustomTracking(\n sourceType: ProfileSource,\n source: string\n): Promise<string> {\n return PluginGeofencing.startCustomTracking(sourceType, source);\n}\n\nexport type {\n RegionType,\n GeofenceRegion,\n Region,\n Location,\n Poi,\n ProfileSource,\n};\n\nconst WoosmapGeofencing = {\n initialize,\n setWoosmapApiKey,\n startTracking,\n requestPermissions,\n getPermissionsStatus,\n stopTracking,\n watchLocation,\n clearLocationWatch,\n watchRegions,\n clearRegionsWatch,\n setSFMCCredentials,\n setPoiRadius,\n addRegion,\n getRegions,\n removeRegions,\n getLocations,\n removeLocations,\n getPois,\n removePois,\n startCustomTracking,\n};\n\nexport default WoosmapGeofencing;\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeEventEmitter","Platform","uuid","PluginGeofencing","Location","Region","Poi","eventEmitter","subscriptionsLocation","subscriptionsRegion","initialize","arg0","setWoosmapApiKey","apiKey","startTracking","trackingProfile","stopTracking","requestPermissions","background","requestBLEPermissions","OS","Promise","resolve","getPermissionsStatus","getBLEPermissionsStatus","watchLocation","success","error","watchID","v1","toString","successCallback","result","jsonToObj","addListener","clearLocationWatch","removeAllListeners","clearAllLocationWatch","saved","removeListener","arg1","undefined","watchRegions","clearRegionsWatch","clearAllRegionsWatch","setSFMCCredentials","setPoiRadius","radius","addRegion","region","getRegions","regionID","getAllRegions","then","formatted","forEach","item","push","catch","e","reject","getLocations","locationID","getAllLocations","getLocation","getPois","poiID","getAllPois","getPoi","removeRegions","removeAllRegions","removeRegion","removeLocations","removeAllLocations","removePois","removeAllPois","startCustomTracking","sourceType","source","WoosmapGeofencing"],"sources":["index.tsx"],"sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\nimport uuid from 'react-native-uuid';\nimport PluginGeofencing from './internal/nativeInterface';\nimport Location from './internal/Location';\nimport Region from './internal/Region';\nimport Poi from './internal/Poi';\nimport type {\n GeofenceRegion,\n RegionType,\n ProfileSource,\n} from './internal/types';\n\nconst eventEmitter = new NativeEventEmitter(PluginGeofencing);\n\nlet subscriptionsLocation: any = {};\nlet subscriptionsRegion: any = {};\n/**\n * Initializes the Woosmap object\n * @param arg0 A JSON object with Woosmap Key (optional) and tracking profile (`liveTracking`,`passiveTracking`,`visitsTracking`).\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction initialize(arg0?: any): Promise<string> {\n if (arg0 == null) {\n arg0 = {};\n }\n return PluginGeofencing.initialize(arg0);\n}\n\n/**\n * A method that sets Woosmap private API key\n * @param apiKey new API key.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction setWoosmapApiKey(apiKey: string): Promise<string> {\n return PluginGeofencing.setWoosmapApiKey([apiKey]);\n}\n\n/**\n * A method to start tracking the user's location.\n * @param trackingProfile The configuration profile to use. Values could be anyone of the following: liveTracking, passiveTracking and visitsTracking.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction startTracking(trackingProfile: string): Promise<string> {\n return PluginGeofencing.startTracking([trackingProfile]);\n}\n\n/**\n * Stops tracking the user's location.\n * @returns promise:success - A callback function that will be called on success.\n error - A callback function that will be called on error.\n */\nfunction stopTracking(): Promise<string> {\n return PluginGeofencing.stopTracking();\n}\n\n/**\n * A method to request the required permissions to collect locations.\n * @param background - A boolean value indicating whether the permissions to request is for background or foreground permission.\n * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission. The plugin will return an object with a message - 'Permission Denied'.\n */\nfunction requestPermissions(background?: boolean): Promise<string> {\n if (background == null) {\n background = false;\n }\n return PluginGeofencing.requestPermissions([background]);\n}\n\n/**\n * A method to request the required permissions to collect locations.\n * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission. \n * The plugin will return an object with either one of the messages - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED\n */\nfunction requestBLEPermissions(): Promise<string> {\n if (Platform.OS == 'android'){\n return PluginGeofencing.requestBLEPermissions();\n }\n else{\n return new Promise((resolve) => {\n resolve(\"GRANTED\");\n });\n }\n}\n\n/**\n * A method to check if the app has granted required permissions to track location.\n * @returns A callback that will be called with the following status - GRANTED_BACKGROUND, GRANTED_FOREGROUND, DENIED\n */\nfunction getPermissionsStatus(): Promise<string> {\n return PluginGeofencing.getPermissionsStatus();\n}\n\n/**\n * A method to check if the app has granted required permissions to track location.\n * @returns A callback that will be called with the following status - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED\n */\nfunction getBLEPermissionsStatus(): Promise<string> {\n if (Platform.OS == 'android'){\n return PluginGeofencing.getBLEPermissionsStatus();\n }\n else{\n return new Promise((resolve) => {\n resolve(\"GRANTED\");\n });\n }\n}\n\n/**\n * Method will\ninvoke callback and pass a location object as a parameter. Method will return a watchId . This id can be used to remove a callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchLocation(\n success: (result: Location) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Location.jsonToObj(result));\n };\n\n subscriptionsLocation[watchID] = [\n eventEmitter.addListener('geolocationDidChange', successCallback),\n error ? eventEmitter.addListener('geolocationError', error) : null,\n ];\n return PluginGeofencing.watchLocation(watchID);\n}\n\n/**\n * A method to stop tracking location for a specified watch. If watchId is null or undefined the plugin will clear all watches.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearLocationWatch(watchID?: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('geolocationDidChange');\n eventEmitter.removeAllListeners('geolocationError');\n subscriptionsLocation = {};\n return PluginGeofencing.clearAllLocationWatch();\n } else {\n const saved = subscriptionsLocation[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('geolocationDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('geolocationError', arg1);\n }\n subscriptionsLocation[watchID] = undefined;\n }\n return PluginGeofencing.clearLocationWatch(watchID);\n }\n}\n\n/**\n * A method to to track Regions. Method will invoke a callback with Region object. Method will return\na watch id which can be used later to remove the callback.\n * @param success new location found callback\n * @param error error status callback\n * @returns watchid\n */\nfunction watchRegions(\n success: (result: Region) => any,\n error?: any\n): Promise<string> {\n const watchID = uuid.v1().toString();\n\n const successCallback = (result: any) => {\n success(Region.jsonToObj(result));\n };\n\n subscriptionsRegion[watchID] = [\n eventEmitter.addListener('woosmapgeofenceRegionDidChange', successCallback),\n error\n ? eventEmitter.addListener('woosmapgeofenceRegionError', error)\n : null,\n ];\n return PluginGeofencing.watchRegions(watchID);\n}\n\n/**\n * A method to clear the specified watch tracing the regions. If the watchId is null or undefined then it will clear all the watches tracking the regions.\n * @param watchID Reference ID.\n * @returns return promise with same id back in case of success otherwise error info\n */\nfunction clearRegionsWatch(watchID: string): Promise<string> {\n if (watchID == null) {\n eventEmitter.removeAllListeners('woosmapgeofenceRegionDidChange');\n eventEmitter.removeAllListeners('woosmapgeofenceRegionError');\n subscriptionsRegion = {};\n return PluginGeofencing.clearAllRegionsWatch();\n } else {\n const saved = subscriptionsRegion[watchID];\n if (saved) {\n const arg0 = saved[0];\n eventEmitter.removeListener('woosmapgeofenceRegionDidChange', arg0);\n const arg1 = saved[1];\n if (arg1) {\n eventEmitter.removeListener('woosmapgeofenceRegionError', arg1);\n }\n subscriptionsRegion[watchID] = undefined;\n }\n return PluginGeofencing.clearRegionsWatch(watchID);\n }\n}\n/**\n * Sets Sales Force Marketing Cloud (SFMC) credentials\n * @param arg0 A JSON object with SFMC credentials. Keys authenticationBaseURI, restBaseURI, client_id, client_secret and contactKey are required.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setSFMCCredentials(arg0: Object): Promise<string> {\n return PluginGeofencing.setSFMCCredentials(arg0);\n}\n\n/**\n * When you create a geofence around a POI, manually define the radius value (100.0) or choose the user_properties subfield that corresponds to radius value of the geofence (\"radiusPOI\").\n * @param radius can be integer or string.\n * @returns promise with A callback that will be called on success or error.\n */\nfunction setPoiRadius(radius: string): Promise<string> {\n return PluginGeofencing.setPoiRadius(radius);\n}\n/**\n * Adds a custom region that you want to monitor.\n * @param region A GeofenceRegion object with latitude, longitude, radius and type.\n * @returns promise with A callback that will be called on success or error.\n */\n\nfunction addRegion(region: GeofenceRegion): Promise<string> {\n return PluginGeofencing.addRegion(region);\n}\n/**\n * Retrieve saved region info\n * @param regionID If it pass return info for given region or return all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getRegions(regionID?: string): Promise<Region[]> {\n if (regionID == null) {\n return PluginGeofencing.getAllRegions()\n .then((result: any[]) => {\n var formatted: Region[] = [];\n result.forEach((item) => {\n formatted.push(Region.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getRegions(regionID)\n .then((result: any) => {\n var formatted: Region[] = [];\n formatted.push(Region.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved location info\n * @param locationID - Optional in case of location id pass it return only that location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getLocations(locationID?: string): Promise<Location[]> {\n if (locationID == null) {\n return PluginGeofencing.getAllLocations()\n .then((result: any[]) => {\n var formatted: Location[] = [];\n result.forEach((item) => {\n formatted.push(Location.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getLocation(locationID)\n .then((result: any) => {\n var formatted: Location[] = [];\n formatted.push(Location.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Retrieve saved POI info\n * @param poiID - Optional in case of poi id (LocationID or StoreID) pass it return only that POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction getPois(poiID?: string): Promise<Poi[]> {\n if (poiID == null) {\n return PluginGeofencing.getAllPois()\n .then((result: any[]) => {\n var formatted: Poi[] = [];\n result.forEach((item) => {\n formatted.push(Poi.jsonToObj(item));\n });\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n } else {\n return PluginGeofencing.getPoi(poiID)\n .then((result: any) => {\n var formatted: Poi[] = [];\n formatted.push(Poi.jsonToObj(result));\n return Promise.resolve(formatted);\n })\n .catch((e: any) => {\n return Promise.reject(e);\n });\n }\n}\n\n/**\n * Remove saved region info\n * @param regionID If it pass remove info for given region or removes all region info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeRegions(regionID?: string): Promise<string> {\n if (regionID == null) {\n return PluginGeofencing.removeAllRegions();\n } else {\n return PluginGeofencing.removeRegion(regionID);\n }\n}\n\n/**\n * Remove saved location info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removeLocations(): Promise<string> {\n return PluginGeofencing.removeAllLocations();\n}\n\n/**\n * Remove saved POI info\n * @returns promise with A callback that will be called on success or error.\n */\nfunction removePois(): Promise<string> {\n return PluginGeofencing.removeAllPois();\n}\n/**\n * if preset tracking profiles don’t fit with your use cases, you can build your own profile and uses the startCustomTracking() method. \n * There are two way to host the json file:\n * - included in the client application (local)\n * - hosted externally in a file folder in your information system (external)\n * @param sourceType local/external\n * @param source location of profile to be fetch\n * @returns promise with A callback that will be called on success or error.\n */\nfunction startCustomTracking(\n sourceType: ProfileSource,\n source: string\n): Promise<string> {\n return PluginGeofencing.startCustomTracking(sourceType, source);\n}\n\nexport type {\n RegionType,\n GeofenceRegion,\n Region,\n Location,\n Poi,\n ProfileSource,\n};\n\nconst WoosmapGeofencing = {\n initialize,\n setWoosmapApiKey,\n startTracking,\n requestPermissions,\n requestBLEPermissions,\n getPermissionsStatus,\n getBLEPermissionsStatus,\n stopTracking,\n watchLocation,\n clearLocationWatch,\n watchRegions,\n clearRegionsWatch,\n setSFMCCredentials,\n setPoiRadius,\n addRegion,\n getRegions,\n removeRegions,\n getLocations,\n removeLocations,\n getPois,\n removePois,\n startCustomTracking,\n};\n\nexport default WoosmapGeofencing;\n"],"mappings":"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"}
@@ -35,11 +35,22 @@ declare function stopTracking(): Promise<string>;
35
35
  * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission. The plugin will return an object with a message - 'Permission Denied'.
36
36
  */
37
37
  declare function requestPermissions(background?: boolean): Promise<string>;
38
+ /**
39
+ * A method to request the required permissions to collect locations.
40
+ * @returns A callback that will be called on successful authorization by the app. A callback that will be called when the app denies permission.
41
+ * The plugin will return an object with either one of the messages - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED
42
+ */
43
+ declare function requestBLEPermissions(): Promise<string>;
38
44
  /**
39
45
  * A method to check if the app has granted required permissions to track location.
40
46
  * @returns A callback that will be called with the following status - GRANTED_BACKGROUND, GRANTED_FOREGROUND, DENIED
41
47
  */
42
48
  declare function getPermissionsStatus(): Promise<string>;
49
+ /**
50
+ * A method to check if the app has granted required permissions to track location.
51
+ * @returns A callback that will be called with the following status - BACKGROUND_LOCATION_DENIED, GRANTED, DENIED
52
+ */
53
+ declare function getBLEPermissionsStatus(): Promise<string>;
43
54
  /**
44
55
  * Method will
45
56
  invoke callback and pass a location object as a parameter. Method will return a watchId . This id can be used to remove a callback.
@@ -136,7 +147,9 @@ declare const WoosmapGeofencing: {
136
147
  setWoosmapApiKey: typeof setWoosmapApiKey;
137
148
  startTracking: typeof startTracking;
138
149
  requestPermissions: typeof requestPermissions;
150
+ requestBLEPermissions: typeof requestBLEPermissions;
139
151
  getPermissionsStatus: typeof getPermissionsStatus;
152
+ getBLEPermissionsStatus: typeof getBLEPermissionsStatus;
140
153
  stopTracking: typeof stopTracking;
141
154
  watchLocation: typeof watchLocation;
142
155
  clearLocationWatch: typeof clearLocationWatch;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@woosmap/react-native-plugin-geofencing",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "This react-native plugin extends the functionality offered by the Woosmap Geofencing Mobile SDKs. Find more about the Woosmap Geofencing SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
16
16
  s.source_files = "ios/**/*.{h,m,mm,swift}"
17
17
 
18
18
  s.dependency "React-Core"
19
- s.dependency "WoosmapGeofencing" , '3.0.15'
19
+ s.dependency "WoosmapGeofencing", '~> 4.0.0'
20
20
  s.default_subspec = :default
21
21
 
22
22
  s.subspec "default" do |spec|