react-native-radar 3.9.1 → 3.9.3

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.
@@ -18,7 +18,7 @@ android {
18
18
  minSdkVersion 16
19
19
  targetSdkVersion 31
20
20
  versionCode 1
21
- versionName '3.9.1'
21
+ versionName '3.9.3'
22
22
  }
23
23
  lintOptions {
24
24
  abortOnError false
@@ -45,5 +45,5 @@ repositories {
45
45
 
46
46
  dependencies {
47
47
  api 'com.facebook.react:react-native:+'
48
- api 'io.radar:sdk:3.9.1'
48
+ api 'io.radar:sdk:3.9.8'
49
49
  }
@@ -2,6 +2,8 @@ package io.radar.react;
2
2
 
3
3
  import android.Manifest;
4
4
  import android.app.Activity;
5
+ import android.content.Context;
6
+ import android.content.SharedPreferences;
5
7
  import android.content.pm.PackageManager;
6
8
  import android.location.Location;
7
9
  import android.os.Build;
@@ -25,6 +27,7 @@ import io.radar.sdk.Radar;
25
27
  import io.radar.sdk.RadarTrackingOptions;
26
28
  import io.radar.sdk.RadarTrackingOptions.RadarTrackingOptionsForegroundService;
27
29
  import io.radar.sdk.RadarTripOptions;
30
+ import io.radar.sdk.RadarVerifiedReceiver;
28
31
  import io.radar.sdk.model.RadarAddress;
29
32
  import io.radar.sdk.model.RadarContext;
30
33
  import io.radar.sdk.model.RadarEvent;
@@ -49,16 +52,22 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
49
52
  private Promise mPermissionsRequestPromise;
50
53
 
51
54
  private RNRadarReceiver receiver;
55
+ private RNRadarVerifiedReceiver verifiedReceiver;
52
56
  private int listenerCount = 0;
57
+ private boolean fraud = false;
53
58
 
54
59
  public RNRadarModule(ReactApplicationContext reactContext) {
55
60
  super(reactContext);
56
61
  receiver = new RNRadarReceiver();
62
+ verifiedReceiver = new RNRadarVerifiedReceiver();
57
63
  }
58
64
 
59
65
  @ReactMethod
60
66
  public void addListener(String eventName) {
61
67
  if (listenerCount == 0) {
68
+ if (fraud) {
69
+ verifiedReceiver.hasListeners = true;
70
+ }
62
71
  receiver.hasListeners = true;
63
72
  }
64
73
 
@@ -69,6 +78,9 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
69
78
  public void removeListeners(Integer count) {
70
79
  listenerCount -= count;
71
80
  if (listenerCount == 0) {
81
+ if (fraud) {
82
+ verifiedReceiver.hasListeners = false;
83
+ }
72
84
  receiver.hasListeners = false;
73
85
  }
74
86
  }
@@ -80,8 +92,15 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
80
92
 
81
93
  @ReactMethod
82
94
  public void initialize(String publishableKey, boolean fraud) {
95
+ this.fraud = fraud;
96
+ SharedPreferences.Editor editor = getReactApplicationContext().getSharedPreferences("RadarSDK", Context.MODE_PRIVATE).edit();
97
+ editor.putString("x_platform_sdk_type", "ReactNative");
98
+ editor.putString("x_platform_sdk_version", "3.9.3");
99
+ editor.apply();
100
+
83
101
  if (fraud) {
84
102
  Radar.initialize(getReactApplicationContext(), publishableKey, receiver, Radar.RadarLocationServicesProvider.GOOGLE, fraud);
103
+ Radar.setVerifiedReceiver(verifiedReceiver);
85
104
  } else {
86
105
  Radar.initialize(getReactApplicationContext(), publishableKey);
87
106
  Radar.setReceiver(receiver);
@@ -359,8 +378,17 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
359
378
  }
360
379
 
361
380
  @ReactMethod
362
- public void trackVerified(final Promise promise) {
363
- Radar.trackVerified(new Radar.RadarTrackCallback() {
381
+ public void trackVerified(ReadableMap optionsMap, final Promise promise) {
382
+
383
+ boolean beaconsTrackingOption = false;
384
+
385
+ if (optionsMap != null) {
386
+ if (optionsMap.hasKey("beacons")) {
387
+ beaconsTrackingOption = optionsMap.getBoolean("beacons");
388
+ }
389
+ }
390
+
391
+ Radar.RadarTrackCallback trackCallback = new Radar.RadarTrackCallback() {
364
392
  @Override
365
393
  public void onComplete(@NonNull Radar.RadarStatus status, @Nullable Location location, @Nullable RadarEvent[] events, @Nullable RadarUser user) {
366
394
  if (promise == null) {
@@ -389,12 +417,23 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
389
417
  promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
390
418
  }
391
419
  }
392
- });
420
+ };
421
+
422
+ Radar.trackVerified(beaconsTrackingOption, trackCallback);
393
423
  }
394
424
 
395
425
  @ReactMethod
396
- public void trackVerifiedToken(final Promise promise) {
397
- Radar.trackVerifiedToken(new Radar.RadarTrackTokenCallback() {
426
+ public void trackVerifiedToken(ReadableMap optionsMap, final Promise promise) {
427
+
428
+ boolean beaconsTrackingOption = false;
429
+
430
+ if (optionsMap != null) {
431
+ if (optionsMap.hasKey("beacons")) {
432
+ beaconsTrackingOption = optionsMap.getBoolean("beacons");
433
+ }
434
+ }
435
+
436
+ Radar.RadarTrackTokenCallback trackTokenCallback = new Radar.RadarTrackTokenCallback() {
398
437
  @Override
399
438
  public void onComplete(@NonNull Radar.RadarStatus status, @Nullable String token) {
400
439
  if (promise == null) {
@@ -417,7 +456,9 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
417
456
  promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
418
457
  }
419
458
  }
420
- });
459
+ };
460
+
461
+ Radar.trackVerifiedToken(beaconsTrackingOption, trackTokenCallback);
421
462
  }
422
463
 
423
464
  @ReactMethod
@@ -446,6 +487,21 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
446
487
  }
447
488
  }
448
489
 
490
+ @ReactMethod
491
+ public void startTrackingVerified(ReadableMap optionsMap) {
492
+ boolean token = false;
493
+ boolean beacons = false;
494
+ int interval = 1;
495
+
496
+ if (optionsMap != null) {
497
+ token = optionsMap.hasKey("token") ? optionsMap.getBoolean("token") : token;
498
+ beacons = optionsMap.hasKey("beacons") ? optionsMap.getBoolean("beacons") : beacons;
499
+ interval = optionsMap.hasKey("interval") ? optionsMap.getInt("interval") : interval;
500
+ }
501
+
502
+ Radar.startTrackingVerified(token, interval, beacons);
503
+ }
504
+
449
505
  @ReactMethod
450
506
  public void mockTracking(ReadableMap optionsMap) {
451
507
  ReadableMap originMap = optionsMap.getMap("origin");
@@ -0,0 +1,46 @@
1
+ package io.radar.react;
2
+
3
+ import android.content.Context;
4
+ import android.util.Log;
5
+
6
+ import androidx.annotation.NonNull;
7
+
8
+ import com.facebook.react.ReactApplication;
9
+ import com.facebook.react.ReactInstanceManager;
10
+ import com.facebook.react.ReactNativeHost;
11
+ import com.facebook.react.bridge.Arguments;
12
+ import com.facebook.react.bridge.ReactContext;
13
+ import com.facebook.react.bridge.ReactMethod;
14
+ import com.facebook.react.bridge.WritableMap;
15
+ import com.facebook.react.modules.core.DeviceEventManagerModule;
16
+
17
+ import io.radar.sdk.Radar;
18
+ import io.radar.sdk.RadarVerifiedReceiver;
19
+
20
+ public class RNRadarVerifiedReceiver extends RadarVerifiedReceiver {
21
+
22
+ private ReactNativeHost reactNativeHost;
23
+ private static final String TAG = "RNRadarVerifiedReceiver";
24
+ protected boolean hasListeners = false;
25
+
26
+ private void sendEvent(final String eventName, final Object data) {
27
+ final ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager();
28
+ ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
29
+ if (reactContext != null && hasListeners) {
30
+ reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, data);
31
+ }
32
+ }
33
+
34
+ @Override
35
+ public void onTokenUpdated(@NonNull Context context, @NonNull String token) {
36
+ try {
37
+ ReactApplication reactApplication = ((ReactApplication)context.getApplicationContext());
38
+ reactNativeHost = reactApplication.getReactNativeHost();
39
+
40
+ sendEvent("token", token);
41
+ } catch (Exception e) {
42
+ Log.e(TAG, "Exception", e);
43
+ }
44
+ }
45
+
46
+ }
@@ -1 +1 @@
1
- github "radarlabs/radar-sdk-ios" "3.9.3"
1
+ github "radarlabs/radar-sdk-ios" "3.9.12"
package/ios/RNRadar.h CHANGED
@@ -3,6 +3,6 @@
3
3
  #import <React/RCTBridgeModule.h>
4
4
  #import <React/RCTEventEmitter.h>
5
5
 
6
- @interface RNRadar : RCTEventEmitter <RadarDelegate, RCTBridgeModule, CLLocationManagerDelegate>
6
+ @interface RNRadar : RCTEventEmitter <RadarDelegate, RadarVerifiedDelegate, RCTBridgeModule, CLLocationManagerDelegate>
7
7
 
8
8
  @end
package/ios/RNRadar.m CHANGED
@@ -16,6 +16,7 @@ RCT_EXPORT_MODULE();
16
16
  self = [super init];
17
17
  if (self) {
18
18
  [Radar setDelegate:self];
19
+ [Radar setVerifiedDelegate:self];
19
20
  locationManager = [CLLocationManager new];
20
21
  locationManager.delegate = self;
21
22
  }
@@ -38,7 +39,7 @@ RCT_EXPORT_MODULE();
38
39
  }
39
40
 
40
41
  - (NSArray<NSString *> *)supportedEvents {
41
- return @[@"events", @"location", @"clientLocation", @"error", @"log"];
42
+ return @[@"events", @"location", @"clientLocation", @"error", @"log", @"token"];
42
43
  }
43
44
 
44
45
  - (void)startObserving {
@@ -91,7 +92,15 @@ RCT_EXPORT_MODULE();
91
92
  }
92
93
  }
93
94
 
95
+ - (void)didUpdateToken:(NSString *)token {
96
+ if (hasListeners) {
97
+ [self sendEventWithName:@"token" body:token];
98
+ }
99
+ }
100
+
94
101
  RCT_EXPORT_METHOD(initialize:(NSString *)publishableKey fraud:(BOOL)fraud) {
102
+ [[NSUserDefaults standardUserDefaults] setObject:@"ReactNative" forKey:@"radar-xPlatformSDKType"];
103
+ [[NSUserDefaults standardUserDefaults] setObject:@"3.9.3" forKey:@"radar-xPlatformSDKVersion"];
95
104
  [Radar initializeWithPublishableKey:publishableKey];
96
105
  }
97
106
 
@@ -231,7 +240,7 @@ RCT_EXPORT_METHOD(getLocation:(NSString *)desiredAccuracy resolve:(RCTPromiseRes
231
240
 
232
241
  RCT_EXPORT_METHOD(trackOnce:(NSDictionary *)optionsDict resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
233
242
  RadarTrackingOptionsDesiredAccuracy desiredAccuracy;
234
- BOOL beaconsTrackingOption = NO;
243
+ BOOL beacons = NO;
235
244
  desiredAccuracy = RadarTrackingOptionsDesiredAccuracyMedium;
236
245
 
237
246
  __block RCTPromiseResolveBlock resolver = resolve;
@@ -285,21 +294,28 @@ RCT_EXPORT_METHOD(trackOnce:(NSDictionary *)optionsDict resolve:(RCTPromiseResol
285
294
  }
286
295
  }
287
296
 
288
- BOOL beacons = optionsDict[@"beacons"];
289
-
290
- if (beacons) {
291
- beaconsTrackingOption = beacons;
297
+ NSNumber *beaconsNumber = optionsDict[@"beacons"];
298
+ if (beaconsNumber != nil && [beaconsNumber isKindOfClass:[NSNumber class]]) {
299
+ beacons = [beaconsNumber boolValue];
292
300
  }
293
301
 
294
- [Radar trackOnceWithDesiredAccuracy:desiredAccuracy beacons:beaconsTrackingOption completionHandler:completionHandler];
302
+ [Radar trackOnceWithDesiredAccuracy:desiredAccuracy beacons:beacons completionHandler:completionHandler];
295
303
  }
296
304
  }
297
305
 
298
- RCT_EXPORT_METHOD(trackVerified:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
299
- __block RCTPromiseResolveBlock resolver = resolve;
300
- __block RCTPromiseRejectBlock rejecter = reject;
306
+ RCT_EXPORT_METHOD(trackVerified:(NSDictionary *)optionsDict resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
307
+ BOOL beacons = NO;
308
+ if (optionsDict != nil) {
309
+ NSNumber *beaconsNumber = optionsDict[@"beacons"];
310
+ if (beaconsNumber != nil && [beaconsNumber isKindOfClass:[NSNumber class]]) {
311
+ beacons = [beaconsNumber boolValue];
312
+ }
313
+ }
301
314
 
302
- RadarTrackCompletionHandler completionHandler = ^(RadarStatus status, CLLocation * _Nullable location, NSArray<RadarEvent *> * _Nullable events, RadarUser * _Nullable user) {
315
+ __block RCTPromiseResolveBlock resolver = resolve;
316
+ __block RCTPromiseRejectBlock rejecter = reject;
317
+
318
+ RadarTrackCompletionHandler completionHandler = ^(RadarStatus status, CLLocation * _Nullable location, NSArray<RadarEvent *> * _Nullable events, RadarUser * _Nullable user) {
303
319
  if (status == RadarStatusSuccess && resolver) {
304
320
  NSMutableDictionary *dict = [NSMutableDictionary new];
305
321
  [dict setObject:[Radar stringForStatus:status] forKey:@"status"];
@@ -318,16 +334,24 @@ RCT_EXPORT_METHOD(trackVerified:(RCTPromiseResolveBlock)resolve reject:(RCTPromi
318
334
  }
319
335
  resolver = nil;
320
336
  rejecter = nil;
321
- };
337
+ };
322
338
 
323
- [Radar trackVerifiedWithCompletionHandler:completionHandler];
339
+ [Radar trackVerifiedWithBeacons:beacons completionHandler:completionHandler];
324
340
  }
325
341
 
326
- RCT_EXPORT_METHOD(trackVerifiedToken:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
327
- __block RCTPromiseResolveBlock resolver = resolve;
328
- __block RCTPromiseRejectBlock rejecter = reject;
342
+ RCT_EXPORT_METHOD(trackVerifiedToken:(NSDictionary *)optionsDict resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
343
+ BOOL beacons = NO;
344
+ if (optionsDict != nil) {
345
+ NSNumber *beaconsNumber = optionsDict[@"beacons"];
346
+ if (beaconsNumber != nil && [beaconsNumber isKindOfClass:[NSNumber class]]) {
347
+ beacons = [beaconsNumber boolValue];
348
+ }
349
+ }
350
+
351
+ __block RCTPromiseResolveBlock resolver = resolve;
352
+ __block RCTPromiseRejectBlock rejecter = reject;
329
353
 
330
- RadarTrackTokenCompletionHandler completionHandler = ^(RadarStatus status, NSString * _Nullable token) {
354
+ RadarTrackTokenCompletionHandler completionHandler = ^(RadarStatus status, NSString * _Nullable token) {
331
355
  if (status == RadarStatusSuccess && resolver) {
332
356
  NSMutableDictionary *dict = [NSMutableDictionary new];
333
357
  [dict setObject:[Radar stringForStatus:status] forKey:@"status"];
@@ -340,9 +364,9 @@ RCT_EXPORT_METHOD(trackVerifiedToken:(RCTPromiseResolveBlock)resolve reject:(RCT
340
364
  }
341
365
  resolver = nil;
342
366
  rejecter = nil;
343
- };
367
+ };
344
368
 
345
- [Radar trackVerifiedTokenWithCompletionHandler:completionHandler];
369
+ [Radar trackVerifiedTokenWithBeacons:beacons completionHandler:completionHandler];
346
370
  }
347
371
 
348
372
  RCT_EXPORT_METHOD(startTrackingEfficient) {
@@ -362,6 +386,29 @@ RCT_EXPORT_METHOD(startTrackingCustom:(NSDictionary *)optionsDict) {
362
386
  [Radar startTrackingWithOptions:options];
363
387
  }
364
388
 
389
+ RCT_EXPORT_METHOD(startTrackingVerified:(NSDictionary *)optionsDict) {
390
+ BOOL token = NO;
391
+ BOOL beacons = NO;
392
+ double interval = 1;
393
+
394
+ if (optionsDict != nil) {
395
+ NSNumber *tokenNumber = optionsDict[@"token"];
396
+ if (tokenNumber != nil && [tokenNumber isKindOfClass:[NSNumber class]]) {
397
+ token = [tokenNumber boolValue];
398
+ }
399
+ NSNumber *beaconsNumber = optionsDict[@"beacons"];
400
+ if (beaconsNumber != nil && [beaconsNumber isKindOfClass:[NSNumber class]]) {
401
+ beacons = [beaconsNumber boolValue];
402
+ }
403
+ NSNumber *intervalNumber = optionsDict[@"interval"];
404
+ if (intervalNumber != nil && [intervalNumber isKindOfClass:[NSNumber class]]) {
405
+ interval = [intervalNumber doubleValue];
406
+ }
407
+ }
408
+
409
+ [Radar startTrackingVerified:token interval:interval beacons:beacons];
410
+ }
411
+
365
412
  RCT_EXPORT_METHOD(mockTracking:(NSDictionary *)optionsDict) {
366
413
  if (optionsDict == nil) {
367
414
  return;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "React Native module for Radar, the leading geofencing and location tracking platform",
4
4
  "homepage": "https://radar.com",
5
5
  "license": "Apache-2.0",
6
- "version": "3.9.1",
6
+ "version": "3.9.3",
7
7
  "main": "js/index.js",
8
8
  "files": [
9
9
  "android",
@@ -15,5 +15,5 @@ Pod::Spec.new do |s|
15
15
  s.platform = :ios, "10.0"
16
16
 
17
17
  s.dependency "React"
18
- s.dependency "RadarSDK", "~> 3.9.3"
18
+ s.dependency "RadarSDK", "~> 3.9.12"
19
19
  end