Why Mobile Deep Linking Matters

Mobile deep linking routes users directly to specific in-app content rather than a generic home screen. According to Branch.io data, apps using deep links see up to 66% higher engagement and 2× better retention compared to those relying on standard links.

Traditional URI schemes (myapp://) still exist, but they lack verification, offer no fallback, and can be hijacked. That’s why Apple introduced Universal Links (iOS 9+) and Google introduced App Links (Android 6+)—both use standard HTTPS URLs verified against your domain.

Step 1: Create the Apple App Site Association File

Host a JSON file at https://yourdomain.com/.well-known/apple-app-site-association (no .json extension, served with Content-Type: application/json):

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.com.example.myapp",
        "paths": ["/products/*", "/offers/*"]
      }
    ]
  }
}

Step 2: Enable Associated Domains in Xcode

In your project’s Signing & Capabilities tab, add the Associated Domains capability and enter:

applinks:yourdomain.com

Implement application(_:continue:restorationHandler:) in your AppDelegate or use onOpenURL in SwiftUI to parse the URL path and navigate accordingly.

Host a JSON file at https://yourdomain.com/.well-known/assetlinks.json:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.myapp",
    "sha256_cert_fingerprints": ["AA:BB:CC:..."]
  }
}]

You can generate the SHA-256 fingerprint with:

keytool -list -v -keystore my-release-key.keystore

Step 2: Add Intent Filters in AndroidManifest.xml

<intent-filter android:autoVerify="true">
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="https" android:host="yourdomain.com" android:pathPrefix="/products" />
</intent-filter>

The android:autoVerify="true" attribute triggers automatic verification at install time.

Step 3: Parse the Intent

In your Activity’s onCreate or onNewIntent, retrieve the URL via intent.data and route users to the correct screen.

Quick Comparison

FeatureiOS Universal LinksAndroid App Links
Verification fileapple-app-site-associationassetlinks.json
Minimum OSiOS 9Android 6.0
FallbackOpens URL in SafariOpens URL in browser
Disambiguation dialogNo (direct open)No (with autoVerify)

Best Practices

  • Always serve verification files over HTTPS with a valid certificate.
  • Test rigorously: use Apple’s swcutil or the App Links Assistant in Android Studio.
  • Keep paths specific—avoid matching /* on your entire domain unless every URL has in-app content.
  • Monitor broken links: a single server misconfiguration disables all deep links silently.

At Lueur Externe, our mobile and web architecture team regularly configures deep linking alongside server infrastructure (AWS, Nginx, Cloudflare) to ensure verification files are always accessible and correctly cached.

Conclusion

Implementing iOS Universal Links and Android App Links is no longer optional for apps that depend on web traffic. The setup is straightforward—two JSON files and a few lines of native code—but the server-side configuration and ongoing maintenance require precision.

If you want a seamless deep linking strategy backed by solid infrastructure expertise, Lueur Externe can help. From server configuration to app-side routing, our team ensures every link lands exactly where it should.

Get in touch with our mobile experts →