Skip to main content
To open your app from DeepLink links on iOS and attribute installs, you need Associated Domains and optional Universal Links configuration.

1. Associated Domains entitlement

  1. In Xcode, select your app target and open Signing & Capabilities.
  2. Click + Capability and add Associated Domains.
  3. Add your DeepLink domain in this form:
    • applinks:your-subdomain.deeplink-domain.com Replace your-subdomain.deeplink-domain.com with the host you use in the DeepLink dashboard (e.g. your app’s subdomain).
In the project, this is stored in ios/Runner/Runner.entitlements (or your custom entitlements file):
<key>com.apple.developer.associated-domains</key>
<array>
  <string>applinks:your-subdomain.deeplink-domain.com</string>
</array>

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
This file tells iOS that your app can handle links for that domain. DeepLink may host this for you for your configured subdomain; otherwise you need to host it on your own domain. Example structure (exact format depends on your backend):
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAM_ID.com.yourapp.bundleid",
        "paths": ["*"]
      }
    ]
  }
}
Replace 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:
  1. Install the app from Xcode (or TestFlight).
  2. 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.
  3. 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-association and returns the correct Content-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.