Skip to content

Commit 4ab0e88

Browse files
Merge pull request #64 from xendit/update/snowplow-2.x
Updated snowplow to version 2.x
2 parents 15ba808 + c1b0177 commit 4ab0e88

File tree

5 files changed

+72
-43
lines changed

5 files changed

+72
-43
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Slack Channel: [#integration-product](https://xendit.slack.com/messages/integrat
1010
Slack Mentions: `@troops-tpi`
1111

1212
## Requirements
13-
The Xendit SDK is compatible with Android 2.3.3 and above.
13+
The Xendit SDK is compatible with Android 5.0 and above.
1414

1515
## Example
1616
Visit and try the `app` module to see an example of how the SDK works.

Diff for: app/build.gradle

+1-5
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,7 @@ android {
2121
productFlavors {
2222
product{
2323
dimension "api"
24-
minSdkVersion 16
25-
}
26-
minApi18 {
27-
dimension "api"
28-
minSdkVersion 18
24+
minSdkVersion 21
2925
}
3026
}
3127

Diff for: xendit-android/build.gradle

+4-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apply plugin: 'maven-publish'
33
apply plugin: 'com.jfrog.bintray'
44

55
group 'com.xendit'
6-
version '2.4.1'
6+
version '2.5.0'
77

88
ext {
99
bintrayOrg = 'xendit'
@@ -34,7 +34,7 @@ android {
3434
compileSdkVersion 28
3535
buildToolsVersion '28.0.3'
3636
defaultConfig {
37-
minSdkVersion 16
37+
minSdkVersion 21
3838
targetSdkVersion 28
3939
versionCode 1
4040
versionName
@@ -67,6 +67,7 @@ dependencies {
6767
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
6868
implementation 'androidx.annotation:annotation:1.0.0'
6969
implementation 'androidx.core:core:1.0.0'
70+
implementation 'com.snowplowanalytics:snowplow-android-tracker:2.1.1@aar'
7071

7172
// sentry
7273
api 'io.sentry:sentry-android:1.7.10'
@@ -94,9 +95,6 @@ dependencies {
9495
api 'com.squareup.retrofit2:converter-scalars:2.5.0'
9596
//Logging Network Calls
9697
api 'com.squareup.okhttp3:logging-interceptor:3.6.0'
97-
98-
// snowplow
99-
api 'com.snowplowanalytics:snowplow-android-tracker:1.7.1'
10098
}
10199

102100
publishing {
@@ -213,4 +211,4 @@ nexusStaging {
213211
password = ossrhPassword
214212
repositoryDescription = 'Closed and released using gradle script'
215213
packageGroup = publishedGroupId
216-
}
214+
}

Diff for: xendit-android/src/main/java/com/xendit/Tracker/SnowplowTrackerBuilder.java

+60-25
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,79 @@
11
package com.xendit.Tracker;
22

3-
import com.snowplowanalytics.snowplow.tracker.*;
4-
import com.snowplowanalytics.snowplow.tracker.emitter.HttpMethod;
5-
import com.snowplowanalytics.snowplow.tracker.emitter.RequestCallback;
6-
import com.snowplowanalytics.snowplow.tracker.emitter.RequestSecurity;
3+
import com.snowplowanalytics.snowplow.Snowplow;
4+
import com.snowplowanalytics.snowplow.configuration.EmitterConfiguration;
5+
import com.snowplowanalytics.snowplow.configuration.GdprConfiguration;
6+
import com.snowplowanalytics.snowplow.configuration.NetworkConfiguration;
7+
import com.snowplowanalytics.snowplow.configuration.SessionConfiguration;
8+
import com.snowplowanalytics.snowplow.configuration.TrackerConfiguration;
9+
import com.snowplowanalytics.snowplow.controller.TrackerController;
10+
import com.snowplowanalytics.snowplow.network.HttpMethod;
11+
import com.snowplowanalytics.snowplow.network.RequestCallback;
12+
import com.snowplowanalytics.snowplow.tracker.DevicePlatform;
13+
import com.snowplowanalytics.snowplow.util.Basis;
14+
import com.snowplowanalytics.snowplow.util.TimeMeasure;
715

816
import android.content.Context;
917
import android.util.Log;
1018

19+
import java.util.concurrent.TimeUnit;
20+
1121
public class SnowplowTrackerBuilder {
12-
public static Tracker getTracker(Context context) {
13-
Emitter emitter = getEmitter(context);
14-
Subject subject = getSubject(context); // Optional
22+
private static String COLLECTOR_URL = "https://snowplow-collector.iluma.ai";
1523

16-
return Tracker.init(new Tracker.TrackerBuilder(emitter, "TPI", "xendit-android-sdk", context)
17-
.subject(subject) // Optional
18-
.mobileContext(true)
19-
.build()
24+
public static TrackerController getTracker(Context context) {
25+
if (Snowplow.getDefaultTracker() != null) {
26+
return Snowplow.getDefaultTracker();
27+
}
28+
NetworkConfiguration networkConfig = new NetworkConfiguration(
29+
COLLECTOR_URL,
30+
HttpMethod.POST
2031
);
32+
EmitterConfiguration emitterConfiguration = new EmitterConfiguration()
33+
.threadPoolSize(20)
34+
.emitRange(500)
35+
.byteLimitPost(52000);
36+
TrackerConfiguration trackerConfiguration =
37+
new TrackerConfiguration("xendit-android-sdk")
38+
.base64encoding(false)
39+
.devicePlatform(DevicePlatform.Mobile)
40+
.sessionContext(true)
41+
.platformContext(true)
42+
.applicationContext(true)
43+
.geoLocationContext(false)
44+
.lifecycleAutotracking(true)
45+
.screenViewAutotracking(true)
46+
.screenContext(true)
47+
.exceptionAutotracking(true)
48+
.installAutotracking(true);
49+
GdprConfiguration gdprConfiguration = new GdprConfiguration(
50+
Basis.CONSENT,
51+
"",
52+
"",
53+
""
54+
);
55+
SessionConfiguration sessionConfig = new SessionConfiguration(
56+
new TimeMeasure(30, TimeUnit.MINUTES),
57+
new TimeMeasure(30, TimeUnit.MINUTES)
58+
);
59+
TrackerController tracker = Snowplow.createTracker(
60+
context,
61+
"TPI",
62+
networkConfig,
63+
trackerConfiguration,
64+
emitterConfiguration,
65+
sessionConfig,
66+
gdprConfiguration);
67+
Snowplow.setTrackerAsDefault(tracker);
68+
return tracker;
2169
}
2270

23-
private static Emitter getEmitter(Context context) {
24-
return new Emitter.EmitterBuilder("snowplow-collector.iluma.ai", context)
25-
.security(RequestSecurity.HTTPS)
26-
.method(HttpMethod.POST)
27-
.build();
28-
}
29-
30-
private static Subject getSubject(Context context) {
31-
return new Subject.SubjectBuilder()
32-
.context(context)
33-
.build();
34-
}
35-
36-
3771
private static RequestCallback callback = new RequestCallback() {
3872
@Override
3973
public void onSuccess(int successCount) {
4074
Log.d("Tracker", "Buffer length for POST/GET:" + successCount);
4175
}
76+
4277
@Override
4378
public void onFailure(int successCount, int failureCount) {
4479
Log.d("Tracker", "Failures: " + failureCount + "; Successes: " + successCount);

Diff for: xendit-android/src/main/java/com/xendit/Xendit.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import com.android.volley.toolbox.HurlStack;
1818
import com.android.volley.toolbox.Volley;
1919
import com.google.gson.JsonObject;
20-
import com.snowplowanalytics.snowplow.tracker.Tracker;
21-
import com.snowplowanalytics.snowplow.tracker.events.Structured;
20+
import com.snowplowanalytics.snowplow.controller.TrackerController;
21+
import com.snowplowanalytics.snowplow.event.Structured;
2222
import com.xendit.DeviceInfo.AdInfo;
2323
import com.xendit.DeviceInfo.DeviceInfo;
2424
import com.xendit.Logger.Logger;
@@ -334,7 +334,7 @@ public void createAuthentication(final String tokenId, final int amount, final A
334334
_createAuthentication(tokenId, amountStr, new NetworkHandler<Authentication>().setResultListener(new ResultListener<Authentication>() {
335335
@Override
336336
public void onSuccess(Authentication authentication) {
337-
Tracker tracker = getTracker(context);
337+
TrackerController tracker = getTracker(context);
338338
tracker.track(Structured.builder()
339339
.category("api-request")
340340
.action("create-authentication")
@@ -435,7 +435,7 @@ private void get3DSRecommendation(String tokenId, final Authentication authentic
435435
_get3DSRecommendation(tokenId, new NetworkHandler<ThreeDSRecommendation>().setResultListener(new ResultListener<ThreeDSRecommendation>(){
436436
@Override
437437
public void onSuccess (ThreeDSRecommendation rec) {
438-
Tracker tracker = getTracker(context);
438+
TrackerController tracker = getTracker(context);
439439
tracker.track(Structured.builder()
440440
.category("api-request")
441441
.action("get-3ds-recommendation")
@@ -457,7 +457,7 @@ public void createCreditCardToken(Card card, String amount, boolean shouldAuthen
457457
_createToken(card, amount, shouldAuthenticate, "", isMultipleUse, new NetworkHandler<Authentication>().setResultListener(new ResultListener<Authentication>() {
458458
@Override
459459
public void onSuccess(Authentication authentication) {
460-
Tracker tracker = getTracker(context);
460+
TrackerController tracker = getTracker(context);
461461
tracker.track(Structured.builder()
462462
.category("api-request")
463463
.action("create-token")
@@ -486,7 +486,7 @@ public void createCreditCardToken(Card card, String amount, boolean shouldAuthen
486486
_createToken(card, amount, shouldAuthenticate, onBehalfOf, isMultipleUse, new NetworkHandler<Authentication>().setResultListener(new ResultListener<Authentication>() {
487487
@Override
488488
public void onSuccess(Authentication authentication) {
489-
Tracker tracker = getTracker(context);
489+
TrackerController tracker = getTracker(context);
490490
tracker.track(Structured.builder()
491491
.category("api-request")
492492
.action("create-token")

0 commit comments

Comments
 (0)