Universal Links Troubleshooting
Find out why links aren’t opening your app
Start with the association file on your public domain, then compare its app details with the installed app. These checks cover both iOS Universal Links and Android App Links.
Quick checks
- The link domain is the same domain configured in Lativiq and in the mobile app.
- Both association-file URLs are tested with HTTPS and the exact
/.well-knownpath. - The JSON contains the app ID or package name and signing certificate used by the installed app.
Public file and domain
Check the exact URLs your platform fetches
Replace the example host with the domain users actually tap. These commands show the HTTP status and headers as well as the response body:
curl -i https://go.yourcompany.com/.well-known/apple-app-site-association
curl -i https://go.yourcompany.com/.well-known/assetlinks.json
For the platform you’re setting up, confirm the response is 200 and contains valid JSON for the expected app. The iOS URL has no file extension. Both files must be served directly over HTTPS without a redirect.
Common status clues: 404 usually means the path or host is not routed to the file; 403 on dynamic hosting may indicate the plan doesn’t include managed hosting; a redirect or non-JSON response means the public endpoint needs attention.
Configuration values
Compare the app identifiers exactly
iOS
- The AASA App ID must be
TeamID.BundleID. - The Team ID and Bundle ID must match the signed app.
- The file’s allowed URL patterns must include the link path.
Android
- The package name must match the app’s application ID.
- The SHA-256 fingerprint must match the certificate signing the installed app.
- With Play App Signing, use the app signing certificate—not only the upload key.
App-side setup
Check that the installed app claims the domain
- iOS: The app has the Associated Domains capability and an
applinks:go.yourcompany.comentitlement, signed into the build installed on the device. - Android: The app has an HTTPS intent filter with
android:autoVerify="true"; its host matches the domain inassetlinks.json.
After changing signing, entitlements, manifest entries, or hosted files, install the updated app build and repeat verification.
Platform verification
Verify on a device and test a real link
Run Verify Domain in the Lativiq configuration to check the hosted setup. On Android, inspect the device’s app-link state with:
adb shell pm get-app-links com.yourcompany.app
Then tap a matching HTTPS link from another app, such as a message. Test on a device with the app installed; entering the URL directly in a browser may not trigger app handoff.