react-native-radar 3.9.0 → 3.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +2 -2
- package/android/src/main/java/io/radar/react/RNRadarModule.java +60 -6
- package/android/src/main/java/io/radar/react/RNRadarVerifiedReceiver.java +46 -0
- package/ios/Cartfile.resolved +1 -1
- package/ios/RNRadar.h +1 -1
- package/ios/RNRadar.m +66 -19
- package/package.json +1 -1
- package/react-native-radar.podspec +1 -1
package/android/build.gradle
CHANGED
|
@@ -18,7 +18,7 @@ android {
|
|
|
18
18
|
minSdkVersion 16
|
|
19
19
|
targetSdkVersion 31
|
|
20
20
|
versionCode 1
|
|
21
|
-
versionName '3.9.
|
|
21
|
+
versionName '3.9.2'
|
|
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.
|
|
48
|
+
api 'io.radar:sdk:3.9.8'
|
|
49
49
|
}
|
|
@@ -25,6 +25,7 @@ import io.radar.sdk.Radar;
|
|
|
25
25
|
import io.radar.sdk.RadarTrackingOptions;
|
|
26
26
|
import io.radar.sdk.RadarTrackingOptions.RadarTrackingOptionsForegroundService;
|
|
27
27
|
import io.radar.sdk.RadarTripOptions;
|
|
28
|
+
import io.radar.sdk.RadarVerifiedReceiver;
|
|
28
29
|
import io.radar.sdk.model.RadarAddress;
|
|
29
30
|
import io.radar.sdk.model.RadarContext;
|
|
30
31
|
import io.radar.sdk.model.RadarEvent;
|
|
@@ -49,16 +50,22 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
49
50
|
private Promise mPermissionsRequestPromise;
|
|
50
51
|
|
|
51
52
|
private RNRadarReceiver receiver;
|
|
53
|
+
private RNRadarVerifiedReceiver verifiedReceiver;
|
|
52
54
|
private int listenerCount = 0;
|
|
55
|
+
private boolean fraud = false;
|
|
53
56
|
|
|
54
57
|
public RNRadarModule(ReactApplicationContext reactContext) {
|
|
55
58
|
super(reactContext);
|
|
56
59
|
receiver = new RNRadarReceiver();
|
|
60
|
+
verifiedReceiver = new RNRadarVerifiedReceiver();
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
@ReactMethod
|
|
60
64
|
public void addListener(String eventName) {
|
|
61
65
|
if (listenerCount == 0) {
|
|
66
|
+
if (fraud) {
|
|
67
|
+
verifiedReceiver.hasListeners = true;
|
|
68
|
+
}
|
|
62
69
|
receiver.hasListeners = true;
|
|
63
70
|
}
|
|
64
71
|
|
|
@@ -69,6 +76,9 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
69
76
|
public void removeListeners(Integer count) {
|
|
70
77
|
listenerCount -= count;
|
|
71
78
|
if (listenerCount == 0) {
|
|
79
|
+
if (fraud) {
|
|
80
|
+
verifiedReceiver.hasListeners = false;
|
|
81
|
+
}
|
|
72
82
|
receiver.hasListeners = false;
|
|
73
83
|
}
|
|
74
84
|
}
|
|
@@ -80,8 +90,15 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
80
90
|
|
|
81
91
|
@ReactMethod
|
|
82
92
|
public void initialize(String publishableKey, boolean fraud) {
|
|
93
|
+
this.fraud = fraud;
|
|
94
|
+
SharedPreferences.Editor editor = getReactApplicationContext().getSharedPreferences("RadarSDK", Context.MODE_PRIVATE).edit();
|
|
95
|
+
editor.putString("x_platform_sdk_type", "ReactNative");
|
|
96
|
+
editor.putString("x_platform_sdk_version", "3.9.2");
|
|
97
|
+
editor.apply();
|
|
98
|
+
|
|
83
99
|
if (fraud) {
|
|
84
100
|
Radar.initialize(getReactApplicationContext(), publishableKey, receiver, Radar.RadarLocationServicesProvider.GOOGLE, fraud);
|
|
101
|
+
Radar.setVerifiedReceiver(verifiedReceiver);
|
|
85
102
|
} else {
|
|
86
103
|
Radar.initialize(getReactApplicationContext(), publishableKey);
|
|
87
104
|
Radar.setReceiver(receiver);
|
|
@@ -359,8 +376,17 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
359
376
|
}
|
|
360
377
|
|
|
361
378
|
@ReactMethod
|
|
362
|
-
public void trackVerified(final Promise promise) {
|
|
363
|
-
|
|
379
|
+
public void trackVerified(ReadableMap optionsMap, final Promise promise) {
|
|
380
|
+
|
|
381
|
+
boolean beaconsTrackingOption = false;
|
|
382
|
+
|
|
383
|
+
if (optionsMap != null) {
|
|
384
|
+
if (optionsMap.hasKey("beacons")) {
|
|
385
|
+
beaconsTrackingOption = optionsMap.getBoolean("beacons");
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
Radar.RadarTrackCallback trackCallback = new Radar.RadarTrackCallback() {
|
|
364
390
|
@Override
|
|
365
391
|
public void onComplete(@NonNull Radar.RadarStatus status, @Nullable Location location, @Nullable RadarEvent[] events, @Nullable RadarUser user) {
|
|
366
392
|
if (promise == null) {
|
|
@@ -389,12 +415,23 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
389
415
|
promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
|
|
390
416
|
}
|
|
391
417
|
}
|
|
392
|
-
}
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
Radar.trackVerified(beaconsTrackingOption, trackCallback);
|
|
393
421
|
}
|
|
394
422
|
|
|
395
423
|
@ReactMethod
|
|
396
|
-
public void trackVerifiedToken(final Promise promise) {
|
|
397
|
-
|
|
424
|
+
public void trackVerifiedToken(ReadableMap optionsMap, final Promise promise) {
|
|
425
|
+
|
|
426
|
+
boolean beaconsTrackingOption = false;
|
|
427
|
+
|
|
428
|
+
if (optionsMap != null) {
|
|
429
|
+
if (optionsMap.hasKey("beacons")) {
|
|
430
|
+
beaconsTrackingOption = optionsMap.getBoolean("beacons");
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
Radar.RadarTrackTokenCallback trackTokenCallback = new Radar.RadarTrackTokenCallback() {
|
|
398
435
|
@Override
|
|
399
436
|
public void onComplete(@NonNull Radar.RadarStatus status, @Nullable String token) {
|
|
400
437
|
if (promise == null) {
|
|
@@ -417,7 +454,9 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
417
454
|
promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
|
|
418
455
|
}
|
|
419
456
|
}
|
|
420
|
-
}
|
|
457
|
+
};
|
|
458
|
+
|
|
459
|
+
Radar.trackVerifiedToken(beaconsTrackingOption, trackTokenCallback);
|
|
421
460
|
}
|
|
422
461
|
|
|
423
462
|
@ReactMethod
|
|
@@ -446,6 +485,21 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
446
485
|
}
|
|
447
486
|
}
|
|
448
487
|
|
|
488
|
+
@ReactMethod
|
|
489
|
+
public void startTrackingVerified(ReadableMap optionsMap) {
|
|
490
|
+
boolean token = false;
|
|
491
|
+
boolean beacons = false;
|
|
492
|
+
int interval = 1;
|
|
493
|
+
|
|
494
|
+
if (optionsMap != null) {
|
|
495
|
+
token = optionsMap.hasKey("token") ? optionsMap.getBoolean("token") : token;
|
|
496
|
+
beacons = optionsMap.hasKey("beacons") ? optionsMap.getBoolean("beacons") : beacons;
|
|
497
|
+
interval = optionsMap.hasKey("interval") ? optionsMap.getInt("interval") : interval;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
Radar.startTrackingVerified(token, interval, beacons);
|
|
501
|
+
}
|
|
502
|
+
|
|
449
503
|
@ReactMethod
|
|
450
504
|
public void mockTracking(ReadableMap optionsMap) {
|
|
451
505
|
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
|
+
}
|
package/ios/Cartfile.resolved
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
github "radarlabs/radar-sdk-ios" "3.9.
|
|
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.2" 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
|
|
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
|
-
|
|
289
|
-
|
|
290
|
-
|
|
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:
|
|
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
|
-
|
|
300
|
-
|
|
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
|
-
|
|
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
|
|
339
|
+
[Radar trackVerifiedWithBeacons:beacons completionHandler:completionHandler];
|
|
324
340
|
}
|
|
325
341
|
|
|
326
|
-
RCT_EXPORT_METHOD(trackVerifiedToken:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
|
|
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
|
|
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