@snowplow/react-native-tracker 0.2.0 → 1.1.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.
- package/CHANGELOG +24 -0
- package/LICENSE +2 -2
- package/README.md +130 -230
- package/RNSnowplowTracker.podspec +24 -0
- package/android/build.gradle +8 -9
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerModule.java +643 -121
- package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerPackage.java +0 -1
- package/android/src/main/java/com/snowplowanalytics/react/util/ConfigUtil.java +345 -0
- package/android/src/main/java/com/snowplowanalytics/react/util/EventUtil.java +291 -68
- package/android/src/main/java/com/snowplowanalytics/react/util/TrackerVersion.java +7 -0
- package/dist/index.d.ts +601 -116
- package/dist/index.js +1479 -107
- package/dist/index.js.map +1 -0
- package/ios/RNSnowplowTracker.h +19 -1
- package/ios/RNSnowplowTracker.m +831 -159
- package/ios/Util/RNConfigUtils.h +44 -0
- package/ios/Util/RNConfigUtils.m +207 -0
- package/ios/Util/RNTrackerVersion.h +27 -0
- package/ios/Util/RNTrackerVersion.m +27 -0
- package/ios/Util/RNUtilities.h +32 -0
- package/ios/Util/RNUtilities.m +68 -0
- package/package.json +44 -14
- package/ios/Podfile +0 -22
- package/ios/Podfile.lock +0 -37
- package/ios/RCTConvert+Snowplow.h +0 -17
- package/ios/RCTConvert+Snowplow.m +0 -57
- package/ios/RNSnowplowTracker.podspec +0 -22
- package/src/api.ts +0 -168
- package/src/index.ts +0 -71
- package/src/types.ts +0 -325
- package/src/utils.ts +0 -47
package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerModule.java
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
package com.snowplowanalytics.react.tracker;
|
|
3
2
|
|
|
4
3
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
@@ -8,21 +7,44 @@ import com.facebook.react.bridge.Promise;
|
|
|
8
7
|
|
|
9
8
|
import com.facebook.react.bridge.ReadableArray;
|
|
10
9
|
import com.facebook.react.bridge.ReadableMap;
|
|
10
|
+
|
|
11
|
+
import com.snowplowanalytics.snowplow.Snowplow;
|
|
12
|
+
import com.snowplowanalytics.snowplow.configuration.Configuration;
|
|
13
|
+
import com.snowplowanalytics.snowplow.configuration.EmitterConfiguration;
|
|
14
|
+
import com.snowplowanalytics.snowplow.configuration.GdprConfiguration;
|
|
15
|
+
import com.snowplowanalytics.snowplow.configuration.NetworkConfiguration;
|
|
16
|
+
import com.snowplowanalytics.snowplow.configuration.RemoteConfiguration;
|
|
17
|
+
import com.snowplowanalytics.snowplow.configuration.SessionConfiguration;
|
|
18
|
+
import com.snowplowanalytics.snowplow.configuration.TrackerConfiguration;
|
|
19
|
+
import com.snowplowanalytics.snowplow.configuration.SubjectConfiguration;
|
|
20
|
+
import com.snowplowanalytics.snowplow.configuration.GlobalContextsConfiguration;
|
|
21
|
+
import com.snowplowanalytics.snowplow.event.DeepLinkReceived;
|
|
22
|
+
import com.snowplowanalytics.snowplow.event.MessageNotification;
|
|
23
|
+
import com.snowplowanalytics.snowplow.globalcontexts.GlobalContext;
|
|
24
|
+
import com.snowplowanalytics.snowplow.controller.TrackerController;
|
|
25
|
+
import com.snowplowanalytics.snowplow.payload.SelfDescribingJson;
|
|
26
|
+
import com.snowplowanalytics.snowplow.event.SelfDescribing;
|
|
27
|
+
import com.snowplowanalytics.snowplow.event.ScreenView;
|
|
28
|
+
import com.snowplowanalytics.snowplow.event.Structured;
|
|
29
|
+
import com.snowplowanalytics.snowplow.event.PageView;
|
|
30
|
+
import com.snowplowanalytics.snowplow.event.Timing;
|
|
31
|
+
import com.snowplowanalytics.snowplow.event.ConsentGranted;
|
|
32
|
+
import com.snowplowanalytics.snowplow.event.ConsentWithdrawn;
|
|
33
|
+
import com.snowplowanalytics.snowplow.event.EcommerceTransactionItem;
|
|
34
|
+
import com.snowplowanalytics.snowplow.event.EcommerceTransaction;
|
|
35
|
+
import com.snowplowanalytics.snowplow.network.HttpMethod;
|
|
36
|
+
import com.snowplowanalytics.snowplow.internal.utils.Util;
|
|
37
|
+
import com.snowplowanalytics.snowplow.util.Size;
|
|
38
|
+
|
|
39
|
+
import java.util.List;
|
|
40
|
+
import java.util.ArrayList;
|
|
41
|
+
|
|
11
42
|
import com.snowplowanalytics.react.util.EventUtil;
|
|
12
|
-
import com.snowplowanalytics.
|
|
13
|
-
import com.snowplowanalytics.snowplow.tracker.Tracker;
|
|
14
|
-
import com.snowplowanalytics.snowplow.tracker.emitter.HttpMethod;
|
|
15
|
-
import com.snowplowanalytics.snowplow.tracker.emitter.RequestSecurity;
|
|
16
|
-
import com.snowplowanalytics.snowplow.tracker.events.SelfDescribing;
|
|
17
|
-
import com.snowplowanalytics.snowplow.tracker.events.Structured;
|
|
18
|
-
import com.snowplowanalytics.snowplow.tracker.events.ScreenView;
|
|
19
|
-
import com.snowplowanalytics.snowplow.tracker.events.PageView;
|
|
43
|
+
import com.snowplowanalytics.react.util.ConfigUtil;
|
|
20
44
|
|
|
21
45
|
public class RNSnowplowTrackerModule extends ReactContextBaseJavaModule {
|
|
22
46
|
|
|
23
47
|
private final ReactApplicationContext reactContext;
|
|
24
|
-
private Tracker tracker;
|
|
25
|
-
private Emitter emitter;
|
|
26
48
|
|
|
27
49
|
public RNSnowplowTrackerModule(ReactApplicationContext reactContext) {
|
|
28
50
|
super(reactContext);
|
|
@@ -35,163 +57,663 @@ public class RNSnowplowTrackerModule extends ReactContextBaseJavaModule {
|
|
|
35
57
|
}
|
|
36
58
|
|
|
37
59
|
@ReactMethod
|
|
38
|
-
public void
|
|
39
|
-
|
|
60
|
+
public void createTracker(ReadableMap argmap,
|
|
61
|
+
Promise promise) {
|
|
62
|
+
try {
|
|
63
|
+
String trackerNs = argmap.getString("namespace");
|
|
64
|
+
ReadableMap networkConfig = argmap.getMap("networkConfig");
|
|
65
|
+
|
|
66
|
+
// NetworkConfiguration
|
|
67
|
+
NetworkConfiguration networkConfiguration;
|
|
68
|
+
if (networkConfig.hasKey("method") && !networkConfig.isNull("method")) {
|
|
69
|
+
String method = networkConfig.getString("method");
|
|
70
|
+
networkConfiguration = new NetworkConfiguration(
|
|
71
|
+
networkConfig.getString("endpoint"),
|
|
72
|
+
("get".equalsIgnoreCase(method) ? HttpMethod.GET : HttpMethod.POST));
|
|
73
|
+
} else {
|
|
74
|
+
networkConfiguration = new NetworkConfiguration(networkConfig.getString("endpoint"));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Configurations
|
|
78
|
+
List<Configuration> controllers = new ArrayList<Configuration>();
|
|
79
|
+
|
|
80
|
+
// TrackerConfiguration
|
|
81
|
+
if (argmap.hasKey("trackerConfig")) {
|
|
82
|
+
ReadableMap trackerConfig = argmap.getMap("trackerConfig");
|
|
83
|
+
TrackerConfiguration trackerConfiguration = ConfigUtil.mkTrackerConfiguration(trackerConfig, this.reactContext);
|
|
84
|
+
controllers.add(trackerConfiguration);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// SessionConfiguration
|
|
88
|
+
if (argmap.hasKey("sessionConfig")) {
|
|
89
|
+
ReadableMap sessionConfig = argmap.getMap("sessionConfig");
|
|
90
|
+
SessionConfiguration sessionConfiguration = ConfigUtil.mkSessionConfiguration(sessionConfig);
|
|
91
|
+
controllers.add(sessionConfiguration);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// EmitterConfiguration
|
|
95
|
+
if (argmap.hasKey("emitterConfig")) {
|
|
96
|
+
ReadableMap emitterConfig = argmap.getMap("emitterConfig");
|
|
97
|
+
EmitterConfiguration emitterConfiguration = ConfigUtil.mkEmitterConfiguration(emitterConfig);
|
|
98
|
+
controllers.add(emitterConfiguration);
|
|
99
|
+
}
|
|
40
100
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
.sessionCheckInterval(options.getInt("checkInterval"))
|
|
78
|
-
.foregroundTimeout(options.getInt("foregroundTimeout"))
|
|
79
|
-
.backgroundTimeout(options.getInt("backgroundTimeout"))
|
|
80
|
-
.lifecycleEvents(options.getBoolean("lifecycleEvents"))
|
|
81
|
-
.screenContext(options.getBoolean("screenContext"))
|
|
82
|
-
.installTracking(options.getBoolean("installTracking"))
|
|
83
|
-
.build()
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
if (this.tracker != null) {
|
|
87
|
-
promise.resolve(true);
|
|
88
|
-
} else {
|
|
89
|
-
promise.reject("ERROR", "SnowplowTracker: initialize() method - tracker initialisation failed");
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@ReactMethod
|
|
95
|
-
public void setSubjectData(ReadableMap options,
|
|
101
|
+
// SubjectConfiguration
|
|
102
|
+
if (argmap.hasKey("subjectConfig")) {
|
|
103
|
+
ReadableMap subjectConfig = argmap.getMap("subjectConfig");
|
|
104
|
+
SubjectConfiguration subjectConfiguration = ConfigUtil.mkSubjectConfiguration(subjectConfig);
|
|
105
|
+
controllers.add(subjectConfiguration);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// GdprConfiguration
|
|
109
|
+
if (argmap.hasKey("gdprConfig")) {
|
|
110
|
+
ReadableMap gdprConfig = argmap.getMap("gdprConfig");
|
|
111
|
+
GdprConfiguration gdprConfiguration = ConfigUtil.mkGdprConfiguration(gdprConfig);
|
|
112
|
+
controllers.add(gdprConfiguration);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// GCConfiguration
|
|
116
|
+
if (argmap.hasKey("gcConfig")) {
|
|
117
|
+
ReadableArray gcConfig = argmap.getArray("gcConfig");
|
|
118
|
+
GlobalContextsConfiguration gcConfiguration = ConfigUtil.mkGCConfiguration(gcConfig);
|
|
119
|
+
controllers.add(gcConfiguration);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// create the tracker
|
|
123
|
+
Snowplow.createTracker(this.reactContext,
|
|
124
|
+
trackerNs,
|
|
125
|
+
networkConfiguration,
|
|
126
|
+
controllers.toArray(new Configuration[controllers.size()]));
|
|
127
|
+
|
|
128
|
+
promise.resolve(true);
|
|
129
|
+
|
|
130
|
+
} catch(Throwable t) {
|
|
131
|
+
promise.reject("ERROR", t.getMessage());
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@ReactMethod
|
|
136
|
+
public void removeTracker(ReadableMap details,
|
|
96
137
|
Promise promise) {
|
|
138
|
+
try {
|
|
139
|
+
String namespace = details.getString("tracker");
|
|
140
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
141
|
+
|
|
142
|
+
promise.resolve(Snowplow.removeTracker(trackerController));
|
|
143
|
+
|
|
144
|
+
} catch(Throwable t) {
|
|
145
|
+
promise.reject("ERROR", t.getMessage());
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@ReactMethod
|
|
150
|
+
public void removeAllTrackers(Promise promise) {
|
|
151
|
+
try {
|
|
152
|
+
Snowplow.removeAllTrackers();
|
|
153
|
+
promise.resolve(true);
|
|
154
|
+
|
|
155
|
+
} catch(Throwable t) {
|
|
156
|
+
promise.reject("ERROR", t.getMessage());
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@ReactMethod
|
|
161
|
+
public void trackSelfDescribingEvent(ReadableMap details,
|
|
162
|
+
Promise promise) {
|
|
163
|
+
try {
|
|
164
|
+
String namespace = details.getString("tracker");
|
|
165
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
166
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
167
|
+
|
|
168
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
169
|
+
|
|
170
|
+
SelfDescribingJson sdj = EventUtil.createSelfDescribingJson(argmap);
|
|
171
|
+
SelfDescribing event = new SelfDescribing(sdj);
|
|
172
|
+
|
|
173
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
174
|
+
event.customContexts.addAll(evCtxts);
|
|
175
|
+
|
|
176
|
+
trackerController.track(event);
|
|
177
|
+
promise.resolve(true);
|
|
178
|
+
|
|
179
|
+
} catch(Throwable t) {
|
|
180
|
+
promise.reject("ERROR", t.getMessage());
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@ReactMethod
|
|
185
|
+
public void trackStructuredEvent(ReadableMap details,
|
|
186
|
+
Promise promise) {
|
|
187
|
+
try {
|
|
188
|
+
String namespace = details.getString("tracker");
|
|
189
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
190
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
191
|
+
|
|
192
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
193
|
+
|
|
194
|
+
Structured event = EventUtil.createStructuredEvent(argmap);
|
|
195
|
+
|
|
196
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
197
|
+
event.customContexts.addAll(evCtxts);
|
|
198
|
+
|
|
199
|
+
trackerController.track(event);
|
|
200
|
+
promise.resolve(true);
|
|
201
|
+
|
|
202
|
+
} catch(Throwable t) {
|
|
203
|
+
promise.reject("ERROR", t.getMessage());
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
@ReactMethod
|
|
208
|
+
public void trackScreenViewEvent(ReadableMap details,
|
|
209
|
+
Promise promise) {
|
|
210
|
+
try {
|
|
211
|
+
String namespace = details.getString("tracker");
|
|
212
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
213
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
214
|
+
|
|
215
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
216
|
+
|
|
217
|
+
ScreenView event = EventUtil.createScreenViewEvent(argmap);
|
|
218
|
+
|
|
219
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
220
|
+
event.customContexts.addAll(evCtxts);
|
|
221
|
+
|
|
222
|
+
trackerController.track(event);
|
|
223
|
+
promise.resolve(true);
|
|
224
|
+
|
|
225
|
+
} catch(Throwable t) {
|
|
226
|
+
promise.reject("ERROR", t.getMessage());
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@ReactMethod
|
|
231
|
+
public void trackPageViewEvent(ReadableMap details,
|
|
232
|
+
Promise promise) {
|
|
233
|
+
try {
|
|
234
|
+
String namespace = details.getString("tracker");
|
|
235
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
236
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
237
|
+
|
|
238
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
239
|
+
|
|
240
|
+
PageView event = EventUtil.createPageViewEvent(argmap);
|
|
241
|
+
|
|
242
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
243
|
+
event.customContexts.addAll(evCtxts);
|
|
244
|
+
|
|
245
|
+
trackerController.track(event);
|
|
246
|
+
promise.resolve(true);
|
|
247
|
+
|
|
248
|
+
} catch(Throwable t) {
|
|
249
|
+
promise.reject("ERROR", t.getMessage());
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
@ReactMethod
|
|
254
|
+
public void trackTimingEvent(ReadableMap details,
|
|
255
|
+
Promise promise) {
|
|
256
|
+
try {
|
|
257
|
+
String namespace = details.getString("tracker");
|
|
258
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
259
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
260
|
+
|
|
261
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
262
|
+
|
|
263
|
+
Timing event = EventUtil.createTimingEvent(argmap);
|
|
264
|
+
|
|
265
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
266
|
+
event.customContexts.addAll(evCtxts);
|
|
267
|
+
|
|
268
|
+
trackerController.track(event);
|
|
269
|
+
promise.resolve(true);
|
|
270
|
+
|
|
271
|
+
} catch(Throwable t) {
|
|
272
|
+
promise.reject("ERROR", t.getMessage());
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
@ReactMethod
|
|
277
|
+
public void trackConsentGrantedEvent(ReadableMap details,
|
|
278
|
+
Promise promise) {
|
|
279
|
+
try {
|
|
280
|
+
String namespace = details.getString("tracker");
|
|
281
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
282
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
283
|
+
|
|
284
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
285
|
+
|
|
286
|
+
ConsentGranted event = EventUtil.createConsentGrantedEvent(argmap);
|
|
287
|
+
|
|
288
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
289
|
+
event.customContexts.addAll(evCtxts);
|
|
290
|
+
|
|
291
|
+
trackerController.track(event);
|
|
292
|
+
promise.resolve(true);
|
|
293
|
+
|
|
294
|
+
} catch(Throwable t) {
|
|
295
|
+
promise.reject("ERROR", t.getMessage());
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
@ReactMethod
|
|
300
|
+
public void trackConsentWithdrawnEvent(ReadableMap details,
|
|
301
|
+
Promise promise) {
|
|
302
|
+
try {
|
|
303
|
+
String namespace = details.getString("tracker");
|
|
304
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
305
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
306
|
+
|
|
307
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
308
|
+
|
|
309
|
+
ConsentWithdrawn event = EventUtil.createConsentWithdrawnEvent(argmap);
|
|
310
|
+
|
|
311
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
312
|
+
event.customContexts.addAll(evCtxts);
|
|
313
|
+
|
|
314
|
+
trackerController.track(event);
|
|
315
|
+
promise.resolve(true);
|
|
316
|
+
|
|
317
|
+
} catch(Throwable t) {
|
|
318
|
+
promise.reject("ERROR", t.getMessage());
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
@ReactMethod
|
|
323
|
+
public void trackEcommerceTransactionEvent(ReadableMap details,
|
|
324
|
+
Promise promise) {
|
|
325
|
+
try {
|
|
326
|
+
String namespace = details.getString("tracker");
|
|
327
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
328
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
97
329
|
|
|
98
|
-
|
|
99
|
-
|
|
330
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
331
|
+
|
|
332
|
+
EcommerceTransaction event = EventUtil.createEcommerceTransactionEvent(argmap);
|
|
333
|
+
|
|
334
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
335
|
+
event.customContexts.addAll(evCtxts);
|
|
336
|
+
|
|
337
|
+
trackerController.track(event);
|
|
338
|
+
promise.resolve(true);
|
|
339
|
+
|
|
340
|
+
} catch(Throwable t) {
|
|
341
|
+
promise.reject("ERROR", t.getMessage());
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
@ReactMethod
|
|
346
|
+
public void trackDeepLinkReceivedEvent(ReadableMap details,
|
|
347
|
+
Promise promise) {
|
|
348
|
+
try {
|
|
349
|
+
String namespace = details.getString("tracker");
|
|
350
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
351
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
352
|
+
|
|
353
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
354
|
+
|
|
355
|
+
DeepLinkReceived event = EventUtil.createDeepLinkReceivedEvent(argmap);
|
|
356
|
+
|
|
357
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
358
|
+
event.customContexts.addAll(evCtxts);
|
|
359
|
+
|
|
360
|
+
trackerController.track(event);
|
|
361
|
+
promise.resolve(true);
|
|
362
|
+
|
|
363
|
+
} catch(Throwable t) {
|
|
364
|
+
promise.reject("ERROR", t.getMessage());
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
@ReactMethod
|
|
369
|
+
public void trackMessageNotificationEvent(ReadableMap details,
|
|
370
|
+
Promise promise) {
|
|
371
|
+
try {
|
|
372
|
+
String namespace = details.getString("tracker");
|
|
373
|
+
ReadableMap argmap = details.getMap("eventData");
|
|
374
|
+
ReadableArray contexts = details.getArray("contexts");
|
|
375
|
+
|
|
376
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
377
|
+
|
|
378
|
+
MessageNotification event = EventUtil.createMessageNotificationEvent(argmap);
|
|
379
|
+
|
|
380
|
+
List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
|
|
381
|
+
event.customContexts.addAll(evCtxts);
|
|
382
|
+
|
|
383
|
+
trackerController.track(event);
|
|
384
|
+
promise.resolve(true);
|
|
385
|
+
|
|
386
|
+
} catch(Throwable t) {
|
|
387
|
+
promise.reject("ERROR", t.getMessage());
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
@ReactMethod
|
|
392
|
+
public void removeGlobalContexts(ReadableMap details,
|
|
393
|
+
Promise promise) {
|
|
394
|
+
try {
|
|
395
|
+
String namespace = details.getString("tracker");
|
|
396
|
+
String tag = details.getString("removeTag");
|
|
397
|
+
|
|
398
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
399
|
+
|
|
400
|
+
trackerController.getGlobalContexts().remove(tag);
|
|
401
|
+
promise.resolve(true);
|
|
402
|
+
|
|
403
|
+
} catch(Throwable t) {
|
|
404
|
+
promise.reject("ERROR", t.getMessage());
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
@ReactMethod
|
|
409
|
+
public void addGlobalContexts(ReadableMap details,
|
|
410
|
+
Promise promise) {
|
|
411
|
+
try {
|
|
412
|
+
String namespace = details.getString("tracker");
|
|
413
|
+
ReadableMap gcArg = details.getMap("addGlobalContext");
|
|
414
|
+
|
|
415
|
+
String tag = gcArg.getString("tag");
|
|
416
|
+
ReadableArray globalContexts = gcArg.getArray("globalContexts") ;
|
|
417
|
+
|
|
418
|
+
List<SelfDescribingJson> staticContexts = new ArrayList<>();
|
|
419
|
+
for (int i = 0; i < globalContexts.size(); i++) {
|
|
420
|
+
SelfDescribingJson gContext = EventUtil.createSelfDescribingJson(globalContexts.getMap(i));
|
|
421
|
+
staticContexts.add(gContext);
|
|
422
|
+
}
|
|
423
|
+
GlobalContext gcStatic = new GlobalContext(staticContexts);
|
|
424
|
+
|
|
425
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
426
|
+
|
|
427
|
+
trackerController.getGlobalContexts().add(tag, gcStatic);
|
|
428
|
+
promise.resolve(true);
|
|
429
|
+
|
|
430
|
+
} catch(Throwable t) {
|
|
431
|
+
promise.reject("ERROR", t.getMessage());
|
|
100
432
|
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
@ReactMethod
|
|
436
|
+
public void setUserId(ReadableMap details,
|
|
437
|
+
Promise promise) {
|
|
438
|
+
try {
|
|
439
|
+
String namespace = details.getString("tracker");
|
|
440
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
441
|
+
|
|
442
|
+
if (details.isNull("userId")) {
|
|
443
|
+
trackerController.getSubject().setUserId(null);
|
|
444
|
+
} else {
|
|
445
|
+
trackerController.getSubject().setUserId(details.getString("userId"));
|
|
446
|
+
}
|
|
447
|
+
promise.resolve(true);
|
|
101
448
|
|
|
102
|
-
|
|
103
|
-
|
|
449
|
+
} catch(Throwable t) {
|
|
450
|
+
promise.reject("ERROR", t.getMessage());
|
|
104
451
|
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
@ReactMethod
|
|
455
|
+
public void setNetworkUserId(ReadableMap details,
|
|
456
|
+
Promise promise) {
|
|
457
|
+
try {
|
|
458
|
+
String namespace = details.getString("tracker");
|
|
459
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
460
|
+
|
|
461
|
+
if (details.isNull("networkUserId")) {
|
|
462
|
+
trackerController.getSubject().setNetworkUserId(null);
|
|
463
|
+
} else {
|
|
464
|
+
trackerController.getSubject().setNetworkUserId(details.getString("networkUserId"));
|
|
465
|
+
}
|
|
466
|
+
promise.resolve(true);
|
|
105
467
|
|
|
106
|
-
|
|
107
|
-
|
|
468
|
+
} catch(Throwable t) {
|
|
469
|
+
promise.reject("ERROR", t.getMessage());
|
|
108
470
|
}
|
|
471
|
+
}
|
|
109
472
|
|
|
110
|
-
|
|
111
|
-
|
|
473
|
+
@ReactMethod
|
|
474
|
+
public void setDomainUserId(ReadableMap details,
|
|
475
|
+
Promise promise) {
|
|
476
|
+
try {
|
|
477
|
+
String namespace = details.getString("tracker");
|
|
478
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
479
|
+
|
|
480
|
+
if (details.isNull("domainUserId")) {
|
|
481
|
+
trackerController.getSubject().setDomainUserId(null);
|
|
482
|
+
} else {
|
|
483
|
+
trackerController.getSubject().setDomainUserId(details.getString("domainUserId"));
|
|
484
|
+
}
|
|
485
|
+
promise.resolve(true);
|
|
486
|
+
|
|
487
|
+
} catch(Throwable t) {
|
|
488
|
+
promise.reject("ERROR", t.getMessage());
|
|
112
489
|
}
|
|
490
|
+
}
|
|
113
491
|
|
|
114
|
-
|
|
115
|
-
|
|
492
|
+
@ReactMethod
|
|
493
|
+
public void setIpAddress(ReadableMap details,
|
|
494
|
+
Promise promise) {
|
|
495
|
+
try {
|
|
496
|
+
String namespace = details.getString("tracker");
|
|
497
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
498
|
+
|
|
499
|
+
if (details.isNull("ipAddress")) {
|
|
500
|
+
trackerController.getSubject().setIpAddress(null);
|
|
501
|
+
} else {
|
|
502
|
+
trackerController.getSubject().setIpAddress(details.getString("ipAddress"));
|
|
503
|
+
}
|
|
504
|
+
promise.resolve(true);
|
|
505
|
+
|
|
506
|
+
} catch(Throwable t) {
|
|
507
|
+
promise.reject("ERROR", t.getMessage());
|
|
116
508
|
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
@ReactMethod
|
|
512
|
+
public void setUseragent(ReadableMap details,
|
|
513
|
+
Promise promise) {
|
|
514
|
+
try {
|
|
515
|
+
String namespace = details.getString("tracker");
|
|
516
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
517
|
+
|
|
518
|
+
if (details.isNull("useragent")) {
|
|
519
|
+
trackerController.getSubject().setUseragent(null);
|
|
520
|
+
} else {
|
|
521
|
+
trackerController.getSubject().setUseragent(details.getString("useragent"));
|
|
522
|
+
}
|
|
523
|
+
promise.resolve(true);
|
|
117
524
|
|
|
118
|
-
|
|
119
|
-
|
|
525
|
+
} catch(Throwable t) {
|
|
526
|
+
promise.reject("ERROR", t.getMessage());
|
|
120
527
|
}
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
@ReactMethod
|
|
531
|
+
public void setTimezone(ReadableMap details,
|
|
532
|
+
Promise promise) {
|
|
533
|
+
try {
|
|
534
|
+
String namespace = details.getString("tracker");
|
|
535
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
536
|
+
|
|
537
|
+
if (details.isNull("timezone")) {
|
|
538
|
+
trackerController.getSubject().setTimezone(null);
|
|
539
|
+
} else {
|
|
540
|
+
trackerController.getSubject().setTimezone(details.getString("timezone"));
|
|
541
|
+
}
|
|
542
|
+
promise.resolve(true);
|
|
121
543
|
|
|
122
|
-
|
|
123
|
-
|
|
544
|
+
} catch(Throwable t) {
|
|
545
|
+
promise.reject("ERROR", t.getMessage());
|
|
124
546
|
}
|
|
547
|
+
}
|
|
125
548
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
549
|
+
@ReactMethod
|
|
550
|
+
public void setLanguage(ReadableMap details,
|
|
551
|
+
Promise promise) {
|
|
552
|
+
try {
|
|
553
|
+
String namespace = details.getString("tracker");
|
|
554
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
555
|
+
|
|
556
|
+
if (details.isNull("language")) {
|
|
557
|
+
trackerController.getSubject().setLanguage(null);
|
|
130
558
|
} else {
|
|
131
|
-
|
|
559
|
+
trackerController.getSubject().setLanguage(details.getString("language"));
|
|
132
560
|
}
|
|
561
|
+
promise.resolve(true);
|
|
562
|
+
|
|
563
|
+
} catch(Throwable t) {
|
|
564
|
+
promise.reject("ERROR", t.getMessage());
|
|
133
565
|
}
|
|
566
|
+
}
|
|
134
567
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
568
|
+
@ReactMethod
|
|
569
|
+
public void setScreenResolution(ReadableMap details,
|
|
570
|
+
Promise promise) {
|
|
571
|
+
try {
|
|
572
|
+
String namespace = details.getString("tracker");
|
|
573
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
574
|
+
|
|
575
|
+
if (details.isNull("screenResolution")) {
|
|
576
|
+
trackerController.getSubject().setScreenResolution(null);
|
|
138
577
|
} else {
|
|
139
|
-
|
|
578
|
+
ReadableArray screenRes = details.getArray("screenResolution");
|
|
579
|
+
int width = screenRes.getInt(0);
|
|
580
|
+
int height = screenRes.getInt(1);
|
|
581
|
+
Size screenR = new Size(width, height);
|
|
582
|
+
|
|
583
|
+
trackerController.getSubject().setScreenResolution(screenR);
|
|
140
584
|
}
|
|
585
|
+
promise.resolve(true);
|
|
586
|
+
|
|
587
|
+
} catch(Throwable t) {
|
|
588
|
+
promise.reject("ERROR", t.getMessage());
|
|
141
589
|
}
|
|
590
|
+
}
|
|
142
591
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
592
|
+
@ReactMethod
|
|
593
|
+
public void setScreenViewport(ReadableMap details,
|
|
594
|
+
Promise promise) {
|
|
595
|
+
try {
|
|
596
|
+
String namespace = details.getString("tracker");
|
|
597
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
598
|
+
|
|
599
|
+
if (details.isNull("screenViewport")) {
|
|
600
|
+
trackerController.getSubject().setScreenViewPort(null);
|
|
146
601
|
} else {
|
|
147
|
-
|
|
602
|
+
ReadableArray screenView = details.getArray("screenViewport");
|
|
603
|
+
int width = screenView.getInt(0);
|
|
604
|
+
int height = screenView.getInt(1);
|
|
605
|
+
Size screenVP = new Size(width, height);
|
|
606
|
+
|
|
607
|
+
trackerController.getSubject().setScreenViewPort(screenVP);
|
|
148
608
|
}
|
|
609
|
+
promise.resolve(true);
|
|
610
|
+
|
|
611
|
+
} catch(Throwable t) {
|
|
612
|
+
promise.reject("ERROR", t.getMessage());
|
|
149
613
|
}
|
|
150
614
|
}
|
|
151
615
|
|
|
152
616
|
@ReactMethod
|
|
153
|
-
public void
|
|
154
|
-
|
|
617
|
+
public void setColorDepth(ReadableMap details,
|
|
618
|
+
Promise promise) {
|
|
619
|
+
try {
|
|
620
|
+
String namespace = details.getString("tracker");
|
|
621
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
622
|
+
|
|
623
|
+
if (details.isNull("colorDepth")) {
|
|
624
|
+
trackerController.getSubject().setColorDepth(null);
|
|
625
|
+
} else {
|
|
626
|
+
trackerController.getSubject().setColorDepth(details.getInt("colorDepth"));
|
|
627
|
+
}
|
|
628
|
+
promise.resolve(true);
|
|
155
629
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
tracker.track(trackerEvent);
|
|
630
|
+
} catch(Throwable t) {
|
|
631
|
+
promise.reject("ERROR", t.getMessage());
|
|
159
632
|
}
|
|
160
633
|
}
|
|
161
634
|
|
|
162
635
|
@ReactMethod
|
|
163
|
-
public void
|
|
164
|
-
|
|
636
|
+
public void getSessionUserId(ReadableMap details,
|
|
637
|
+
Promise promise) {
|
|
638
|
+
try {
|
|
639
|
+
String namespace = details.getString("tracker");
|
|
640
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
641
|
+
|
|
642
|
+
String suid = trackerController.getSession().getUserId();
|
|
643
|
+
promise.resolve(suid);
|
|
644
|
+
} catch(Throwable t) {
|
|
645
|
+
promise.reject("ERROR", t.getMessage());
|
|
646
|
+
}
|
|
647
|
+
}
|
|
165
648
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
649
|
+
@ReactMethod
|
|
650
|
+
public void getSessionId(ReadableMap details,
|
|
651
|
+
Promise promise) {
|
|
652
|
+
try {
|
|
653
|
+
String namespace = details.getString("tracker");
|
|
654
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
655
|
+
|
|
656
|
+
String sid = trackerController.getSession().getSessionId();
|
|
657
|
+
promise.resolve(sid);
|
|
658
|
+
} catch(Throwable t) {
|
|
659
|
+
promise.reject("ERROR", t.getMessage());
|
|
171
660
|
}
|
|
172
661
|
}
|
|
173
662
|
|
|
174
663
|
@ReactMethod
|
|
175
|
-
public void
|
|
176
|
-
|
|
664
|
+
public void getSessionIndex(ReadableMap details,
|
|
665
|
+
Promise promise) {
|
|
666
|
+
try {
|
|
667
|
+
String namespace = details.getString("tracker");
|
|
668
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
669
|
+
|
|
670
|
+
int sidx = trackerController.getSession().getSessionIndex();
|
|
671
|
+
promise.resolve(sidx);
|
|
672
|
+
} catch(Throwable t) {
|
|
673
|
+
promise.reject("ERROR", t.getMessage());
|
|
674
|
+
}
|
|
675
|
+
}
|
|
177
676
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
677
|
+
@ReactMethod
|
|
678
|
+
public void getIsInBackground(ReadableMap details,
|
|
679
|
+
Promise promise) {
|
|
680
|
+
try {
|
|
681
|
+
String namespace = details.getString("tracker");
|
|
682
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
683
|
+
|
|
684
|
+
boolean isInBg = trackerController.getSession().isInBackground();
|
|
685
|
+
promise.resolve(isInBg);
|
|
686
|
+
} catch(Throwable t) {
|
|
687
|
+
promise.reject("ERROR", t.getMessage());
|
|
183
688
|
}
|
|
184
689
|
}
|
|
185
690
|
|
|
186
691
|
@ReactMethod
|
|
187
|
-
public void
|
|
188
|
-
|
|
692
|
+
public void getBackgroundIndex(ReadableMap details,
|
|
693
|
+
Promise promise) {
|
|
694
|
+
try {
|
|
695
|
+
String namespace = details.getString("tracker");
|
|
696
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
697
|
+
|
|
698
|
+
int bgIdx = trackerController.getSession().getBackgroundIndex();
|
|
699
|
+
promise.resolve(bgIdx);
|
|
700
|
+
} catch(Throwable t) {
|
|
701
|
+
promise.reject("ERROR", t.getMessage());
|
|
702
|
+
}
|
|
703
|
+
}
|
|
189
704
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
705
|
+
@ReactMethod
|
|
706
|
+
public void getForegroundIndex(ReadableMap details,
|
|
707
|
+
Promise promise) {
|
|
708
|
+
try {
|
|
709
|
+
String namespace = details.getString("tracker");
|
|
710
|
+
TrackerController trackerController = Snowplow.getTracker(namespace);
|
|
711
|
+
|
|
712
|
+
int fgIdx = trackerController.getSession().getForegroundIndex();
|
|
713
|
+
promise.resolve(fgIdx);
|
|
714
|
+
} catch(Throwable t) {
|
|
715
|
+
promise.reject("ERROR", t.getMessage());
|
|
195
716
|
}
|
|
196
717
|
}
|
|
718
|
+
|
|
197
719
|
}
|