Deep linking
The Affise SDK exposes a single callback API — Affise.registerDeeplinkCallback — for both custom-scheme deeplinks and HTTPS AppLinks.
Affise.registerDeeplinkCallback(callback: OnDeeplinkCallback)(attribution/src/main/java/com/affise/attribution/Affise.kt:71-74)fun interface OnDeeplinkCallback { fun handleDeeplink(value: DeeplinkValue) }(attribution/src/main/java/com/affise/attribution/deeplink/OnDeeplinkCallback.kt:7-12)data class DeeplinkValue(deeplink: String, scheme: String?, host: String?, path: String?, parameters: Map<String, List<String>>)(attribution/src/main/java/com/affise/attribution/deeplink/DeeplinkValue.kt:5-11)
Deeplinks (custom scheme)
Section titled “Deeplinks (custom scheme)”Declare an intent filter with your custom scheme in AndroidManifest.xml, then register the callback during or after SDK initialization.
Affise.settings(affiseAppId, secretKey).start(context) // Start Affise SDK
Affise.registerDeeplinkCallback { value -> // full uri "scheme://host/path?parameters" val deeplink = value.deeplink
// separated for convenience val scheme = value.scheme val host = value.host val path = value.path val queryParametersMap = value.parameters
if(queryParametersMap["<your_uri_key>"].contains("<your_uri_key_value>")) { // handle value }}Affise.registerDeeplinkCallback(value -> { // full uri "scheme://host/path?parameters" String deeplink = value.getDeeplink();
// separated for convenience String scheme = value.getScheme(); String host = value.getHost(); String path = value.getPath(); Map<String, List<String>> queryParametersMap = value.getParameters();
if (queryParametersMap.get("your_uri_key").contains("your_uri_key_value")) { // handle value }});DeeplinkValue fields
Section titled “DeeplinkValue fields”| Field | Type |
|---|---|
| deeplink | String |
| scheme | String? |
| host | String? |
| path | String? |
| parameters | Map<String, List<String>> |
AppLinks
Section titled “AppLinks”The SDK uses the same Affise.registerDeeplinkCallback(...) API for HTTPS AppLinks. Unlike custom-scheme deeplinks, AppLinks require:
- an intent filter with
http/httpsscheme andandroid:autoVerify="true" - an
assetlinks.jsonserved athttps://yoursite/.well-known/assetlinks.json
Get deferred deeplink
Section titled “Get deferred deeplink”Requires the Status module.
Affise.getDeferredDeeplink(callback: OnReferrerCallback?)(Affise.kt:186-189)fun interface OnReferrerCallback { fun handleReferrer(value: String?) }(attribution/src/main/java/com/affise/attribution/referrer/OnReferrerCallback.kt:7-12)
Affise.getDeferredDeeplink { deferredDeeplink -> // handle deferred deeplink}Get deferred deeplink value
Section titled “Get deferred deeplink value”Affise.getDeferredDeeplinkValue(key: ReferrerKey, callback: OnReferrerCallback?) (Affise.kt:194-197). Requires the Status module. For the full list of ReferrerKey values see Referrer.
Affise.getDeferredDeeplinkValue(ReferrerKey.CLICK_ID) { deferredDeeplinkValue -> // handle deferred deeplink value}Testing via adb
Section titled “Testing via adb”You can trigger deeplinks from a terminal using adb:
adb shell am start -a android.intent.action.VIEW -d "scheme://host/path?key=value" <your.package.name>