Search specific term/phrase surrounded by double quotes. e.g. “deep linking”
Exclude records that contain a specific term prefixed with a minus. e.g. Android -Firebase

Android Full Reference

Public methods made available by Branch for your Android app.

getInstance

MethodDescription
synchronized public static Branch getInstance()Singleton method to return the pre-initialized object of the type Branch.

Make sure your app is instantiating BranchApp before calling this method, or that you have created an instance of Branch already by calling getAutoInstance(this.applicationContext).
Returns
An initialized singleton Branch object instance.

Example Usage

Branch.getInstance()
Branch.getInstance();

getAutoInstance

MethodDescription
synchronized public static Branch getAutoInstance(@NonNull Context context)Singleton method to return the pre-initialized, or newly initialize and return, a singleton object of the type Branch.

Use this whenever you need to call a method directly on the Branch object.
public static Branch getAutoInstance(@NonNull Context context, @NonNull String branchKey)Singleton method to return the pre-initialized, or newly initialize and return, a singleton object of the type Branch.

Includes branchKey param.

Use this whenever you need to call a method directly on the Branch object.
ArgumentTypeDescription
contextContextThe Context object associated with this call.
branchKeyStringYour Branch Key as a string value.
Returns
An initialized Branch object, either fetched from a pre-initialized instance within the singleton class, or a newly instantiated object where one was not already requested during the current app lifecycle.

Example Usage

const val branchKey: String = "branch_key_here"
class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()
    
		// Branch object initialization
		Branch.getAutoInstance(this.applicationContext, branchKey)
	}
}
protected static final String branchKey = "branch_key_here";

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();

		// Branch object initialization
		Branch.getAutoInstance(this.getApplicationContext, branchKey);
	}
}

setBranchRemoteInterface

🚧

Warning

This method is not currently recommended.

By default, the Branch Android SDK uses Java's javax.net.ssl.HttpsURLConnection for network requests. There are known issues with that interface and typically applications use third-party networking libraries, such as OkHttp, to customize their networking.

The Branch Android SDK provides an interface called BranchRemoteInterface to apply your networking customization to how Branch handles network requests.

MethodDescription
public void setBranchRemoteInterface(BranchRemoteInterface remoteInterface)Sets a custom BranchRemoteInterface object for handling RESTful requests. Call this for implementing a custom network layer for handling communication between the Branch Android SDK and remote Branch server.
ArgumentTypeDescription
remoteInterfaceBranchRemoteInterfaceA instance of the BranchRemoteInterface class. If null is passed, the Branch Android SDK will use its default.

Example Usage

Branch.getInstance().setBranchRemoteInterface(remoteInterface: BranchRemoteInterface)
Branch.getInstance().setBranchRemoteInterface(@NonNull BranchRemoteInterface remoteInterface);

getBranchRemoteInterface

🚧

Warning

This method is not currently recommended.

MethodDescription
public BranchRemoteInterface getBranchRemoteInterface()Returns the BranchRemoteInterface object currently handling RESTful requests.
Returns
A BranchRemoteInterface object.

Example Usage

Branch.getInstance().getBranchRemoteInterface()
Branch.getInstance().getBranchRemoteInterface();

enableTestMode

MethodDescription
public static void enableTestMode()Enables test mode for the Branch Android SDK. This will use your Branch Test Key(s). This is same as setting io.branch.sdk.TestMode to True in your AndroidManifest.xml file.

Note: As of Branch Android SDK v5.0.1, the enableTestMode() method has changed. It still uses your Branch Test Key, but it will not log or randomize the device IDs. If you wish to enable logging, please use the enableLogging() method. If you wish to simulate installs, please see add a test device, then reset your test device's data.

Example Usage

Branch.enableTestMode()
Branch.enableTestMode();

disableTestMode

MethodDescription
public static void disableTestMode()Disables test mode for the Branch Android SDK.

Example Usage

Branch.disableTestMode()
Branch.disableTestMode();

disableAdNetworkCallouts

MethodDescription
public void disableAdNetworkCallouts(boolean disabled)Disable (or re-enable) ad network callouts. This setting is persistent.
ArgumentTypeDescription
disabledBooleanWhen set to true, ad network callouts are disabled.

Example Usage

Branch branch = Branch.getInstance()

branch.disableAdNetworkCallouts(true)
Branch.getInstance().disableAdNetworkCallouts(true);

expectDelayedSessionInitialization

Branch expects session initialization to be started in the LauncherActivity.onStart() method. If session initialization has not been started/completed by the time any Activity resumes, Branch will auto-initialize. This allows Branch to keep an accurate count of all app sessions, including instances when the app is launched from a recent apps list and the first visible Activity is not LauncherActivity.

In certain scenarios, users may need to delay session initialization (e.g. to asynchronously retrieve some data that needs to be passed to Branch prior to session initialization). In those cases, use the expectDelayedSessionInitialization() method to temporarily disable auto self-initialization. Once the user initializes the session themselves, the flag will be reset and auto session initialization will be re-enabled.

MethodDescription
public static void expectDelayedSessionInitialization(boolean expectDelayedInit)Temporarily disables auto session initialization until user initializes themselves.
ArgumentTypeDescription
expectDelayedInitBooleanA boolean to set the expectation flag..

Example Usage

// `expectDelayedSessionInitialization()` must be called before establishing the Branch singleton within your application class `onCreate()` method

class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()

		// Delay session initialization 
		Branch.expectDelayedSessionInitialization()

		// Branch object initialization
		Branch.getAutoInstance(this.applicationContext)
	}
}
// `expectDelayedSessionInitialization()` must be called before establishing the Branch singleton within your application class `onCreate()` method

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();

		// Delay session initialization 
		Branch.expectDelayedSessionInitialization();

		// Branch object initialization
		Branch.getAutoInstance(this.getApplicationContext);
	}
}

setAPIUrl

MethodDescription
public static void setAPIUrl(String url)Sets a custom base URL for all calls to the Branch API.

Requires HTTPS.
ArgumentTypeDescription
urlStringThe base URL that the Branch API uses.

Example Usage

Branch.setAPIUrl("https://example.com")
Branch.setAPIUrl("https://example.com");

setCDNBaseUrl

MethodDescription
public static void setCDNBaseUrl(String url)Sets a custom CDN base URL.
ArgumentTypeDescription
urlStringThe base URL for CDN endpoints.

Example Usage

Branch.setCDNBaseUrl("https://example.com")
Branch.setCDNBaseUrl("https://example.com");

disableTracking (deprecated)

MethodDescription
public void disableTracking(boolean disableTracking)Method to change the tracking state. If disabled, the Branch Android SDK will not track any user data or state. The SDK will not send any network calls, except for deep linking, when tracking is disabled.
ArgumentTypeDescription
disableTrackingBooleanWhen set to true, tracking is disabled.

Example Usage

Branch.getInstance().disableTracking(true)
Branch.getInstance().disableTracking(true);

isTrackingDisabled (deprecated)

MethodDescription
public boolean isTrackingDisabled()Checks to see whether tracking is disabled.
Returns
A boolean whose value is true if tracking is disabled.

Example Usage

Branch.getInstance().isTrackingDisabled()
Branch.getInstance().isTrackingDisabled();

setNetworkTimeout

MethodDescription
public void setNetworkTimeout(int timeout)Sets the duration in milliseconds that the system should wait for a response before timing out any Branch API.

Default is 5500 ms.
ArgumentTypeDescription
timeoutIntAn integer value specifying the number of milliseconds to wait before considering the request to have timed out.

Example Usage

Branch.getInstance().setNetworkTimeout(8000)
Branch.getInstance().setNetworkTimeout(8000);

setNetworkConnectTimeout

MethodDescription
public void setNetworkConnectTimeout(int connectTimeout)Sets the duration in milliseconds that the system should wait for initializing a network request.
ArgumentTypeDescription
connectTimeoutIntAn integer value specifying the number of milliseconds to wait before considering the initialization to have timed out.

Example Usage

Branch.getInstance().setNetworkConnectTimeout(6000)
Branch.getInstance().setNetworkConnectTimeout(6000);

setNoConnectionRetryMax

MethodDescription
public void setNoConnectionRetryMax(int retryMax) In cases of persistent no internet connection or offline modes, set a maximum number of attempts for the Branch request to be tried.

Default is 3.
ArgumentTypeDescription
retryMaxIntAn integer greater than 0 representing the number of retries to attempt.

Example Usage

Branch.getInstance().setNoConnectionRetryMax(3)
Branch.getInstance().setNoConnectionRetryMax(3);

setReferrerGclidValidForWindow

MethodDescription
public void setReferrerGclidValidForWindow(long window)Sets the window for the referrer GCLID field. The GCLID will be persisted locally from the time it is set + window in milliseconds. Thereafter, it will be deleted.
ArgumentTypeDescription
windowLongA value of type long, specifying the number of milliseconds to wait before deleting the locally persisted GCLID value. Minimum is 0 milliseconds, maximum is 3 years.

Example Usage

Branch.getInstance().setReferrerGclidValidForWindow(604800)
Branch.getInstance().setReferrerGclidValidForWindow(604800L);

setLimitFacebookTracking

MethodDescription
public void setLimitFacebookTracking(boolean isLimitFacebookTracking)Enables or disables app tracking with Branch or any other third parties that Branch uses internally.
ArgumentTypeDescription
isLimitFacebookTrackingBooleanSet to true to limit app tracking.

Example Usage

Branch.getInstance().setLimitFacebookTracking(true)
Branch.getInstance().setLimitFacebookTracking(true);

setDMAParamsForEEA

🚧

Warning: NULL by Default

Please note that the 3 parameters passed to setDMAParamsForEEA() are all NULL by default.

Failure to include user consent signals may result in attribution or campaign performance degradation. For additional information, please reach out to your Google AM.

MethodDescription
public void setDMAParamsForEEA(boolean eeaRegion, boolean adPersonalizationConsent, boolean adUserDataUsageConsent)Sets the value of parameters required by Google Conversion APIs for DMA Compliance in the EEA region.
ArgumentTypeDescription
eeaRegionBooleanSet to true if user is included in European Union regulations. For example, if the user is located within the EEA, they are within the scope of DMA.

Set to false if user is considered excluded from European Union regulations.
adPersonalizationConsentBooleanSet to true if user has granted consent for ads personalization.

Set to false if user has denied consent for ads personalization.
adUserDataUsageConsentBooleanSet to true if user has granted consent for 3P transmission of user-level data for ads.

Set to false is user has denied consent for 3P transmission of user-level data for ads.

Example Usage

// Example for an EEA resident who has denied both ad personalization and data usage consent
Branch.getInstance.setDMAParamsForEEA(true,false,false)
// Example for an EEA resident who has denied both ad personalization and data usage consent
Branch.getInstance.setDMAParamsForEEA(true,false,false);
// Example for an EEA resident who has consented to ad personalization but denied data usage consent
Branch.getInstance.setDMAParamsForEEA(true,true,false)
// Example for an EEA resident who has consented to ad personalization but denied data usage consent
Branch.getInstance.setDMAParamsForEEA(true,true,false);
// Example for an EEA resident who has denied ad personalization but granted data usage consent
Branch.getInstance.setDMAParamsForEEA(true,false,true)
// Example for an EEA resident who has denied ad personalization but granted data usage consent
Branch.getInstance.setDMAParamsForEEA(true,false,true);

Read more about the setDMAParamsForEEA() method and Google DMA compliance in Android Advanced Features guide.


setRequestMetadata

MethodDescription
public void setRequestMetadata(@NonNull String key, @NonNull String value)Add additional metadata in the form of key-value pairs to every network request that is made by the Branch Android SDK. This metadata can be used for analytics, troubleshooting, or to enhance the data set sent with requests.
ArgumentTypeDescription
keyStringThe key in the key-value pair.
valueStringThe value in the key-value pair.

Example Usage

Branch.getInstance().setRequestMetadata("\$analytics_visitor_id", "000001")
Branch.getInstance().setRequestMetadata("$analytics_visitor_id", "000001");

addInstallMetadata

MethodDescription
public Branch addInstallMetadata(@NonNull String key, @NonNull String value)Tag an install with a custom attribute. Add any key-value pairs that qualify or distinguish an install here.
ArgumentTypeDescription
keyStringThe key in the key-value pair.
valueStringThe value in the key-value pair.

Example Usage

// Call this method before the `onStart()` method of the first activity

class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()
		
		// Branch object initialization
		Branch.getAutoInstance(this.applicationContext)
    
		// Suggestion: call `addInstallMetadata()` right after object initialization
		Branch.getInstance().addInstallMetadata("install_attribute_name", "install_attribute_value")
	}
}
// Call this method before the `onStart()` method of the first activity

protected static final String branchKey = "branch_key_here";

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();

		// Branch object initialization
		Branch.getAutoInstance(this.getApplicationContext, branchKey);
    
		// Suggestion: call `addInstallMetadata()` right after object initialization
		Branch.getInstance().addInstallMetadata("install_attribute_name", "install_attribute_value");
	}
}

setPreinstallCampaign

MethodDescription
public Branch setPreinstallCampaign(@NonNull String preInstallCampaign)Wrapper method to add the pre-install campaign name.
ArgumentTypeDescription
preInstallCampaignStringThe pre-install campaign.
Returns
An initialized singleton Branch object instance with the pre-install campaign set.

Example Usage

Branch.getInstance().setPreinstallCampaign("My Pre-Install Campaign")
Branch.getInstance().setPreinstallCampaign("My Pre-Install Campaign");

setPreinstallPartner

MethodDescription
public Branch setPreinstallPartner(@NonNull String preInstallPartner)Wrapper method to add the pre-install partner name.
ArgumentTypeDescription
preInstallPartnerStringThe pre-install partner.
Returns
An initialized singleton Branch object instance with the pre-install partner set.

Example Usage

Branch.getInstance().setPreinstallCampaign("My Pre-Install Partner")
Branch.getInstance().setPreinstallCampaign("My Pre-Install Partner");

setReferringLinkAttributionForPreinstalledAppsEnabled

MethodDescription
public static void setReferringLinkAttributionForPreinstalledAppsEnabled()By default, Branch prioritizes pre-install attribution on pre-installed apps. This method enables referring URL attribution for pre-installed apps instead.

Example Usage

class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()
    
		// Enable referring URL attribution prior to initialization
		Branch.setReferringLinkAttributionForPreinstalledAppsEnabled()
		
		// Branch object initialization
		Branch.getAutoInstance(this.applicationContext)
	}
}
protected static final String branchKey = "branch_key_here";

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();

		// Enable referring URL attribution prior to initialization
		Branch.setReferringLinkAttributionForPreinstalledAppsEnabled();
    
		// Branch object initialization
		Branch.getAutoInstance(this.getApplicationContext, branchKey);
	}
}

isReferringLinkAttributionForPreinstalledAppsEnabled

MethodDescription
public static boolean isReferringLinkAttributionForPreinstalledAppsEnabled()Returns whether referring URL attribution for pre-installed apps is enabled.
Returns
A boolean whose value is true when the referring URL attribution for pre-installed apps is enabled.

Example Usage

Branch.isReferringLinkAttributionForPreinstalledAppsEnabled()
Branch.isReferringLinkAttributionForPreinstalledAppsEnabled();

setIsUserAgentSync

MethodDescription
public static void setIsUserAgentSync(boolean sync)Configures the behavior of the Branch Android SDK related to the synchronization of the user agent string.
ArgumentTypeDescription
syncBooleanWhen set to true, the Branch Android SDK is instructed to synchronize and cache the user agent string immediately. This is done synchronously and must be executed on the main thread due to Android's threading model.

Example Usage

Branch.setIsUserAgentSync(true)
Branch.setIsUserAgentSync(true);

addWhiteListedScheme

MethodDescription
public Branch addWhiteListedScheme(String urlWhiteListPattern)The Branch Android SDK collects URLs from incoming intents for better attribution. The SDK extensively check for any sensitive data in the URL and skips it if found.

However, the addWhiteListedScheme() method tells the SDK to collect only URLs that have a particular form. This method allows the application to specify a regular expression to use when determining whether to collect a URL.

If the allowlist is not empty, the SDK will collect only the URLs that match the allowlist.
ArgumentTypeDescription
urlWhiteListPatternStringA regular expression in string format that filters which URLs are collected.
Returns
A Branch instance for successful method calls.

Example Usage

class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()
		
		// Branch object initialization
		Branch.getAutoInstance(this.applicationContext)
    
		// `addWhiteListedScheme()` should be called immediately after Branch object initialization
		Branch.getInstance().addWhiteListedScheme("{my-domain}")
	}
}
protected static final String branchKey = "branch_key_here";

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
    
		// Branch object initialization
		Branch.getAutoInstance(this.getApplicationContext, branchKey);
    
		// `addWhiteListedScheme()` should be called immediately after Branch object initialization
		Branch.getInstance().addWhiteListedScheme("{my-domain}");
	}
}

setWhiteListedSchemes

MethodDescription
public Branch setWhiteListedSchemes(List<String> urlWhiteListPatternList)The Branch Android SDK collects URLs from incoming intents for better attribution. The SDK extensively checks for any sensitive data in the URL and skips it if found.

However, the setWhiteListedSchemes() method tells the SDK to collect only URLs that have a particular form. This method allows the application to specify a set of regular expressions to use when determining whether to collect a URL.

If the allowlist is not empty, the SDK will collect only the URLs that match the allowlist.
ArgumentTypeDescription
A regular expression in string format that filters which URLs are collected.List<String>A list of of regular expressions in string format that filter which URLs are collected.
Returns
A Branch instance for successful method calls.

Example Usage

class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()
		
		// Branch object initialization
		Branch.getAutoInstance(this.applicationContext)
    
		// `addWhiteListedScheme()` should be called immediately after Branch object initialization
		Branch.getInstance().setWhiteListedSchemes("{my-domain}", "^app-link")
	}
}
protected static final String branchKey = "branch_key_here";

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
    
		// Branch object initialization
		Branch.getAutoInstance(this.getApplicationContext, branchKey);
    
		// `addWhiteListedScheme()` should be called immediately after Branch object initialization
		Branch.getInstance().setWhiteListedSchemes("{my-domain}", "^app-link");
	}
}

addUriHostsToSkip

MethodDescription
public Branch addUriHostsToSkip(String urlSkipPattern)The Branch Android SDK collects URLs from incoming intents for better attribution. The SDK extensively check for any sensitive data in the URL and skips it if found.

This method allows applications specify SDK to skip any additional URL patterns to be skipped.
ArgumentTypeDescription
urlSkipPatternStringA URL pattern that the Branch Android SDK should skip when collecting data.
Returns
A Branch instance for successful method calls.

Example Usage

class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()
		
		// Branch object initialization
		Branch.getAutoInstance(this.applicationContext)
    
		// `addUriHostsToSkip()` should be called immediately after Branch object initialization
		Branch.getInstance().addUriHostsToSkip("{my-uri-host}")
	}
}
protected static final String branchKey = "branch_key_here";

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
    
		// Branch object initialization
		Branch.getAutoInstance(this.getApplicationContext, branchKey);
    
		// `addUriHostsToSkip()` should be called immediately after Branch object initialization
		Branch.getInstance().addUriHostsToSkip("{my-uri-host}");
	}
}

setIdentity

This method may be helpful if you have your own user IDs for customers, or you want referral and event data to persist across platforms or uninstall/reinstall. Using this method can make it easier to know when users access your service from different devices.

Warning: Do not use this method to send PII to Branch. Read more about the setIdentity() method and PII in our Android Advanced Features guide.

MethodDescription
public void setIdentity(@NonNull String userId)Identifies the current user to the Branch API by supplying a unique identifier as a string value. No callback.
public void setIdentity(@NonNull String userId, @Nullable BranchReferralInitListener callback)Identifies the current user to the Branch API by supplying a unique identifier as a string value. Includes a callback.
ArgumentTypeDescription
userIdStringA string value containing the unique identifier of the user. Should not exceed 127 characters.
callbackBranchReferralInitListenerA BranchReferralInitListener callback instance that will return the data associated with the user ID being assigned, if available.

Example Usage

Branch branch = Branch.getAutoInstance(this.applicationContext)
branch.setIdentity("unique_user_id", new BranchReferralInitListener())
Branch branch = Branch.getAutoInstance(this.getApplicationContext);

public void onClick(View v) {
	branch.setIdentity("unique_user_id", new BranchReferralInitListener() {
		@Override
		public void onInitFinished(JSONObject referringParams, BranchError error) {
			Log.i("Test", "install params = " + referringParams.toString());
		}
	});
}

getLastAttributedTouchData

MethodDescription
public void getLastAttributedTouchData(@NonNull BranchLastAttributedTouchDataListener callback)Gets the available last attributed touch data. The attribution window is set to the value last saved via PreferenceHelper.setLATDAttributionWindow().

If no value has been saved, Branch defaults to a 30 day attribution window (SDK sends -1 to request the default from the server).
ArgumentTypeDescription
callbackBranchLastAttributedTouchDataListenerAn instance of io.branch.referral.ServerRequestGetLATD.BranchLastAttributedTouchDataListener to callback with last attributed touch data.

Example Usage

val branch = Branch.getInstance()

branch.getLastAttributedTouchData({ jsonObject, error ->
	if (error == null) {
		promise.resolve(convertJsonToMap(jsonObject))
	} else {
		promise.reject(GENERIC_ERROR, error.message)
	}
}, 80)
Branch branch = Branch.getInstance();

branch.getLastAttributedTouchData(new ServerRequestGetLATD.BranchLastAttributedTouchDataListener() {
	@Override
	public void onDataFetched(JSONObject jsonObject, BranchError error) {
		if (error == null) {
			promise.resolve(convertJsonToMap(jsonObject));
		} else {
			promise.reject(GENERIC_ERROR, error.getMessage());
		}
	}
}, 80);

isUserIdentified

MethodDescription
public boolean isUserIdentified()Indicates whether or not this user has a unique ID specified for them. Note that this is independent of installs.

If you call setIdentity(), the device will have that identity associated with the user until logout is called. This includes persisting through uninstalls, as Branch tracks device ID.
Returns
A boolean value that is true only if the user already has a unique ID set in the system.

Example Usage

Branch.getInstance().isUserIdentified()
Branch.getInstance().isUserIdentified();

logout

MethodDescription
public void logout()Call this method if you know that a different person is about to use the app. For example, if you allow users to log out and let their friends use the app, you should call logout() to notify Branch to create a new user for this device. This will clear the first and latest params, and a new session is created.
public void logout(LogoutStatusListener callback)Call this method if you know that a different person is about to use the app. For example, if you allow users to log out and let their friends use the app, you should call logout() to notify Branch to create a new user for this device. This will clear the first and latest params, and a new session is created.

Includes a callback.

Example Usage

Branch.getInstance().logout()
Branch.getInstance().logout();

Example Usage with Callback

Branch.getInstance().logout { loggedOut, error ->
    Log.e("Tester", "onLogoutFinished $loggedOut errorMessage ${error?.message}")
}
Branch.getInstance().logout(new Branch.LogoutStatusListener() {
	@Override
 	public void onLogoutFinished(boolean loggedOut, BranchError error) {
		Log.e("Tester", "onLogoutFinished " + loggedOut + " errorMessage " + error);
	}
});

getFirstReferringParams

MethodDescription
public JSONObject getFirstReferringParams()Returns the parameters associated with the link that referred the user. This is only set once, when the user is first referred by a link. Think of this as the user referral parameters.

It is also only set if isReferrable is equal to true, which by default is only true on a fresh install (not upgrade or reinstall). This will change on setIdentity() (if the user already exists from a previous device) and logout().
Returns
A JSONObject instance containing the install-time parameters as configured locally.

Example Usage

fun getFirstReferringBUO(): String {
	val branch = Branch.getInstance()
	val firstParams = branch?.getFirstReferringParams()

	val buo = if (firstParams?.has("+clicked_branch_link") == true && firstParams.getBoolean("+clicked_branch_link")) {
		BranchUniversalObject.createInstance(firstParams)
	} else {
		// Handle error
	}

	return buo.toString()
}
public static String getFirstReferringBranchUniversalObject() {
	BranchUniversalObject branchUniversalObject = null;
	Branch branchInstance = Branch.getInstance();
  
	if (branchInstance != null && branchInstance.getFirstReferringParams() != null) {
		JSONObject firstParam = branchInstance.getFirstReferringParams();
		try {
			if (firstParam.has("+clicked_branch_link") && firstParam.getBoolean("+clicked_branch_link")) {
				branchUniversalObject = BranchUniversalObject.createInstance(firstParam);
			}
		} catch (Exception ignore) {
		}
	}
  
	return _jsonObjectFromBranchUniversalObject(branchUniversalObject).toString();
}

getFirstReferringParamsSync

MethodDescription
public JSONObject getFirstReferringParamsSync()Note: This function must be called from a non-UI thread!

If Branch has no install link data and this function is called, it will return data upon initializing, or until LATCH_WAIT_UNTIL.

It is also only set if isReferrable is equal to true, which by default is only true on a fresh install (not upgrade or reinstall). This will change on setIdentity() (if the user already exists from a previous device) and logout().
Returns
A JSONObject instance containing the install-time parameters as configured locally.

Example Usage

fun getFirstReferringBUO(): String {
	val branch = Branch.getInstance()
	val firstParams = branch?.getFirstReferringParamsSync()

	val buo = if (firstParams?.has("+clicked_branch_link") == true && firstParams.getBoolean("+clicked_branch_link")) {
		BranchUniversalObject.createInstance(firstParams)
	} else {
		// Handle error
	}

	return buo.toString()
}
public static String getFirstReferringBranchUniversalObject() {
	BranchUniversalObject branchUniversalObject = null;
	Branch branchInstance = Branch.getInstance();
  
	if (branchInstance != null && branchInstance.getFirstReferringParamsSync() != null) {
		JSONObject firstParam = branchInstance.getFirstReferringParamsSync();
		try {
			if (firstParam.has("+clicked_branch_link") && firstParam.getBoolean("+clicked_branch_link")) {
				branchUniversalObject = BranchUniversalObject.createInstance(firstParam);
			}
		} catch (Exception ignore) {
		}
	}
  
	return _jsonObjectFromBranchUniversalObject(branchUniversalObject).toString();
}

getLatestReferringParams

MethodDescription
public JSONObject getLatestReferringParams()Returns the parameters associated with the link that referred the session. If a user clicks a link, and then opens the app, initSession() will return the parameters of the link, then set them as the latest parameters to be retrieved by this method.

By default, sessions persist for the duration of time that the app is in focus. For example, if you minimize the app, these parameters will be cleared when closeSession() is called.
Returns
A JSONObject instance containing the latest referring parameters as configured locally.

Example Usage

private fun readDeepLinkData() {
	val params = Branch.getInstance().latestReferringParams()

	try {
		val paramsStr = params.toString(2)
		updateDisplay(paramsStr)
	} catch (e: JSONException) {
		e.printStackTrace()
	}
}
private void readDeepLinkData() {
	JSONObject sessionParams = Branch.getInstance().getLatestReferringParams();
  
	try {
		String sessionParamsString = sessionParams.toString(2);
    updateDisplay(sessionParamsString);
  } catch (JSONException e) {
    e.printStackTrace();
  }
}

getLatestReferringParamsSync

MethodDescription
public JSONObject getLatestReferringParamsSync()Note: This function must be called from a non-UI thread!

If Branch has not been initialized and this method is called, it will return data upon initialization, or until LATCH_WAIT_UNTIL.

Returns the parameters associated with the link that referred the session. If a user clicks a link, and then opens the app, initSession() will return the parameters of the link, then set them as the latest parameters to be retrieved by this method.
Returns
A JSONObject instance containing the latest referring parameters as configured locally.
private fun readDeepLinkData() {
	val params = Branch.getInstance().latestReferringParamsSync()

	try {
		val paramsStr = params.toString(2)
		updateDisplay(paramsStr)
	} catch (e: JSONException) {
		e.printStackTrace()
	}
}
private void readDeepLinkData() {
	JSONObject sessionParams = Branch.getInstance().getLatestReferringParamsSync();
  
	try {
		String sessionParamsString = sessionParams.toString(2);
    updateDisplay(sessionParamsString);
  } catch (JSONException e) {
    e.printStackTrace();
  }
}

addFacebookPartnerParameterWithName

MethodDescription
public void addFacebookPartnerParameterWithName(@NonNull String key, @NonNull String value)Add a Partner Parameter for Facebook. This allows you to pass additional hashed information to the SDK for Facebook Advanced Matching.

Once set, this parameter is attached to INSTALL, OPEN, and other events until they are cleared or the app restarts.
ArgumentTypeDescription
keyStringPartner Parameter key name. See Facebook's documentation for details on valid parameters.
valueStringPartner Parameter value. See Facebook's documentation for details on valid parameters.

Example Usage

Branch.getInstance().addFacebookPartnerParameterWithName("key", "value")
Branch.getInstance().addFacebookPartnerParameterWithName("key", "value");

addSnapPartnerParameterWithName

MethodDescription
public void addSnapPartnerParameterWithName(@NonNull String key, @NonNull String value)Add a Partner Parameter for Snap.
ArgumentTypeDescription
keyStringPartner Parameter key name. See Snap's documentation for details on valid parameters.
valueStringPartner Parameter value. See Snap's documentation for details on valid parameters.

Example Usage

Branch.getInstance().addSnapPartnerParameterWithName("key", "value")
Branch.getInstance().addSnapPartnerParameterWithName("key", "value");

clearPartnerParameters

MethodDescription
public void clearPartnerParameters()Clear all Partner Parameters that were previously set.

Example Usage

Branch.getInstance().clearPartnerParameters()
Branch.getInstance().clearPartnerParameters();

getTrackingController

MethodDescription
public TrackingController getTrackingController()Get the TrackingController instance being used. The TrackingController instance handles user data and determines if tracking is enabled or not.
Returns
The instance of TrackingController being used.

Example Usage

Branch.getInstance().getTrackingController()
Branch.getInstance().getTrackingController();

getDeviceInfo

MethodDescription
public DeviceInfo getDeviceInfo()Get information about the device.
Returns
An instance of DeviceInfo.

The DeviceInfo class handles device parameters during Branch server requests. It is responsible for capturing device info, and updating server requests with that info.

Example Usage

Branch.getInstance().getDeviceInfo()
Branch.getInstance().getDeviceInfo();

notifyNetworkAvailable

MethodDescription
public void notifyNetworkAvailable()Notify Branch when a network is available to process the next request in the queue.

Example Usage

Branch.getInstance().notifyNetworkAvailable()
Branch.getInstance().notifyNetworkAvailable();

enableLogging

MethodDescription
public static void enableLogging()Enable sending debug messages for logging purposes.

Important: Branch recommends that you use this method with your Branch Test Key and that you remove the method call before releasing to production.
ArgumentTypeDescription
levelBranchLogger.BranchLogLevelThe desired minimum log level to be displayed. Can be ERROR, WARN, INFO, DEBUG, or VERBOSE.
iBranchLoggingIBranchLoggingCallbacksAn instance of IBranchLoggingCallbacks to directly receive all log messages from the SDK.

Example Usage

package com.example.android

import android.app.Application
import io.branch.referral.Branch

class CustomApplicationClass : Application() {
	override fun onCreate() {
		super.onCreate()

		// Branch logging for debugging
		Branch.enableLogging()
    
    // Adjust the desired log level (Android SDK versions v5.12.0+ only)
    Branch.enableLogging(BranchLogger.BranchLogLevel.VERBOSE)

    // Create a custom callback to forward log messages to
    val loggingCallbacks = IBranchLoggingCallbacks { logMessage, severityConstantName -> 
          // Handle the log messages  
        Log.v("CustomTag", logMessage)
    }
    Branch.enableLogging(loggingCallbacks)

		// Branch object initialization
		Branch.getAutoInstance(this)
	}
}
package com.example.android;

import android.app.Application;
import io.branch.referral.Branch;

public class CustomApplicationClass extends Application {
	@Override
	public void onCreate() {
		super.onCreate();

		// Branch logging for debugging
		Branch.enableLogging();

    // Adjust the desired log level (Android SDK versions v5.12.0+ only)
    Branch.enableLogging(BranchLogger.BranchLogLevel.VERBOSE);
		
    // Create a custom callback to forward log messages to
    IBranchLoggingCallbacks loggingCallbacks = new IBranchLoggingCallbacks() {
        @Override
        public void onBranchLog(String logMessage, String severityConstantName) {
            // Handle the log messages  
            Log.v( "CustomTag", logMessage);
        }
    };
    Branch.enableLogging(loggingCallbacks);
    
		// Branch object initialization
		Branch.getAutoInstance(this);
	}
}

disableLogging

MethodDescription
public static void disableLogging()Disable sending debug messages.

Example Usage

Branch.disableLogging()
Branch.disableLogging();

registerView

MethodDescription
public void registerView(BranchUniversalObject branchUniversalObject, BranchUniversalObject.RegisterViewStatusListener callback)Log a BRANCH_STANDARD_EVENT.VIEW_ITEM event.
ArgumentTypeDescription
branchUniversalObjectBranchUniversalObjectThe Branch Universal Object instance associated with the BRANCH_STANDARD_EVENT.VIEW_ITEM event.
callbackBranchUniversalObject.RegisterViewStatusListenerAn instance of RegisterViewStatusListener to listen to results of the operation.

Example Usage

val buo = BranchUniversalObject().setCanonicalIdentifier("content/12345")
buo.registerView { registered, error ->
	// Implementation here
}
BranchUniversalObject buo = new BranchUniversalObject().setCanonicalIdentifier("content/12345");
buo.registerView((registered, error) -> {
	// Implementation here    
});

sessionBuilder

Learn more about using sessionBuilder() and initializing Branch in our Android Basic Integration guide.

MethodDescription
public static InitSessionBuilder sessionBuilder(Activity activity)Create a Branch session builder. Add configuration variables with the available methods in the returned InitSessionBuilder class instance.

Note: Must call init() or reInit() after, otherwise sessionBuilder() has no effect.
ArgumentTypeDescription
activityActivityThe calling Activity for context.
Returns
An instance of InitSessionBuilder.

Example Usage

package com.example.android

import io.branch.indexing.BranchUniversalObject
import io.branch.referral.Branch
import io.branch.referral.BranchError
import io.branch.referral.util.LinkProperties

import android.util.Log;
import org.json.JSONObject;

override fun onStart() {
	super.onStart()
	Branch.sessionBuilder(this).withCallback { referringParams, error ->
		if (error == null) {
			// Option 1: log data
			Log.i("BRANCH SDK", referringParams.toString())

			// Option 2: save data to be used later
			val preferences = getSharedPreferences(
				"MyPreferences",
				 MODE_PRIVATE
			)
			preferences.edit().putString("branchData", referringParams.toString()).apply()

			// Option 3: navigate to page
			val intent = Intent(this@MainActivity, OtherActivity::class.java)
			startActivity(intent)

			// Option 4: display data
			Toast.makeText(this@MainActivity, referringParams.toString(), Toast.LENGTH_LONG).show()
		} else {
			Log.i("BRANCH SDK", error.message)
		}
	}.withData(this.intent.data).init()
}

override fun onNewIntent(intent: Intent?) {
	super.onNewIntent(intent)
	this.setIntent(intent);
	if (intent != null && intent.hasExtra("branch_force_new_session") && intent.getBooleanExtra("branch_force_new_session",false)) {
		Branch.sessionBuilder(this).withCallback { referringParams, error ->
			if (error != null) {
				Log.e("BranchSDK_Tester", error.message)
			} else if (referringParams != null) {
				Log.i("BranchSDK_Tester", referringParams.toString())
			}
		}.reInit()
	}
}
// In LauncherActivity.java
package com.example.android;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

import org.json.JSONObject;

import io.branch.indexing.BranchUniversalObject;
import io.branch.referral.Branch;
import io.branch.referral.BranchError;
import io.branch.referral.util.LinkProperties;

public class LauncherActivity extends AppCompatActivity {

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

	@Override
	protected void onStart() {
		super.onStart();
		Branch.sessionBuilder(this).withCallback(new Branch.BranchUniversalReferralInitListener() {
			@Override
			public void onInitFinished(BranchUniversalObject branchUniversalObject, LinkProperties linkProperties, BranchError error) {
				if (error != null) {
					Log.e("BranchSDK_Tester", "branch init failed. Caused by -" + error.getMessage());
				} else {
					Log.i("BranchSDK_Tester", "branch init complete!");
					if (branchUniversalObject != null) {
						Log.i("BranchSDK_Tester", "title " + branchUniversalObject.getTitle());
						Log.i("BranchSDK_Tester", "CanonicalIdentifier " + branchUniversalObject.getCanonicalIdentifier());
						Log.i("BranchSDK_Tester", "metadata " + branchUniversalObject.getContentMetadata().convertToJson());
					}

					if (linkProperties != null) {
						Log.i("BranchSDK_Tester", "Channel " + linkProperties.getChannel());
						Log.i("BranchSDK_Tester", "control params " + linkProperties.getControlParams());
					}
				}
			}
		}).withData(this.getIntent().getData()).init();
	}

	@Override
	public void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		this.setIntent(intent);
		if (intent != null && intent.hasExtra("branch_force_new_session") && intent.getBooleanExtra("branch_force_new_session",false)) {
			Branch.sessionBuilder(this).withCallback(new BranchReferralInitListener() {
				@Override
				public void onInitFinished(JSONObject referringParams, BranchError error) {
					if (error != null) {
						Log.e("BranchSDK_Tester", error.getMessage());
					} else if (referringParams != null) {
						Log.i("BranchSDK_Tester", referringParams.toString());
					}
				}
			}).reInit();
		}
	}
}

logEventWithPurchase

Learn more about relaying app store subscriptions and in-app purchases to Branch here.

MethodDescription
public void logEventWithPurchase(@NonNull Context context, @NonNull Purchase purchase)Log a Branch Event for every app store subscription or in-app purchase event, without needing to create and populate a Branch Universal Object instance.
ArgumentTypeDescription
contextContextThe relevant Context object.
purchasePurchaseA Purchase object, retrieved from the Google Play Developer API.

Example Usage

Branch.getInstance().logEventWithPurchase(this, purchase)
Branch.getInstance().logEventWithPurchase(MainActivity.this, (Purchase) purchase);

addContentItems

MethodDescription
public BranchEvent addContentItems(BranchUniversalObject... contentItems)Associate specific BranchUniversalObject instances with an event. Must be a BRANCH_STANDARD_EVENT.
public BranchEvent addContentItems(List<BranchUniversalObject> contentItems)Associate specific BranchUniversalObject instances with an event. Must be a BRANCH_STANDARD_EVENT.
ArgumentTypeDescription
contentItemsBranchUniversalObject... or List<BranchUniversalObject>The BranchUniversalObject instances associated with this event.
Returns
The BranchEvent object which the BranchUniversalObject instance was added to, useful for chaining builder methods.

Example Usage

// Create a Branch Universal Object to associate with an event
val buo = BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
  .setTitle("My Content Title")
  .setContentDescription("My Content Description")
  .setContentImageUrl("https://lorempixel.com/400/400")
  .setContentMetadata(ContentMetadata().addCustomMetadata("key1", "value1"))

// Create a `BRANCH_STANDARD_EVENT`, in this case `ADD_TO_CART`
BranchEvent(BRANCH_STANDARD_EVENT.ADD_TO_CART)
  .setCustomerEventAlias("my_custom_alias")
  .setDescription("Customer added item to cart")
  .setSearchQuery("Test Search query")
  .addCustomDataProperty("Custom_Event_Property_Key1", "Custom_Event_Property_val1")
  .addCustomDataProperty("Custom_Event_Property_Key2", "Custom_Event_Property_val2")
  .addContentItems(buo) // Add a populated `BranchUniversalObject` to the event
// Create a Branch Universal Object to associate with an event
BranchUniversalObject buo = new BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
  .setTitle("My Content Title")
  .setContentDescription("My Content Description")
  .setContentImageUrl("https://lorempixel.com/400/400")
  .setContentMetadata(new ContentMetadata().addCustomMetadata("key1", "value1"));

// Create a `BRANCH_STANDARD_EVENT`, in this case `ADD_TO_CART`
new BranchEvent(BRANCH_STANDARD_EVENT.ADD_TO_CART)
  .setCustomerEventAlias("my_custom_alias")
  .setDescription("Customer added item to cart")
  .setSearchQuery("Test Search query")
  .addCustomDataProperty("Custom_Event_Property_Key1", "Custom_Event_Property_val1")
  .addCustomDataProperty("Custom_Event_Property_Key2", "Custom_Event_Property_val2")
  .addContentItems(buo) // Add a populated BranchUniversalObject to the event

logEvent

MethodDescription
public boolean logEvent(Context context)Log a BranchEvent to Branch for tracking and analytics.
public boolean logEvent(Context context, final BranchLogEventCallback callback)Log a BranchEvent to Branch for tracking and analytics. This method provides a callback once the event is logged.
ArgumentTypeDescription
contextContextCurrent context.
callbackBranchLogEventCallbackCallback returned when event is logged.
Returns
A boolean that is true if the Branch Event was successfully logged.

Example Usage

// Create a `BranchUniversalObject` (optional)
val buo = BranchUniversalObject().setCanonicalIdentifier("content/12345")

// Create a `BRANCH_STANDARD_EVENT`, in this case `ADD_TO_CART`
BranchEvent(BRANCH_STANDARD_EVENT.ADD_TO_CART)
  .setCustomerEventAlias("my_custom_alias")
  .setDescription("Customer added item to cart")
  .setSearchQuery("Test Search query")
  .addCustomDataProperty("Custom_Event_Property_Key1", "Custom_Event_Property_val1")
  .addCustomDataProperty("Custom_Event_Property_Key2", "Custom_Event_Property_val2")
  .addContentItems(buo) // Associate `BranchUniversalObject` with event
  .logEvent(this.applicationContext) // Log the event
// Create a `BranchUniversalObject` (optional)
BranchUniversalObject buo = new BranchUniversalObject().setCanonicalIdentifier("content/12345");

// Create a `BRANCH_STANDARD_EVENT`, in this case `ADD_TO_CART`
new BranchEvent(BRANCH_STANDARD_EVENT.ADD_TO_CART)
  .setCustomerEventAlias("my_custom_alias")
  .setDescription("Customer added item to cart")
  .setSearchQuery("Test Search query")
  .addCustomDataProperty("Custom_Event_Property_Key1", "Custom_Event_Property_val1")
  .addCustomDataProperty("Custom_Event_Property_Key2", "Custom_Event_Property_val2")
  .addContentItems(buo) // Associate `BranchUniversalObject` with event
  .logEvent(this.getApplicationContext); // Log the event

Example Usage With Callback

// Create a `BranchUniversalObject` (optional)
val buo = BranchUniversalObject().setCanonicalIdentifier("content/12345")

// Create a `BRANCH_STANDARD_EVENT`, in this case `ADD_TO_CART`
BranchEvent(BRANCH_STANDARD_EVENT.ADD_TO_CART).apply {
  setCustomerEventAlias("my_custom_alias")
  setDescription("Customer added item to cart")
  setSearchQuery("Test Search query")
  addCustomDataProperty("Custom_Event_Property_Key1", "Custom_Event_Property_val1")
  addCustomDataProperty("Custom_Event_Property_Key2", "Custom_Event_Property_val2")
  addContentItems(buo) // Associate `BranchUniversalObject` with event
  logEvent(MainActivity.this, object : BranchEvent.BranchLogEventCallback {
    override fun onSuccess(responseCode: Int) {
      Toast.makeText(applicationContext, "Sent Branch Commerce Event: $responseCode", Toast.LENGTH_SHORT).show()
    }

    override fun onFailure(e: Exception) {
      Log.d("BranchSDK_Tester", e.toString())
      Toast.makeText(applicationContext, "Error sending Branch Commerce Event: ${e.toString()}", Toast.LENGTH_SHORT).show()
    }
  })
}
// Create a `BranchUniversalObject` (optional)
BranchUniversalObject buo = new BranchUniversalObject().setCanonicalIdentifier("content/12345");

// Create a `BRANCH_STANDARD_EVENT`, in this case `ADD_TO_CART`
new BranchEvent(BRANCH_STANDARD_EVENT.ADD_TO_CART)
  .setCustomerEventAlias("my_custom_alias")
  .setDescription("Customer added item to cart")
  .setSearchQuery("Test Search query")
  .addCustomDataProperty("Custom_Event_Property_Key1", "Custom_Event_Property_val1")
  .addCustomDataProperty("Custom_Event_Property_Key2", "Custom_Event_Property_val2")
  .addContentItems(buo) // Associate `BranchUniversalObject` with event
  .logEvent(MainActivity.this, new BranchEvent.BranchLogEventCallback() {
		@Override
    public void onSuccess(int responseCode) {
      Toast.makeText(getApplicationContext(), "Sent Branch Commerce Event: " + responseCode, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onFailure(Exception e) {
      Log.d("BranchSDK_Tester", e.toString());
      Toast.makeText(getApplicationContext(), "Error sending Branch Commerce Event: " + e.toString(), Toast.LENGTH_SHORT).show();
    }
	});

registerView

MethodDescription
public void registerView()Mark the content referred to by this object as "viewed".

This increments the view count of the content referred to by this object.
public void registerView(@Nullable RegisterViewStatusListener callback)Mark the content referred to by this object as "viewed".

This increments the view count of the content referred to by this object.

This method provides a callback once the view is registered.
ArgumentTypeDescription
callbackRegisterViewStatusListenerCallback returned when view is registered.

Example Usage

// Create a Branch Universal Object
val buo = BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")

// Increment view count for the Branch Universal Object
buo.registerView()
// Create a Branch Universal Object
BranchUniversalObject buo = new BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
  
// Increment view count for the Branch Universal Object
buo.registerView();

getShortUrl

MethodDescription
public String getShortUrl(@NonNull Context context, @NonNull LinkProperties linkProperties)Create a short URL for a specific BranchUniversalObject instance and associate a LinkProperties object with it. This function runs synchronously.
public String getShortUrl(@NonNull Context context, @NonNull LinkProperties linkProperties, boolean defaultToLongUrl)Create a short URL for a specific BranchUniversalObject instance and associate a LinkProperties object with it. This function runs synchronously.
ArgumentTypeDescription
contextContextThe current context.
linkPropertiesLinkPropertiesThe LinkProperties to associate with the URL.
defaultToLongUrlbooleanSpecifies if a long URL should be returned in the case of a link creation error. If set to false, null is returned if link creation fails.
Returns
The short URL generated for the BranchUniversalObject content. By default, null is returned if link creation fails.

Example Usage

// Create a Branch Universal Object
val buo = BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
  
// Create a Link Properties instance
val lp = LinkProperties()
	.setChannel("facebook")
	.setFeature("sharing")
	.setCampaign("content 123 launch")
	.setStage("new user")
	.addControlParameter("$desktop_url", "http://example.com/home")
	.addControlParameter("custom", "data")
	.addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()))

// Generate a short URL for the Branch Universal Object
buo.getShortUrl(this.applicationContext, lp)
// Create a Branch Universal Object
BranchUniversalObject buo = new BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
 
// Create a Link Properties instance
LinkProperties lp = new LinkProperties()
	.setChannel("facebook")
	.setFeature("sharing")
	.setCampaign("content 123 launch")
	.setStage("new user")
	.addControlParameter("$desktop_url", "https://example.com/home")
	.addControlParameter("custom", "data")
	.addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()));
  
// Generate a short URL for the Branch Universal Object
String url = buo.getShortUrl(this.getApplicationContext, lp);

Example Usage With Long URL Fallback

// Create a Branch Universal Object
val buo = BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
  
// Create a Link Properties instance
val lp = LinkProperties()
	.setChannel("facebook")
	.setFeature("sharing")
	.setCampaign("content 123 launch")
	.setStage("new user")
	.addControlParameter("$desktop_url", "http://example.com/home")
	.addControlParameter("custom", "data")
	.addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()))

// Generate a short URL for the Branch Universal Object
buo.getShortUrl(this.applicationContext, lp, true)
// Create a Branch Universal Object
BranchUniversalObject buo = new BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
 
// Create a Link Properties instance
LinkProperties lp = new LinkProperties()
	.setChannel("facebook")
	.setFeature("sharing")
	.setCampaign("content 123 launch")
	.setStage("new user")
	.addControlParameter("$desktop_url", "https://example.com/home")
	.addControlParameter("custom", "data")
	.addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()));
  
// Generate a short URL for the Branch Universal Object
String url = buo.getShortUrl(this.getApplicationContext, new LinkProperties(), true);

share

MethodDescription
public void share(@NonNull Activity activity, @NonNull BranchUniversalObject buo, @NonNull LinkProperties linkProperties, @Nullable BranchNativeLinkShareListener callback, String title, String subject)Show the user a Native Sharesheet. Can specify the Branch Universal Object, Branch Link Properties, title and subject of dialog. Includes a callback.
ArgumentTypeDescription
activityActivityThe relevant Activity.
buoBranchUniversalObjectThe BranchUniversalObject object for generating the Branch Link.
linkPropertiesLinkPropertiesThe Branch Link Properties object to associate with the Branch Link.
callbackBranch.BranchNativeLinkShareListenerCallback.
titleStringA String object for setting title in native chooser dialog.
subjectStringA String object for setting subject in native chooser dialog.

Example Usage

@RequiresApi(Build.VERSION_CODES.LOLLIPOP_MR1)
    private fun shareBranchLink(@NonNull activity:Activity ) {

        // Create a Branch Universal Object
        val buo = BranchUniversalObject()
            .setCanonicalIdentifier("content/12345")

        // Create a Link Properties instance
        val lp = LinkProperties()
            .setChannel("facebook")
            .setFeature("sharing")
            .setCampaign("content 123 launch")
            .setStage("new user")

            // `$deeplink_path` routes users to a specific Activity
            .addControlParameter("\$deeplink_path", "color block page")

            // You can set the `blockColor` parameter to `Blue`, `Yellow`, `Red`, `Green` or `White` to modify the color block page.
            .addControlParameter("blockColor", "Green")

            .addControlParameter("\$desktop_url", "https://example.com/home")
            .addControlParameter("custom", "data")
            .addControlParameter("custom_random", Calendar.getInstance().timeInMillis.toString())

        Branch.getInstance().share(
            this@MainActivity,
            buo,
            lp,
            object : BranchNativeLinkShareListener {
                override fun onLinkShareResponse(sharedLink: String, error: BranchError) {}
                override fun onChannelSelected(channelName: String) { }
            },
            "Sharing Branch Short URL",
            "Using Native Chooser Dialog"
        )
    }
private void  shareBranchLink(){
        // Create a Branch Universal Object
        BranchUniversalObject buo = new BranchUniversalObject()
                .setCanonicalIdentifier("content/12345");
        // Create a Link Properties instance
        LinkProperties lp = new LinkProperties()
                .setChannel("facebook")
                .setFeature("sharing")
                .setCampaign("content 123 launch")
                .setStage("new user")
                .addControlParameter("$desktop_url", "https://example.com/home")
                .addControlParameter("custom", "data")
                .addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()));
        
        // Show Sharesheet
       Branch.getInstance().share(MainActivity.this, branchUniversalObject, lp, new Branch.BranchNativeLinkShareListener() {
                    @Override
                    public void onLinkShareResponse(String sharedLink, BranchError error) {}
                    @Override
                    public void onChannelSelected(String channelName) { }
                },
                "Sharing Branch Short URL",
                "Using Native Chooser Dialog");
    }

Note: If you are using the BranchNativeLinkShareListener object when calling the share() method, make sure to add the SharingBroadcastReceiver class to your AndroidManifest.xml file:

<receiver android:name="io.branch.receivers.SharingBroadcastReceiver" android:exported="true">
           <intent-filter>
               <action android:name="EXTRA_CHOSEN_COMPONENT" />
           </intent-filter>
</receiver>

showShareSheet (deprecated)

MethodDescription
public void showShareSheet(@NonNull Activity activity, @NonNull LinkProperties linkProperties, @NonNull ShareSheetStyle style, @Nullable Branch.BranchLinkShareListener callback)Show the user a Sharesheet. Can specify the link properties and style. Includes a callback.
public void showShareSheet(@NonNull Activity activity, @NonNull LinkProperties linkProperties, @NonNull ShareSheetStyle style, @Nullable Branch.BranchLinkShareListener callback, Branch.IChannelProperties channelProperties)Show the user a Sharesheet. Can specific the link properties and style, as well as the channel properties. Includes a callback.
ArgumentTypeDescription
activityActivityThe relevant Activity.
linkPropertiesLinkPropertiesThe Branch Link Properties object to associate with the Branch Link.
styleShareSheetStyleA ShareSheetStyle object describing your Sharesheet styles.
callbackBranch.BranchLinkShareListenerCallback.

Example Usage

private fun shareBranchLink() {
    
	// Create a Branch Universal Object
  val buo = BranchUniversalObject()
		.setCanonicalIdentifier("content/12345")
  
  // Create a Link Properties instance
  val lp = LinkProperties()
		.setChannel("facebook")
		.setFeature("sharing")
		.setCampaign("content 123 launch")
		.setStage("new user")

		// `$deeplink_path` routes users to a specific Activity
		.addControlParameter("\$deeplink_path", "color block page")

		// You can set the `blockColor` parameter to `Blue`, `Yellow`, `Red`, `Green` or `White` to modify the color block page.
		.addControlParameter("blockColor", "Green")

		.addControlParameter("\$desktop_url", "https://example.com/home")
		.addControlParameter("custom", "data")
		.addControlParameter("custom_random", Calendar.getInstance().timeInMillis.toString())

	// Create an object to store Sharesheet styles
  val ss = ShareSheetStyle(this@MainActivity, "Check this out!", "This stuff is awesome: ")
		.setCopyUrlStyle(resources.getDrawable(androidx.appcompat.R.drawable.abc_ic_menu_copy_mtrl_am_alpha), "Copy", "Added to clipboard")
		.setMoreOptionStyle(resources.getDrawable(androidx.appcompat.R.drawable.abc_ic_search_api_material), "Show more")
		.addPreferredSharingOption(SharingHelper.SHARE_WITH.FACEBOOK)
		.addPreferredSharingOption(SharingHelper.SHARE_WITH.EMAIL)
		.addPreferredSharingOption(SharingHelper.SHARE_WITH.MESSAGE)
		.addPreferredSharingOption(SharingHelper.SHARE_WITH.HANGOUT)
		.setAsFullWidthStyle(true)
		.setSharingTitle("Share With")

	// Show Sharesheet based on user behavior
  buo.showShareSheet(this, lp, ss, object : Branch.BranchLinkShareListener {
		override fun onShareLinkDialogLaunched() {}
		override fun onShareLinkDialogDismissed() {}
		override fun onLinkShareResponse(sharedLink: String?, sharedChannel: String?, error: BranchError?) {}
		override fun onChannelSelected(channelName: String) {}
	})
}
// Create a Branch Universal Object
val buo = BranchUniversalObject()
  .setCanonicalIdentifier("content/12345")
  
// Create a Link Properties instance
LinkProperties lp = new LinkProperties()
	.setChannel("facebook")
	.setFeature("sharing")
	.setCampaign("content 123 launch")
	.setStage("new user")
	.addControlParameter("$desktop_url", "https://example.com/home")
	.addControlParameter("custom", "data")
	.addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()));

// Create an object to store Sharesheet styles
ShareSheetStyle shareSheetStyle = new ShareSheetStyle(MainActivity.this, "Check this out!", "This stuff is awesome: ")
	.setCopyUrlStyle(getResources().getDrawable(android.R.drawable.ic_menu_send), "Copy", "Added to clipboard")
	.setMoreOptionStyle(getResources().getDrawable(android.R.drawable.ic_menu_search), "Show more")
	.addPreferredSharingOption(SharingHelper.SHARE_WITH.FACEBOOK)
	.addPreferredSharingOption(SharingHelper.SHARE_WITH.EMAIL)
	.setAsFullWidthStyle(true)
	.setSharingTitle("Share With");

// Show Sharesheet based on user behavior
buo.showShareSheet(this,lp,shareSheetStyle,new Branch.ExtendedBranchLinkShareListener() {
  	@Override
    public void onShareLinkDialogLaunched() {
    }
    @Override
    public void onShareLinkDialogDismissed() {
    }
    @Override
    public void onLinkShareResponse(String sharedLink, String sharedChannel, BranchError error) {
    }
    @Override
    public void onChannelSelected(String channelName) {
    }
    @Override
    public boolean onChannelSelected(String channelName, BranchUniversalObject buo, LinkProperties linkProperties) {
        return false;
    }
});

getReferredBranchUniversalObject

MethodDescription
public static BranchUniversalObject getReferredBranchUniversalObject()Get the BranchUniversalObject associated with the latest deep linking. This should retrieve the exact object used for creating the deep link. Call this function after initializing a Branch session.
Returns
The BranchUniversalObject associated with the latest Branch Deep Link, or null if the session was not started by a Branch Deep Link click.

Example Usage

val buo = BranchUniversalObject().setCanonicalIdentifier("content/12345")
  
buo.getReferredBranchUniversalObject()
BranchUniversalObject buo = new BranchUniversalObject().setCanonicalIdentifier("content/12345");
buo.getReferredBranchUniversalObject();

getQRCodeAsData

MethodDescription
public void getQRCodeAsData(@NonNull Context context, @NonNull BranchUniversalObject branchUniversalObject, @NonNull LinkProperties linkProperties, @NonNull final BranchQRCodeDataHandler callback) throws IOExceptionGet your Branch QR Code as data.
ArgumentTypeDescription
contextContextCurrent context.
branchUniversalObjectBranchUniversalObjectThe Branch Universal Object associated with the Branch QR Code.
linkPropertiesLinkPropertiesThe Link Properties instance associated with the Branch QR Code.
callbackBranchQRCodeDataHandlerCallback.

Example Usage

// Create a `BranchQRCode` object and set the optional properties
val qrCode = BranchQRCode()
	.setCodeColor("#a4c639")
	.setBackgroundColor(Color.WHITE)
	.setMargin(1)
	.setWidth(512)
	.setImageFormat(BranchQRCode.BranchImageFormat.JPEG)
	.setCenterLogo("https://cdn.branch.io/branch-assets/1598575682753-og_image.png")
  
// Create a Branch Universal Object
val buo = BranchUniversalObject()
	.setCanonicalIdentifier("content/12345")
	.setTitle("My Content Title")
	.setContentDescription("My Content Description")
	.setContentImageUrl("https://lorempixel.com/400/400")

// Create a `LinkProperties` instance
val lp = LinkProperties()
	.setChannel("facebook")
	.setFeature("sharing")
	.setCampaign("content 123 launch")
	.setStage("new user")
  
// Access your Branch QR Code
qrCode.getQRCodeAsData(this.applicationContext, buo, lp, object : BranchQRCodeDataHandler<Any?> {
	override fun onSuccess(p0: ByteArray?) {
		// Do something with Branch QR Code here
}

	override fun onFailure(e: Exception) {
		Log.d("Failed to get QR code", e.toString())
	}
})
// Create a `BranchQRCode` object and set the optional properties
BranchQRCode qrCode = new BranchQRCode()
	.setCodeColor("#a4c639")
  .setBackgroundColor(Color.WHITE)
 	.setMargin(1)
	.setWidth(512)
	.setImageFormat(BranchQRCode.BranchImageFormat.PNG)
	.setCenterLogo("https://cdn.branch.io/branch-assets/1598575682753-og_image.png");

// Create a Branch Universal Object
BranchUniversalObject buo = new BranchUniversalObject()
	.setCanonicalIdentifier("content/12345")
	.setTitle("My QR Code");

// Create a `LinkProperties` instance
LinkProperties lp = new LinkProperties()
	.setChannel("facebook")
	.setFeature("qrCode")
	.setCampaign("content 123 launch");

// Access your Branch QR Code
qrCode.getQRCodeAsData(this.getApplicationContext, buo, lp, new BranchQRCode.BranchQRCodeDataHandler() {
	@Override
	public void onSuccess(Bitmap qrCodeData) {
		// Do something with Branch QR Code
	}

	@Override
	public void onFailure(Exception e) {
		Log.d("Failed to get QR code", String.valueOf(e));
	}
});

getQRCodeAsImage

MethodDescription
public void getQRCodeAsImage(@NonNull Activity activity, @NonNull BranchUniversalObject branchUniversalObject, @NonNull LinkProperties linkProperties, @NonNull final BranchQRCodeImageHandler callback) throws IOExceptionGet your Branch QR Code as an image.
ArgumentTypeDescription
activityActivityThe relevant Activity.
branchUniversalObjectBranchUniversalObjectThe Branch Universal Object associated with the Branch QR Code.
linkPropertiesLinkPropertiesThe Link Properties instance associated with the Branch QR Code.
callbackBranchQRCodeImageHandlerCallback.

Example Usage

// Create a `BranchQRCode` object and set the optional properties
val qrCode = BranchQRCode()
	.setCodeColor("#a4c639")
	.setBackgroundColor(Color.WHITE)
	.setMargin(1)
	.setWidth(512)
	.setImageFormat(BranchQRCode.BranchImageFormat.JPEG)
	.setCenterLogo("https://cdn.branch.io/branch-assets/1598575682753-og_image.png")
  
// Create a Branch Universal Object
val buo = BranchUniversalObject()
	.setCanonicalIdentifier("content/12345")
	.setTitle("My Content Title")
	.setContentDescription("My Content Description")
	.setContentImageUrl("https://lorempixel.com/400/400")

// Create a `LinkProperties` instance
val lp = LinkProperties()
	.setChannel("facebook")
	.setFeature("sharing")
	.setCampaign("content 123 launch")
	.setStage("new user")
  
// Access your Branch QR Code
qrCode.getQRCodeAsImage(this@MainActivity, buo, lp, object : BranchQRCodeImageHandler<Any?> {
	override fun onSuccess(qrCodeImage: Bitmap) {
		// Do something with Branch QR Code here
	}

	override fun onFailure(e: Exception) {
		Log.d("Failed to get QR code", e.toString())
	}
})
// Create a `BranchQRCode` object and set the optional properties
BranchQRCode qrCode = new BranchQRCode() //All QR code settings are optional
	.setCodeColor("#a4c639")
  .setBackgroundColor(Color.WHITE)
 	.setMargin(1)
	.setWidth(512)
	.setImageFormat(BranchQRCode.BranchImageFormat.PNG)
	.setCenterLogo("https://cdn.branch.io/branch-assets/1598575682753-og_image.png");

// Create a Branch Universal Object
BranchUniversalObject buo = new BranchUniversalObject()
	.setCanonicalIdentifier("content/12345")
	.setTitle("My QR Code");

// Create a `LinkProperties` instance
LinkProperties lp = new LinkProperties()
	.setChannel("facebook")
	.setFeature("qrCode")
	.setCampaign("content 123 launch");

// Access your Branch QR Code
qrCode.getQRCodeAsImage(MainActivity.this, buo, lp, new BranchQRCode.BranchQRCodeImageHandler() {
	@Override
	public void onSuccess(Bitmap qrCodeImage) {
		// Do something with Branch QR Code
	}

	@Override
	public void onFailure(Exception e) {
		Log.d("Failed to get QR code", String.valueOf(e));
	}
});

setFBAppID

MethodDescription
public static void setFBAppID(String fbAppID)Set your app's Facebook App ID, which is used for fetching the Meta Install Referrer.
ArgumentTypeDescription
fbAppIDStringYour app's Facebook App ID.

Example Usage

        Branch.setFBAppID("123456789")
        Branch.setFBAppID("123456789");

useEUEndpoint

MethodDescription
public static void useEUEndpoint()Send requests to EU endpoints. This feature must also be enabled on the server side, otherwise the server will drop requests. Contact your account manager for details.

Example Usage

Branch.useEUEndpoint()
Branch.useEUEndpoint();

setConsumerProtectionAttributionLevel

MethodDescription
public void setConsumerProtectionAttributionLevel(Defines.BranchAttributionLevel level)Set the Consumer Protection Preference level.
public void setConsumerProtectionAttributionLevel(Defines.BranchAttributionLevel level, @Nullable TrackingStateCallback callback)Set the Consumer Protection Preference level, with an optional callback.
ArgumentTypeDescription
levelBranchAttributionLevelThe Consumer Protection Preference level to set for the user, based on the consent they have granted you.
callbackTrackingStateCallbackCallback.
Consumer Preference LevelDescriptionValue to Pass
Full AttributionThis is the default level. This level includes advertising IDs and device IDs, as well as other data.FULL
Privacy AttributionThis level does not include advertising IDs, but does include data from privacy frameworks like SKAN and Privacy Sandbox.REDUCED
Analytics OnlyThis level includes device IDs, but does not include data from privacy frameworks.MINIMAL
No AttributionThis level only includes deterministic deep linking. Appropriate for users that fall under GDPR or CCPA regulations.NONE

Example Usage

// Set consumer preference level to "Analytics Only"
Branch.getInstance().setConsumerProtectionAttributionLevel(Defines.BranchAttributionLevel.MINIMAL)
// Set consumer preference level to "No Attribution"
Branch.getInstance().setConsumerProtectionAttributionLevel(Defines.BranchAttributionLevel.NONE);

To learn more about setting Consumer Protection Preference levels, visit our guide.