Three kinds of deep links
| Looks like | When the app isn’t installed | Needs | |
|---|---|---|---|
| Android App Links | https://example.com/p/42 | Opens the web page | assetlinks.json on the domain and an autoVerify intent filter |
| iOS Universal Links | https://example.com/p/42 | Opens the web page | apple-app-site-association on the domain and the Associated Domains entitlement |
| Custom URL scheme | myapp://product/42 | Error or nothing | An intent filter (Android) or CFBundleURLTypes (iOS) |
For links you share in emails, ads and social posts, use https links: they fall back to your website, and only your verified app can open them. Custom schemes are fine for links between your own apps.
How to test a deep link
- Paste the link, and your Android package name and iOS App ID if you have them.
- Run the adb or simctl command with a device or simulator connected.
- Scan the QR code and tap the links on the test page on a real phone. Tapping is what users do; typing a link into the address bar doesn’t open apps.
- For https links, check the Will it open the app? section: it reads the association files from the domain and tells you which rule matches the path.
Is my link stored?
No. The commands and QR code are made in your browser, and the phone test page reads the link from the part of the URL after #, which browsers don’t send to servers. For https links, the domain’s association files are fetched to check them.
Related tools
Validate and generate the association files with the App Links & Universal Links validator, and share one link that opens the right store with the smart app link & QR code tool.