react-native-radar 3.5.11 → 3.7.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 +78 -18
- package/android/src/main/java/io/radar/react/RNRadarReceiver.java +3 -1
- package/ios/Cartfile.resolved +1 -1
- package/ios/RNRadar.m +59 -16
- package/js/index.native.js +12 -7
- package/js/index.web.js +5 -0
- 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.
|
|
21
|
+
versionName '3.7.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.
|
|
48
|
+
api 'io.radar:sdk:3.7.2'
|
|
49
49
|
}
|
|
@@ -47,9 +47,29 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
47
47
|
private static final int PERMISSIONS_REQUEST_CODE = 20160525; // random request code (Radar's birthday!)
|
|
48
48
|
private Promise mPermissionsRequestPromise;
|
|
49
49
|
|
|
50
|
+
private RNRadarReceiver receiver;
|
|
51
|
+
private int listenerCount = 0;
|
|
52
|
+
|
|
50
53
|
public RNRadarModule(ReactApplicationContext reactContext) {
|
|
51
54
|
super(reactContext);
|
|
52
|
-
|
|
55
|
+
receiver = new RNRadarReceiver();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@ReactMethod
|
|
59
|
+
public void addListener(String eventName) {
|
|
60
|
+
if (listenerCount == 0) {
|
|
61
|
+
receiver.hasListeners = true;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
listenerCount += 1;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@ReactMethod
|
|
68
|
+
public void removeListeners(Integer count) {
|
|
69
|
+
listenerCount -= count;
|
|
70
|
+
if (listenerCount == 0) {
|
|
71
|
+
receiver.hasListeners = false;
|
|
72
|
+
}
|
|
53
73
|
}
|
|
54
74
|
|
|
55
75
|
@Override
|
|
@@ -60,6 +80,7 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
60
80
|
@ReactMethod
|
|
61
81
|
public void initialize(String publishableKey) {
|
|
62
82
|
Radar.initialize(getReactApplicationContext(), publishableKey);
|
|
83
|
+
Radar.setReceiver(receiver);
|
|
63
84
|
}
|
|
64
85
|
|
|
65
86
|
@ReactMethod
|
|
@@ -127,11 +148,6 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
127
148
|
Radar.setAnonymousTrackingEnabled(enabled);
|
|
128
149
|
}
|
|
129
150
|
|
|
130
|
-
@ReactMethod
|
|
131
|
-
public void setAdIdEnabled(boolean enabled) {
|
|
132
|
-
Radar.setAdIdEnabled(enabled);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
151
|
@ReactMethod
|
|
136
152
|
public void getPermissionsStatus(final Promise promise) {
|
|
137
153
|
if (promise == null) {
|
|
@@ -305,6 +321,40 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
305
321
|
}
|
|
306
322
|
}
|
|
307
323
|
|
|
324
|
+
@ReactMethod
|
|
325
|
+
public void trackVerified(final Promise promise) {
|
|
326
|
+
Radar.trackVerified(new Radar.RadarTrackCallback() {
|
|
327
|
+
@Override
|
|
328
|
+
public void onComplete(@NonNull Radar.RadarStatus status, @Nullable Location location, @Nullable RadarEvent[] events, @Nullable RadarUser user) {
|
|
329
|
+
if (promise == null) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
try {
|
|
334
|
+
if (status == Radar.RadarStatus.SUCCESS) {
|
|
335
|
+
WritableMap map = Arguments.createMap();
|
|
336
|
+
map.putString("status", status.toString());
|
|
337
|
+
if (location != null) {
|
|
338
|
+
map.putMap("location", RNRadarUtils.mapForJson(Radar.jsonForLocation(location)));
|
|
339
|
+
}
|
|
340
|
+
if (events != null) {
|
|
341
|
+
map.putArray("events", RNRadarUtils.arrayForJson(RadarEvent.toJson(events)));
|
|
342
|
+
}
|
|
343
|
+
if (user != null) {
|
|
344
|
+
map.putMap("user", RNRadarUtils.mapForJson(user.toJson()));
|
|
345
|
+
}
|
|
346
|
+
promise.resolve(map);
|
|
347
|
+
} else {
|
|
348
|
+
promise.reject(status.toString(), status.toString());
|
|
349
|
+
}
|
|
350
|
+
} catch (JSONException e) {
|
|
351
|
+
Log.e(TAG, "JSONException", e);
|
|
352
|
+
promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
|
|
308
358
|
@ReactMethod
|
|
309
359
|
public void startTrackingEfficient() {
|
|
310
360
|
Radar.startTracking(RadarTrackingOptions.EFFICIENT);
|
|
@@ -1093,27 +1143,31 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
1093
1143
|
}
|
|
1094
1144
|
|
|
1095
1145
|
@ReactMethod
|
|
1096
|
-
public void
|
|
1146
|
+
public void logConversion(ReadableMap optionsMap, final Promise promise) throws JSONException {
|
|
1097
1147
|
if (promise == null) {
|
|
1098
1148
|
return;
|
|
1099
1149
|
}
|
|
1150
|
+
|
|
1151
|
+
if (!optionsMap.hasKey("name")) {
|
|
1152
|
+
promise.reject(Radar.RadarStatus.ERROR_BAD_REQUEST.toString(), Radar.RadarStatus.ERROR_BAD_REQUEST.toString());
|
|
1153
|
+
|
|
1154
|
+
return;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
String name = optionsMap.getString("name");
|
|
1158
|
+
Double revenue = optionsMap.hasKey("revenue") ? new Double(optionsMap.getDouble("revenue")) : null;
|
|
1159
|
+
ReadableMap metadata = optionsMap.hasKey("metadata") ? optionsMap.getMap("metadata") : null;
|
|
1100
1160
|
|
|
1101
1161
|
JSONObject metadataObj = RNRadarUtils.jsonForMap(metadata);
|
|
1102
|
-
Radar.
|
|
1162
|
+
Radar.RadarLogConversionCallback callback = new Radar.RadarLogConversionCallback() {
|
|
1103
1163
|
@Override
|
|
1104
|
-
public void onComplete(@NonNull Radar.RadarStatus status, @Nullable
|
|
1164
|
+
public void onComplete(@NonNull Radar.RadarStatus status, @Nullable RadarEvent event) {
|
|
1105
1165
|
try {
|
|
1106
1166
|
if (status == Radar.RadarStatus.SUCCESS) {
|
|
1107
1167
|
WritableMap map = Arguments.createMap();
|
|
1108
1168
|
map.putString("status", status.toString());
|
|
1109
|
-
if (
|
|
1110
|
-
map.putMap("
|
|
1111
|
-
}
|
|
1112
|
-
if (events != null) {
|
|
1113
|
-
map.putArray("events", RNRadarUtils.arrayForJson(RadarEvent.toJson(events)));
|
|
1114
|
-
}
|
|
1115
|
-
if (user != null) {
|
|
1116
|
-
map.putMap("user", RNRadarUtils.mapForJson(user.toJson()));
|
|
1169
|
+
if (event != null) {
|
|
1170
|
+
map.putMap("event", RNRadarUtils.mapForJson(event.toJson()));
|
|
1117
1171
|
}
|
|
1118
1172
|
promise.resolve(map);
|
|
1119
1173
|
} else {
|
|
@@ -1124,7 +1178,13 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
|
|
|
1124
1178
|
promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
|
|
1125
1179
|
}
|
|
1126
1180
|
}
|
|
1127
|
-
}
|
|
1181
|
+
};
|
|
1182
|
+
|
|
1183
|
+
if (revenue != null) {
|
|
1184
|
+
Radar.logConversion(name, revenue, metadataObj, callback);
|
|
1185
|
+
} else {
|
|
1186
|
+
Radar.logConversion(name, metadataObj, callback);
|
|
1187
|
+
}
|
|
1128
1188
|
}
|
|
1129
1189
|
|
|
1130
1190
|
}
|
|
@@ -12,6 +12,7 @@ import com.facebook.react.ReactInstanceManager;
|
|
|
12
12
|
import com.facebook.react.ReactNativeHost;
|
|
13
13
|
import com.facebook.react.bridge.Arguments;
|
|
14
14
|
import com.facebook.react.bridge.ReactContext;
|
|
15
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
15
16
|
import com.facebook.react.bridge.WritableMap;
|
|
16
17
|
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
17
18
|
|
|
@@ -25,11 +26,12 @@ public class RNRadarReceiver extends RadarReceiver {
|
|
|
25
26
|
|
|
26
27
|
private ReactNativeHost reactNativeHost;
|
|
27
28
|
private static final String TAG = "RNRadarReceiver";
|
|
29
|
+
protected boolean hasListeners = false;
|
|
28
30
|
|
|
29
31
|
private void sendEvent(final String eventName, final Object data) {
|
|
30
32
|
final ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager();
|
|
31
33
|
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
|
|
32
|
-
if (reactContext != null) {
|
|
34
|
+
if (reactContext != null && hasListeners) {
|
|
33
35
|
reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, data);
|
|
34
36
|
}
|
|
35
37
|
}
|
package/ios/Cartfile.resolved
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
github "radarlabs/radar-sdk-ios" "3.
|
|
1
|
+
github "radarlabs/radar-sdk-ios" "3.7.7"
|
package/ios/RNRadar.m
CHANGED
|
@@ -139,10 +139,6 @@ RCT_EXPORT_METHOD(setAnonymousTrackingEnabled:(BOOL)enabled) {
|
|
|
139
139
|
[Radar setAnonymousTrackingEnabled:enabled];
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
RCT_EXPORT_METHOD(setAdIdEnabled:(BOOL)enabled) {
|
|
143
|
-
[Radar setAdIdEnabled:enabled];
|
|
144
|
-
}
|
|
145
|
-
|
|
146
142
|
RCT_REMAP_METHOD(getPermissionsStatus, getPermissionsStatusWithResolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
|
147
143
|
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
|
|
148
144
|
NSString *statusStr;
|
|
@@ -287,6 +283,34 @@ RCT_EXPORT_METHOD(trackOnce:(NSDictionary *)optionsDict resolve:(RCTPromiseResol
|
|
|
287
283
|
}
|
|
288
284
|
}
|
|
289
285
|
|
|
286
|
+
RCT_EXPORT_METHOD(trackVerified:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
|
|
287
|
+
__block RCTPromiseResolveBlock resolver = resolve;
|
|
288
|
+
__block RCTPromiseRejectBlock rejecter = reject;
|
|
289
|
+
|
|
290
|
+
RadarTrackCompletionHandler completionHandler = ^(RadarStatus status, CLLocation * _Nullable location, NSArray<RadarEvent *> * _Nullable events, RadarUser * _Nullable user) {
|
|
291
|
+
if (status == RadarStatusSuccess && resolver) {
|
|
292
|
+
NSMutableDictionary *dict = [NSMutableDictionary new];
|
|
293
|
+
[dict setObject:[Radar stringForStatus:status] forKey:@"status"];
|
|
294
|
+
if (location) {
|
|
295
|
+
[dict setObject:[Radar dictionaryForLocation:location] forKey:@"location"];
|
|
296
|
+
}
|
|
297
|
+
if (events) {
|
|
298
|
+
[dict setObject:[RadarEvent arrayForEvents:events] forKey:@"events"];
|
|
299
|
+
}
|
|
300
|
+
if (user) {
|
|
301
|
+
[dict setObject:[user dictionaryValue] forKey:@"user"];
|
|
302
|
+
}
|
|
303
|
+
resolver(dict);
|
|
304
|
+
} else if (rejecter) {
|
|
305
|
+
rejecter([Radar stringForStatus:status], [Radar stringForStatus:status], nil);
|
|
306
|
+
}
|
|
307
|
+
resolver = nil;
|
|
308
|
+
rejecter = nil;
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
[Radar trackVerifiedWithCompletionHandler:completionHandler];
|
|
312
|
+
}
|
|
313
|
+
|
|
290
314
|
|
|
291
315
|
RCT_EXPORT_METHOD(startTrackingEfficient) {
|
|
292
316
|
[Radar startTrackingWithOptions:RadarTrackingOptions.presetEfficient];
|
|
@@ -969,22 +993,35 @@ RCT_EXPORT_METHOD(getMatrix:(NSDictionary *)optionsDict resolve:(RCTPromiseResol
|
|
|
969
993
|
}];
|
|
970
994
|
}
|
|
971
995
|
|
|
972
|
-
RCT_EXPORT_METHOD(
|
|
996
|
+
RCT_EXPORT_METHOD(logConversion:(NSDictionary *)optionsDict resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
|
|
997
|
+
if (optionsDict == nil) {
|
|
998
|
+
if (reject) {
|
|
999
|
+
reject([Radar stringForStatus:RadarStatusErrorBadRequest], [Radar stringForStatus:RadarStatusErrorBadRequest], nil);
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
return;
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
NSString *name = optionsDict[@"name"];
|
|
1006
|
+
NSNumber *revenue = optionsDict[@"revenue"];
|
|
1007
|
+
NSDictionary *metadata = optionsDict[@"metadata"];
|
|
1008
|
+
if (name == nil) {
|
|
1009
|
+
if (reject) {
|
|
1010
|
+
reject([Radar stringForStatus:RadarStatusErrorBadRequest], [Radar stringForStatus:RadarStatusErrorBadRequest], nil);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
return;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
973
1016
|
__block RCTPromiseResolveBlock resolver = resolve;
|
|
974
1017
|
__block RCTPromiseRejectBlock rejecter = reject;
|
|
975
|
-
|
|
976
|
-
|
|
1018
|
+
|
|
1019
|
+
RadarLogConversionCompletionHandler completionHandler = ^(RadarStatus status, RadarEvent * _Nullable event) {
|
|
977
1020
|
if (status == RadarStatusSuccess && resolver) {
|
|
978
1021
|
NSMutableDictionary *dict = [NSMutableDictionary new];
|
|
979
1022
|
[dict setObject:[Radar stringForStatus:status] forKey:@"status"];
|
|
980
|
-
if (
|
|
981
|
-
[dict setObject:[
|
|
982
|
-
}
|
|
983
|
-
if (events) {
|
|
984
|
-
[dict setObject:[RadarEvent arrayForEvents:events] forKey:@"events"];
|
|
985
|
-
}
|
|
986
|
-
if (user) {
|
|
987
|
-
[dict setObject:[user dictionaryValue] forKey:@"user"];
|
|
1023
|
+
if (event) {
|
|
1024
|
+
[dict setObject:[event dictionaryValue] forKey:@"event"];
|
|
988
1025
|
}
|
|
989
1026
|
resolver(dict);
|
|
990
1027
|
} else if (rejecter) {
|
|
@@ -992,6 +1029,12 @@ RCT_EXPORT_METHOD(sendEvent:(NSString*) customType metadata:(NSDictionary *)meta
|
|
|
992
1029
|
}
|
|
993
1030
|
resolver = nil;
|
|
994
1031
|
rejecter = nil;
|
|
995
|
-
}
|
|
1032
|
+
};
|
|
1033
|
+
|
|
1034
|
+
if (revenue) {
|
|
1035
|
+
[Radar logConversionWithName:name metadata:metadata completionHandler:completionHandler];
|
|
1036
|
+
} else {
|
|
1037
|
+
[Radar logConversionWithName:name revenue:revenue metadata:metadata completionHandler:completionHandler];
|
|
1038
|
+
}
|
|
996
1039
|
}
|
|
997
1040
|
@end
|
package/js/index.native.js
CHANGED
|
@@ -42,10 +42,6 @@ const setAnonymousTrackingEnabled = (enabled) => (
|
|
|
42
42
|
NativeModules.RNRadar.setAnonymousTrackingEnabled(enabled)
|
|
43
43
|
)
|
|
44
44
|
|
|
45
|
-
const setAdIdEnabled = (enabled) => (
|
|
46
|
-
NativeModules.RNRadar.setAdIdEnabled(enabled)
|
|
47
|
-
)
|
|
48
|
-
|
|
49
45
|
const getPermissionsStatus = () => (
|
|
50
46
|
NativeModules.RNRadar.getPermissionsStatus()
|
|
51
47
|
);
|
|
@@ -70,6 +66,10 @@ const trackOnce = options => {
|
|
|
70
66
|
return NativeModules.RNRadar.trackOnce(backCompatibleOptions)
|
|
71
67
|
};
|
|
72
68
|
|
|
69
|
+
const trackVerified = () => (
|
|
70
|
+
NativeModules.RNRadar.trackVerified()
|
|
71
|
+
);
|
|
72
|
+
|
|
73
73
|
const startTrackingEfficient = () => (
|
|
74
74
|
NativeModules.RNRadar.startTrackingEfficient()
|
|
75
75
|
);
|
|
@@ -170,8 +170,12 @@ const getMatrix = options => (
|
|
|
170
170
|
NativeModules.RNRadar.getMatrix(options)
|
|
171
171
|
);
|
|
172
172
|
|
|
173
|
-
const
|
|
174
|
-
NativeModules.RNRadar.
|
|
173
|
+
const logConversion = options => (
|
|
174
|
+
NativeModules.RNRadar.logConversion(options)
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
const sendEvent = (name, metadata) => (
|
|
178
|
+
NativeModules.RNRadar.sendEvent(name, metadata)
|
|
175
179
|
)
|
|
176
180
|
|
|
177
181
|
const on = (event, callback) => (
|
|
@@ -196,11 +200,11 @@ const Radar = {
|
|
|
196
200
|
setMetadata,
|
|
197
201
|
getMetadata,
|
|
198
202
|
setAnonymousTrackingEnabled,
|
|
199
|
-
setAdIdEnabled,
|
|
200
203
|
getPermissionsStatus,
|
|
201
204
|
requestPermissions,
|
|
202
205
|
getLocation,
|
|
203
206
|
trackOnce,
|
|
207
|
+
trackVerified,
|
|
204
208
|
startTrackingEfficient,
|
|
205
209
|
startTrackingResponsive,
|
|
206
210
|
startTrackingContinuous,
|
|
@@ -226,6 +230,7 @@ const Radar = {
|
|
|
226
230
|
ipGeocode,
|
|
227
231
|
getDistance,
|
|
228
232
|
getMatrix,
|
|
233
|
+
logConversion,
|
|
229
234
|
sendEvent,
|
|
230
235
|
on,
|
|
231
236
|
off,
|
package/js/index.web.js
CHANGED
|
@@ -87,6 +87,10 @@ const trackOnce = options => {
|
|
|
87
87
|
});
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
+
const trackVerified = () => {
|
|
91
|
+
// not implemented
|
|
92
|
+
};
|
|
93
|
+
|
|
90
94
|
const startTrackingEfficient = () => {
|
|
91
95
|
// not implemented
|
|
92
96
|
};
|
|
@@ -371,6 +375,7 @@ const Radar = {
|
|
|
371
375
|
requestPermissions,
|
|
372
376
|
getLocation,
|
|
373
377
|
trackOnce,
|
|
378
|
+
trackVerified,
|
|
374
379
|
startTrackingEfficient,
|
|
375
380
|
startTrackingResponsive,
|
|
376
381
|
startTrackingContinuous,
|
package/package.json
CHANGED