From 92938d8827ec2b287548a0ab337c2a563f3f33df Mon Sep 17 00:00:00 2001 From: Megha Pithadiya Date: Mon, 30 Sep 2024 14:21:14 +0530 Subject: [PATCH] MOB-9638 - Add handlers for notifying customer app of a newly created Anon userid --- .../androidsdk/AnonTrackingTestActivity.java | 12 ++++++++---- .../iterable/iterableapi/AnonymousUserManager.java | 3 +++ .../iterableapi/IterableAnonUserHandler.java | 5 +++++ .../com/iterable/iterableapi/IterableConfig.java | 11 +++++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 iterableapi/src/main/java/com/iterable/iterableapi/IterableAnonUserHandler.java diff --git a/app/src/main/java/com/iterable/androidsdk/AnonTrackingTestActivity.java b/app/src/main/java/com/iterable/androidsdk/AnonTrackingTestActivity.java index 71f0966fa..1b4c88b0c 100644 --- a/app/src/main/java/com/iterable/androidsdk/AnonTrackingTestActivity.java +++ b/app/src/main/java/com/iterable/androidsdk/AnonTrackingTestActivity.java @@ -7,13 +7,12 @@ import android.os.Bundle; import android.os.Handler; import android.util.Log; -import android.widget.CheckBox; import android.widget.EditText; import com.iterable.iterableapi.CommerceItem; +import com.iterable.iterableapi.IterableAnonUserHandler; import com.iterable.iterableapi.IterableApi; import com.iterable.iterableapi.IterableConfig; import com.iterable.iterableapi.IterableConstants; -import com.iterable.iterableapi.IterableIdentityResolution; import com.iterable.iterableapi.testapp.R; import org.json.JSONArray; import org.json.JSONException; @@ -22,14 +21,14 @@ import java.util.List; import java.util.Map; -public class AnonTrackingTestActivity extends AppCompatActivity { +public class AnonTrackingTestActivity extends AppCompatActivity implements IterableAnonUserHandler { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); - IterableConfig iterableConfig = new IterableConfig.Builder().setEnableAnonTracking(true).build(); + IterableConfig iterableConfig = new IterableConfig.Builder().setEnableAnonTracking(true).setIterableAnonUserHandler(this).build(); // clear data for testing SharedPreferences sharedPref = getSharedPreferences(IterableConstants.SHARED_PREFS_FILE, Context.MODE_PRIVATE); @@ -137,4 +136,9 @@ public void printAllSharedPreferencesData(Context context) { Log.d("SharedPref", entry.getKey() + ": " + entry.getValue().toString()); } } + + @Override + public void onAnonUserCreated(String userId) { + Log.d("userId", userId); + } } \ No newline at end of file diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/AnonymousUserManager.java b/iterableapi/src/main/java/com/iterable/iterableapi/AnonymousUserManager.java index 943cce48e..38d9c0685 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/AnonymousUserManager.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/AnonymousUserManager.java @@ -238,6 +238,9 @@ private void createKnownUser(String criteriaId) { //track anon session with new user iterableApi.apiClient.trackAnonSession(getCurrentTime(), userId, userDataJson, updateUserTrack, data -> { // success handler + if (IterableApi.getInstance().config.iterableAnonUserHandler != null) { + IterableApi.getInstance().config.iterableAnonUserHandler.onAnonUserCreated(userId); + } IterableApi.getInstance().setAnonUser(userId); syncEvents(); }, (reason, data) -> handleTrackFailure(data)); diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableAnonUserHandler.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableAnonUserHandler.java new file mode 100644 index 000000000..2cd3343b5 --- /dev/null +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableAnonUserHandler.java @@ -0,0 +1,5 @@ +package com.iterable.iterableapi; + +public interface IterableAnonUserHandler { + void onAnonUserCreated(String userId); +} \ No newline at end of file diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableConfig.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableConfig.java index 2e0d867a8..de7ac0a79 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableConfig.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableConfig.java @@ -60,6 +60,9 @@ public class IterableConfig { */ final IterableAuthHandler authHandler; + + final IterableAnonUserHandler iterableAnonUserHandler; + /** * Duration prior to an auth expiration that a new auth token should be requested. */ @@ -124,6 +127,7 @@ private IterableConfig(Builder builder) { enableEmbeddedMessaging = builder.enableEmbeddedMessaging; eventThresholdLimit = builder.eventThresholdLimit; identityResolution = builder.identityResolution; + iterableAnonUserHandler = builder.iterableAnonUserHandler; } public static class Builder { @@ -146,6 +150,13 @@ public static class Builder { private boolean enableEmbeddedMessaging = false; private int eventThresholdLimit = 100; private IterableIdentityResolution identityResolution = new IterableIdentityResolution(); + private IterableAnonUserHandler iterableAnonUserHandler; + + @NonNull + public Builder setIterableAnonUserHandler(@NonNull IterableAnonUserHandler iterableAnonUserHandler) { + this.iterableAnonUserHandler = iterableAnonUserHandler; + return this; + } public Builder() {}