6.7 · Info.plist, URL schemes, universal links and associated domains
Much of what the system knows about your app is written down in a property list and a file on your web server. Getting those two documents right is most of what deep linking is.
Mental model. The system trusts two things that must agree: your app’s declaration (Info.plist and entitlements) and your website’s declaration (the association file). Links only open your app when both say so.
Declaring the app
What Info.plist controls.
- What is Info.plist for, and which keys matter most?
Info.plist is the app’s declaration to the system, read before your code runs. It identifies the app (CFBundleIdentifier, CFBundleShortVersionString…
Opening the app from a link
Custom schemes, universal links and the association file.
- What is the difference between a custom URL scheme and a universal link, and which do you use?
A custom URL scheme (myapp://item/42), declared in CFBundleURLTypes, is simple but weak: any app can claim the same scheme (the system picks one, not… - What does the apple-app-site-association file contain, and how does the system verify a domain?
You host a JSON file, the apple-app-site-association (AASA), at https://example.com/.well-known/apple-app-site-association, served over HTTPS with no…
More in iOS platform internals
- 6.1 · The process, the sandbox, entitlements and privacy prompts
- 6.2 · App and scene lifecycle in UIKit and SwiftUI
- 6.3 · The run loop, its modes, and the main-thread contract
- 6.4 · The launch path: dyld, initialisers and the first frame
- 6.5 · Background modes, BGTaskScheduler and background transfers
- 6.6 · Memory warnings, jetsam and the watchdog
- 6.8 · App groups, keychain groups and extensions as separate processes
- 6.9 · How a process dies, what it costs, what confines it and what seals it
- 6.10 · Threads and run loops, observers, and what actually runs in a custom mode
- 6.11 · Launch arguments, the scene callbacks, and reading a binary and its plists