Skip to main content

Universal Links & Android App Links (platform-hosted)

Detour automatically hosts the required association files (/.well-known/apple-app-site-association and /.well-known/assetlinks.json) for every app you configure in the platform. That means when you create an App in the Detour dashboard and supply the required app identifiers (package name and signing fingerprint / Apple Team ID and Bundle ID), Detour will serve the correct apple-app-site-association and assetlinks.json on your organization subdomain (for example yourorg.godetour.dev).

This page explains:

  • the difference between deferred links and Universal/App Links,
  • what Detour auto-hosts for you,
  • what you must supply in the dashboard and in your app

  • Purpose: preserve click context when the user does not yet have your app installed.
  • Flow: user clicks https://your-org.godetour.link/your-app/campaign; Detour records a click and redirects to the store; after install the SDK asks Detour for the original link and — if matched — navigates the user into the app.
  • Trigger: works when the app is not installed at click time. Matching happens after install/first-open (deterministic via Play referrer on Android, or probabilistic fingerprinting otherwise).
  • Purpose: open your app directly when a user clicks a link and the app is already installed. They avoid the browser and deep-link straight into the app.
  • Flow: when the link is clicked, the OS checks the domain association files to verify the domain is associated with your app; if verified, it opens the app immediately (with the URL) instead of loading a web page.
  • Trigger: works only when the app is already installed and the domain is verified on the device.

Key point: Universal/App Links are about direct in-app opening when installed. Deferred links are about preserving link context through install flow.


What Detour hosts for you

When you configure an App in a Detour organization, the platform will serve:

  • https://<org-subdomain>.godetour.dev/.well-known/assetlinks.json (Android)
  • https://<org-subdomain>.godetour.dev/.well-known/apple-app-site-association (iOS)

Detour will generate file contents using values you provide (bundle id, team id, package name, SHA256 fingerprints). The files are served from the same subdomain used for your deferred links so automatic OS verification works.


What you must provide in the Detour dashboard

To let Detour generate correct association files, add this data to your App settings:

  • iOS

    • Bundle ID (e.g. com.example.myapp)
    • Apple Team ID (from Apple Developer account) — used to generate TEAMID.bundleId entries in the AASA appIDs array
  • Android

    • Package name (e.g. com.example.android)
    • SHA-256 signing certificate fingerprint(s) — use the release keystore fingerprint or Google Play Signing fingerprint if Play App Signing is enabled

What you need to update in your app

Detour after you complete platform configuration step will give you ready to use code snippets to update your app. Depending on whether you use Expo or bare React Native you will need to update different files.

iOS

Inside your app.json add associatedDomains key under ios config:

{
"expo": {
// ... other top-level expo keys ...
"ios": {
// ... other iOS-specific config ...
"associatedDomains": ["applinks:<your-org>.godetour.link"]
}
}
}

Android

Inside your app.json add intentFilters key under android config:

{
"expo": {
// ... other top-level expo keys ...
"android": {
"intentFilters": [
{
"action": "VIEW",
"autoVerify": true,
"data": [
{
"scheme": "https",
"host": "<your-org>.godetour.link"
}
],
"category": ["BROWSABLE", "DEFAULT"]
}
]
}
}
}

How verification works

After Detour hosts the files, devices perform automatic verification:

  • iOS will fetch the AASA file and verify appIDs and paths. Once verified, Universal Links for matching paths will open the app.
  • Android will fetch assetlinks.json and verify the package_name + sha256_cert_fingerprints. If verified, intent filters with autoVerify="true" will cause App Links to open the app.