Deep Links: The Complete Guide

Learn what deep links are, the main types, and how to implement them in production with SDDL for iOS & Android. SDDL automatically publishes apple-app-site-association and assetlinks.json from your app settings.

What are deep links?

Deep links are URLs that open a specific in-app destination (e.g., a product page) rather than the generic home screen. With SDDL you can create branded links, handle install flows (deferred deep links), and preserve context for routing.

Types of deep links

  • Universal Links (iOS): HTTPS links handled by your iOS app.
  • App Links (Android): HTTPS links verified to open your Android app.
  • Custom URL Schemes: e.g., myapp://product/123 (fallbacks required; use with care).
  • Deferred deep links: preserve context across install and route after first launch.

Benefits

  • Higher conversion and smoother onboarding.
  • Better attribution and campaign measurement.
  • Personalized routing and re-engagement.

iOS (Universal Links)

Enable Associated Domains and add:

applinks:{YOUR_ID}.sddl.me
applinks:{your.custom.domain}

You don’t host apple-app-site-association yourself — SDDL publishes it automatically from your settings.

SwiftUI (official SDDL iOS SDK)

import SwiftUI
import SDDLSDK

struct ContentView: View {
    var body: some View {
        Color.clear
            .onOpenURL { url in
                SDDLHelper.resolve(url, onSuccess: handlePayload(_:), onError: handleError(_:))
            }
            .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { activity in
                SDDLHelper.resolve(activity.webpageURL, onSuccess: handlePayload(_:), onError: handleError(_:))
            }
            .onAppear {
                SDDLHelper.resolve(nil, onSuccess: handlePayload(_:), onError: handleError(_:))
            }
    }
}

Android (App Links)

SDDL publishes assetlinks.json automatically from your package name and SHA256 fingerprints.

// settings.gradle.kts
pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
        maven("https://jitpack.io")
    }
}

// app/build.gradle.kts
dependencies {
    implementation("com.github.nonanerz:sddl-android-sdk:2.0.9")
}

Declare App Links in your manifest with android:autoVerify="true".

FAQ

Do I need to host AASA or assetlinks.json?

No. SDDL automatically publishes both files from your app settings.

Does this work with React Native/Flutter?

Yes. Use each platform’s linking APIs and call the SDDL resolve method on launch.

Related guides

Continue exploring