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.
- package/android/build.gradle +2 -2
- package/android/src/main/java/io/radar/react/RNRadarModule.java +62 -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.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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
}
|
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.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
|
|
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