iOS Guide
iOS Universal Links Setup
To set up iOS Universal Links with DEPL, connect your iOS app in the DEPL dashboard with Team ID, Bundle ID, and App Store ID, then add applinks:yourapp.depl.link to Associated Domains in Xcode.
Register Team ID and Bundle ID in DEPL.
Add Associated Domains in Xcode.
Use applinks:yourapp.depl.link as the domain entitlement.
Handle NSUserActivityTypeBrowsingWeb in the app.
Extract the slug and fetch app_params from DEPL.
Required iOS values
DEPL needs your Apple Team ID and Bundle ID to generate the apple-app-site-association response for your subdomain. App Store ID is used for fallback behavior when the app is not installed.
Xcode configuration
Open Signing & Capabilities, add Associated Domains, and include the DEPL domain for your workspace. The value should use the applinks prefix.
applinks:yourapp.depl.linkHandle the incoming Universal Link
If the app is installed and verified, iOS opens the app directly. Your app should read the URL path, extract the slug, and request link data from DEPL.
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL else {
return false
}
let slug = url.lastPathComponent
fetchDeepLink(slug: slug)
return true
}iOS fallback behavior
If the app is not installed, the DEPL web handler can route users to the App Store when an App Store ID is configured. Social crawlers receive metadata instead of being redirected.
Frequently Asked Questions
What is apple-app-site-association?
It is the Apple verification file that proves a domain is allowed to open a specific iOS app through Universal Links.
Where do I find my Team ID?
Your Apple Team ID is available in the Apple Developer account under Membership details.
Why is my Universal Link opening Safari?
Common causes are missing Associated Domains, incorrect Team ID or Bundle ID, a stale Apple cache, or an app build that was not signed with the correct entitlement.