1. Associated Domains entitlement
- In Xcode, select your app target and open Signing & Capabilities.
- Click + Capability and add Associated Domains.
- Add your DeepLink domain in this form:
applinks:your-subdomain.deeplink-domain.comReplaceyour-subdomain.deeplink-domain.comwith the host you use in the DeepLink dashboard (e.g. your app’s subdomain).
ios/Runner/Runner.entitlements (or your custom entitlements file):
2. Apple App Site Association (AASA)
The domain you use for your links (e.g.your-subdomain.deeplink-domain.com) must serve an Apple App Site Association file at:
https://your-subdomain.deeplink-domain.com/.well-known/apple-app-site-association
TEAM_ID and com.yourapp.bundleid with your Apple Team ID and bundle ID.
3. Initialize the SDK
In your Flutter app, call the DeepLink SDK init with your API base URL (see Quickstart). On iOS, the SDK typically matches the new install to the most recent click (e.g. by IP and time) and sends that attribution to the Track Install API, since iOS does not provide an install referrer like Android.4. Test on device
Universal Links often do not work in the simulator. Test on a real device:- Install the app from Xcode (or TestFlight).
- Open a DeepLink link in Safari (or Messages) — do not paste the link in the address bar; use a tap from another page or app.
- The app should open if the domain and AASA are correct.
Troubleshooting
- Link opens in Safari instead of the app — Confirm the entitlement domain matches the link host exactly (no
https://, no path). Ensure the AASA file is at/.well-known/apple-app-site-associationand returns the correctContent-Type(e.g.application/json). - Install not attributed — The backend matches by IP and recent click; ensure the Track Install (or SDK) call runs on first launch and that the user actually clicked a DeepLink link before installing.
Handling links
Handle incoming deep link URLs in your app.

