This section will cover best practices around testing and troubleshooting your deep links.
Table of contents
Testing deep links
If the email deep link is clicked but it does not take you directly into the app (and instead you are directed to a mobile-web browser), please:
Ensure the AASA file is properly formatted. This Branch tool should help.
Ensure the AASA file is available at the end of your domain under: https://yourdomain/apple-app-site-association.
Ensure Your file is served over HTTPS (not HTTP).
Ensure the mobile app is configure to deep link in Xcode Capabilities.
Re-download your provisioning profiles in Xcode.
If the email deep link opens the app directly but not to the content you expected, please:
- Review your URL handing methods.
- Review your deep links schema
Troubleshooting deep links
Below is an end-to-end schematic for Troubleshooting Deep Linking
Mail Domain is not verified
Make sure you have secure protocol set up to comply with HSTS. Make sure you have added following while creating SSL certificate:
- Origin SSL Protocols: check only TLS1.2
- Origin Protocol Policy: HTTPS Only
Also Make sure you have added CNAME and A record to your domain's DNS Settings.
Links are not rewritten
HTTPS is required for deep linking. Make sure you have enabled HTTPS in Project Settings > Main Domain > Tracking Domain.
Links are rewritten as /u instead of /a
Enable Deep Link Rewriting in the Mobile Deep Linking section of project settings.
Universal links are not launching app
Make sure your app has associated domain set to launch the app.
For iOS, add an associated whitelabel domain in Xcode, under Capabilities > Associated Domain.
By default, iOS apps can open HTTPS URLs, but not HTTP. Because of this, you should use HTTPS whenever possible. However, it is possible to configure your iOS apps to work with HTTP URLs by configuring App Transport Security exceptions in Xcode.
For Android, add
<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:host="links.iterable.com" android:pathPrefix="/a/" android:scheme="http"/> <data android:host="links.iterable.com" android:pathPrefix="/a/" android:scheme="https"/> <data android:host="demo-app.iterable.com" android:pathPrefix="/" android:scheme="https"/> </intent-filter>