Troubleshooting Android Deep Links
App Links show a disambiguation dialog
Section titled “App Links show a disambiguation dialog”If Android shows a “Open with…” dialog instead of opening your app directly, verification has failed.
Check the assetlinks.json file
Section titled “Check the assetlinks.json file”Visit https://your-domain/.well-known/assetlinks.json in a browser. Verify:
- The file loads without redirects.
- The
package_namematches your app’s package name exactly. - The
sha256_cert_fingerprintsarray includes the correct fingerprint. Content-Typeisapplication/json.
Use Google’s Digital Asset Links Tester to validate.
Check the SHA-256 fingerprint
Section titled “Check the SHA-256 fingerprint”The most common cause of verification failure is a fingerprint mismatch.
If using Google Play App Signing:
- Go to Google Play Console > Setup > App signing.
- Copy the SHA-256 certificate fingerprint under “App signing key certificate”.
- This is the key Google uses to sign your APK. It is different from your upload key.
If signing locally:
keytool -list -v -keystore your-release-key.jks -alias your-aliasCopy the SHA256: line.
Paste the fingerprint into Appspace Settings > Android > SHA-256 Certificate Fingerprint(s).
Check the intent filter
Section titled “Check the intent filter”In your AndroidManifest.xml:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="your-domain.com" /></intent-filter>Common mistakes:
- Missing
android:autoVerify="true". - Wrong host (typo, missing subdomain).
- Missing
DEFAULTorBROWSABLEcategory.
Re-verify App Links
Section titled “Re-verify App Links”After fixing the issue, force re-verification:
adb shell pm verify-app-links --re-verify com.example.myappCheck the result:
adb shell pm get-app-links com.example.myappLook for your domain with status verified.
Links not opening the app at all
Section titled “Links not opening the app at all”App not installed
Section titled “App not installed”If the app is not installed, links open in the browser. This is expected behavior. The user sees your landing page.
Wrong Activity
Section titled “Wrong Activity”Ensure the intent filter is on the Activity that should handle deep links, and that the Activity has android:exported="true".
Intent data not received
Section titled “Intent data not received”In your Activity, read the deep link from the Intent:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val uri = intent.data // This is the deep link URL}Also handle onNewIntent for when the Activity is already running:
override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) val uri = intent.data}Deferred deep linking not working
Section titled “Deferred deep linking not working”Token-based claiming
Section titled “Token-based claiming”- The referrer string contains a
tolk_tokenparameter. Make sure you are parsing fortolk_token(nottoken,ul_token, or other names). - Log the raw referrer string from the Install Referrer API to verify the token is present and correctly formatted (e.g.
tolk_token=abc123). - Ensure the extracted token is being passed to
Tolinku.deferred.claimByToken(token). - The referrer token is only available via the Install Referrer API. If you are not using the Play Store for distribution (e.g. sideloading), token-based matching will not work. Use signal-based claiming as a fallback.
- Some devices or Play Store versions may not support the Install Referrer API.
Signal-based claiming
Section titled “Signal-based claiming”- Pass a valid
ContexttoclaimBySignalsso the SDK can collect screen dimensions. - VPNs or IP changes between click and install reduce matching accuracy.
- Call
claimBySignalson the very first app open, before navigating the user.
Multiple fingerprints
Section titled “Multiple fingerprints”You can add multiple SHA-256 fingerprints in Appspace Settings (comma-separated). This is useful for:
- Debug and release certificates during development.
- Google Play App Signing key plus your upload key.
- Multiple signing configurations (e.g. different build variants).
Testing checklist
Section titled “Testing checklist”assetlinks.jsonaccessible at/.well-known/assetlinks.json(no redirects).- Package name and SHA-256 fingerprint set in Appspace Settings.
- Intent filter with
autoVerify="true"in AndroidManifest.xml. - Activity has
android:exported="true". - App installed on device (run
adb shell pm get-app-linksto check status). - Re-verified with
adb shell pm verify-app-links --re-verify. - SDK initialized with
Tolinku.configure(apiKey = ..., context = ...)inApplication.onCreate().