Build iOS Universal Links and Android App Links
Deep links allow you to take users directly to specific content within your mobile app from external sources like websites, emails, or other apps.
The simplest form of deep linking, using a custom protocol:
myapp://path/to/contentApple's solution for seamless web-to-app deep linking:
https://example.com/pathGoogle's verified deep link solution:
https://example.com/path{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.bundle.id",
"paths": [
"/products/*",
"/user/*/profile",
"NOT /admin/*"
]
}
]
},
"webcredentials": {
"apps": ["TEAMID.bundle.id"]
}
}
/path: Exact match/path/*: Wildcard matchNOT /path: Exclude path?*: Match query strings# Debug keystore keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android # Release keystore keytool -list -v -keystore my-release-key.keystore
# Check verification status adb shell dumpsys package domain-preferred-apps # Test statement list https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://example.com
/product/123 not /p/123# Test AASA file curl -v https://example.com/.well-known/apple-app-site-association # Validate AASA https://search.developer.apple.com/appsearch-validation-tool/ # Check device logs Console.app → filter for "swcd"
# Test assetlinks.json curl https://example.com/.well-known/assetlinks.json # Verify App Links adb shell pm verify-app-links --re-verify com.example.app # Check logs adb logcat | grep -i "IntentFilter"
Take users to specific content even on first app install:
Pass additional context with deep links:
| Feature | Custom | Universal/App |
|---|---|---|
| Setup | Easy | Complex |
| Security | Low | High |
| Fallback | No | Yes |
| Prompts | Yes | No |