Skip to content

Commit

Permalink
MOB-9679 - Keep AUT off until consent to track has been granted
Browse files Browse the repository at this point in the history
  • Loading branch information
megha-iterable committed Oct 9, 2024
1 parent 9fb6552 commit 948c0e8
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
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;
Expand All @@ -23,28 +24,36 @@

public class AnonTrackingTestActivity extends AppCompatActivity implements IterableAnonUserHandler {

private CheckBox anonymousUsageTrackedCheckBox;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

anonymousUsageTrackedCheckBox = findViewById(R.id.anonymousUsageTracked_check_box);
IterableConfig iterableConfig = new IterableConfig.Builder().setEnableAnonTracking(true).setIterableAnonUserHandler(this).build();

// clear data for testing
SharedPreferences sharedPref = getSharedPreferences(IterableConstants.SHARED_PREFS_FILE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(IterableConstants.SHARED_PREFS_ANON_SESSIONS, "");
editor.putString(IterableConstants.SHARED_PREFS_EVENT_LIST_KEY, "");
editor.putBoolean(IterableConstants.SHARED_PREFS_ANONYMOUS_USAGE_TRACKED, false);
editor.apply();

new Handler().postDelayed(() -> {
IterableApi.initialize(getBaseContext(), "18845050c4774b7c9dc48beece2f6d8b", iterableConfig);
IterableApi.getInstance().setUserId(null);
IterableApi.getInstance().setEmail(null);
printAllSharedPreferencesData(this);
IterableApi.getInstance().setAnonymousUsageTracked(anonymousUsageTrackedCheckBox.isChecked());

}, 1000);

anonymousUsageTrackedCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
IterableApi.getInstance().setAnonymousUsageTracked(isChecked);
});

findViewById(R.id.updateCart).setOnClickListener(view -> {
EditText updateCart_edit = findViewById(R.id.updateCart_edit);
if(updateCart_edit == null) return;
Expand Down
7 changes: 7 additions & 0 deletions app/src/main/res/layout/activity_test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@
android:gravity="center"
android:orientation="vertical">

<CheckBox
android:id="@+id/anonymousUsageTracked_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="Anonymous Usage Tracked" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -349,10 +349,15 @@ public void clearAnonEventsData() {
}

private void storeEventListToLocalStorage(JSONObject newDataObject) {
storeEventListToLocalStorage(newDataObject, false);
if (iterableApi.getAnonymousUsageTracked()) {
storeEventListToLocalStorage(newDataObject, false);
}
}

private void storeEventListToLocalStorage(JSONObject newDataObject, boolean shouldOverWrite) {
if (!iterableApi.getAnonymousUsageTracked()) {
return;
}
JSONArray previousDataArray = getEventListFromLocalStorage();
if (shouldOverWrite) {
previousDataArray = removeDuplicateEvent(previousDataArray, newDataObject);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.iterable.iterableapi;

import static com.iterable.iterableapi.IterableConstants.SHARED_PREFS_ANONYMOUS_USAGE_TRACKED;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
Expand Down Expand Up @@ -635,7 +637,7 @@ public static void initialize(@NonNull Context context, @NonNull String apiKey,
loadLastSavedConfiguration(context);
IterablePushNotificationUtil.processPendingAction(context);

if (!sharedInstance.checkSDKInitialization() && sharedInstance._userIdAnon == null && sharedInstance.config.enableAnonTracking) {
if (!sharedInstance.checkSDKInitialization() && sharedInstance._userIdAnon == null && sharedInstance.config.enableAnonTracking && sharedInstance.getAnonymousUsageTracked()) {
anonymousUserManager.updateAnonSession();
anonymousUserManager.getCriteria();
}
Expand Down Expand Up @@ -1536,5 +1538,25 @@ public void trackEmbeddedSession(@NonNull IterableEmbeddedSession session) {

apiClient.trackEmbeddedSession(session);
}

public void setAnonymousUsageTracked(@NonNull Boolean isSetAnonymousUsageTracked) {
SharedPreferences sharedPref = sharedInstance.getMainActivityContext().getSharedPreferences(IterableConstants.SHARED_PREFS_FILE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(IterableConstants.SHARED_PREFS_ANON_SESSIONS, "");
editor.putString(IterableConstants.SHARED_PREFS_EVENT_LIST_KEY, "");
editor.putString(IterableConstants.SHARED_PREFS_CRITERIA, "");
editor.putBoolean(SHARED_PREFS_ANONYMOUS_USAGE_TRACKED, isSetAnonymousUsageTracked);
editor.apply();

if (isSetAnonymousUsageTracked) {
anonymousUserManager.updateAnonSession();
anonymousUserManager.getCriteria();
}
}

public boolean getAnonymousUsageTracked() {
SharedPreferences sharedPreferences = sharedInstance.getMainActivityContext().getSharedPreferences(IterableConstants.SHARED_PREFS_FILE, Context.MODE_PRIVATE);
return sharedPreferences.getBoolean(SHARED_PREFS_ANONYMOUS_USAGE_TRACKED, false);
}
//endregion
}
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ public final class IterableConstants {
public static final String SHARED_PREFS_CRITERIA = "criteria";
public static final String SHARED_PREFS_CRITERIA_ID = "matchedCriteriaId";
public static final String SHARED_PREFS_PUSH_OPT_IN = "mobilePushOptIn";
public static final String SHARED_PREFS_ANONYMOUS_USAGE_TRACKED = "itbl_anonymous_usage_track";

//Action buttons
public static final String ITBL_BUTTON_IDENTIFIER = "identifier";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ public void setUp() {
IterableApi.overrideURLEndpointPath(server.url("").toString());
IterableConfig iterableConfig = new IterableConfig.Builder().setEnableAnonTracking(true).build();
IterableApi.initialize(getContext(), "apiKey", iterableConfig);
IterableApi.getInstance().setAnonymousUsageTracked(true);
setCriteria(criteriaMockData);

}
Expand Down

0 comments on commit 948c0e8

Please sign in to comment.