Skip to content

Commit

Permalink
[SDK-2325] Added callback to disableTracking() (#1180)
Browse files Browse the repository at this point in the history
* Added callback to disableTracking

* Update Branch.java

* Added comment
  • Loading branch information
nsingh-branch authored Mar 29, 2024
1 parent 83cf93a commit 038d103
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -451,16 +451,14 @@ public void onClick(View v) {
}
});

((ToggleButton) findViewById(R.id.tracking_cntrl_btn)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Branch.getInstance().disableTracking(isChecked);
if (isChecked) {
((ToggleButton) findViewById(R.id.tracking_cntrl_btn)).setOnCheckedChangeListener((buttonView, isChecked) -> {
Branch.getInstance().disableTracking(isChecked, (trackingDisabled, referringParams, error) -> {
if (trackingDisabled) {
Toast.makeText(getApplicationContext(), "Disabled Tracking", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Enabled Tracking", Toast.LENGTH_SHORT).show();
}
}
});
});

findViewById(R.id.qrCode_btn).setOnClickListener(new OnClickListener() {
Expand Down
21 changes: 18 additions & 3 deletions Branch-SDK/src/main/java/io/branch/referral/Branch.java
Original file line number Diff line number Diff line change
Expand Up @@ -514,10 +514,25 @@ public static void setCDNBaseUrl(String url) {
}

/**
* Method to change the Tracking state. If disabled SDK will not track any user data or state. SDK will not send any network calls except for deep linking when tracking is disabled
* Toggles the tracking state of the SDK. When tracking is disabled, the SDK will not track any user data or state,
* and it will not initiate any network calls except for deep linking operations.
* Re-enabling tracking will reinitialize the Branch session and resume normal SDK operations.
* This method allows for optional callback specification to handle post-operation actions or state notifications.
*
* @param disableTracking A boolean value indicating whether tracking should be disabled ({@code true}) or enabled
* ({@code false}).
* @param callback An optional {@link TrackingStateCallback} instance for receiving callback notifications about
* the change in tracking state. This parameter can be {@code null} if no callback actions are needed.
*/
public void disableTracking(boolean disableTracking, @Nullable TrackingStateCallback callback) {
trackingController.disableTracking(context_, disableTracking, callback);
}
public void disableTracking(boolean disableTracking) {
trackingController.disableTracking(context_, disableTracking);
disableTracking(disableTracking, null);
}

public interface TrackingStateCallback {
void onTrackingStateChanged(boolean trackingDisabled, @Nullable JSONObject referringParams, @Nullable BranchError error);
}

/**
Expand Down Expand Up @@ -1089,7 +1104,7 @@ public JSONObject getFirstReferringParamsSync() {
}
String storedParam = prefHelper_.getInstallParams();
JSONObject firstReferringParams = convertParamsStringToDictionary(storedParam);
firstReferringParams = appendDebugParams(firstReferringParams);
appendDebugParams(firstReferringParams);
getFirstReferringParamsLatch = null;
return firstReferringParams;
}
Expand Down
39 changes: 27 additions & 12 deletions Branch-SDK/src/main/java/io/branch/referral/TrackingController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import org.json.JSONObject;

Expand All @@ -22,19 +23,33 @@ public class TrackingController {
TrackingController(Context context) {
updateTrackingState(context);
}

void disableTracking(Context context, boolean disableTracking) {
if (trackingDisabled != disableTracking) {
trackingDisabled = disableTracking;
if (disableTracking) {
onTrackingDisabled(context);
} else {
onTrackingEnabled();

void disableTracking(Context context, boolean disableTracking, @Nullable Branch.TrackingStateCallback callback) {
// If the tracking state is already set to the desired state, then return instantly
if (trackingDisabled == disableTracking) {
if (callback != null) {
callback.onTrackingStateChanged(trackingDisabled, Branch.getInstance().getFirstReferringParams(), null);
}
return;
}

trackingDisabled = disableTracking;
PrefHelper.getInstance(context).setBool(PrefHelper.KEY_TRACKING_STATE, disableTracking);

if (disableTracking) {
onTrackingDisabled(context);
if (callback != null) {
callback.onTrackingStateChanged(true, null, null);
}
PrefHelper.getInstance(context).setBool(PrefHelper.KEY_TRACKING_STATE, disableTracking);
} else {
onTrackingEnabled((referringParams, error) -> {
if (callback != null) {
callback.onTrackingStateChanged(false, referringParams, error);
}
});
}
}

boolean isTrackingDisabled() {
return trackingDisabled;
}
Expand Down Expand Up @@ -70,10 +85,10 @@ private void onTrackingDisabled(Context context) {
Branch.getInstance().clearPartnerParameters();
}

private void onTrackingEnabled() {
private void onTrackingEnabled(Branch.BranchReferralInitListener callback) {
Branch branch = Branch.getInstance();
if (branch != null) {
branch.registerAppInit(branch.getInstallOrOpenRequest(null, true), true, false);
branch.registerAppInit(branch.getInstallOrOpenRequest(callback, true), true, false);
}
}
}

0 comments on commit 038d103

Please sign in to comment.