li.biq:biqli-android.
Install
2.2. It requests only android.permission.INTERNET; it does not request Advertising ID, location, contacts, or storage permissions.
Configure
CallBiqli.configure once before resolving attribution, normally from Application.onCreate or the first activity:
The
appId and mobile key must come from the same registered Mobile App. Never embed a biqli_... secret workspace API key.
Declare the App Link
Add an intent filter for every attached hostname to the activity that receives the link:assetlinks.json package and SHA-256 certificate must match the installed build. A local debug key and Google Play App Signing key are different certificates.
Resolve with coroutines
singleTop activity to forward a new verified link:
Biqli.handleAppLink(intent) captures a verified HTTPS intent without resolving it. Biqli.attributionFlow(intent, consentGranted) emits the same single resolution through a Kotlin Flow.
Java callback API
Result model
BiqliAttributionResult contains:
MatchType values are EXACT_APP_LINK, EXACT_INSTALL_REFERRER, EXACT_HANDOFF, PROBABILISTIC, and NONE. Android normally returns the first, second, or NONE.
Install Referrer lifecycle
During the pending first-open window, the SDK contacts Google Play once, extracts only a valid opaquebiqli_token, and closes the connection. It never persists or transmits the complete referrer string. The extracted token, pending request, app-instance ID, and cached result use Android Keystore-backed encrypted preferences.
An empty referrer, unsupported service, permission error, developer error, or missing Play Store becomes a terminal clean no-match. A service disconnect or timeout remains retryable during the 24-hour first-open window.
Once first-open attribution reaches a terminal result, a cold launch without a new App Link returns the cached result without creating another resolver event. The cached result excludes attributionReceipt.
Retry and timeout behavior
- Connection timeout: 5 seconds.
- Read timeout: 5 seconds.
- Immediate attempts: at most three.
- Backoff between attempts: 400 ms, then 800 ms, plus 0–250 ms random jitter.
- Immediate retries: transport errors, HTTP
429, and HTTP5xx. - Later-launch recovery: the same pending event and idempotency key remain in encrypted storage.
Consent
WhenconsentRequired is true, call:
BiqliException.ConsentRequired before it reads Install Referrer or contacts Biqli.

