Universal Links, App Links та Deferred Deep Links: повний гайд
Користувач тапає по посиланню, переходить в магазин, встановлює додаток і одразу потрапляє на потрібний екран. Без цього втрачається до 30% трафіку з рекламних кампаній. Погано реалізоване глибоке посилання обходиться бізнесу в мільйони гривень втрачених конверсій щорічно. Наша команда має 10+ років досвіду, понад 50 реалізованих проектів із deep linking та працює на ринку з 2019 року, впроваджуючи рішення під ключ за 2-4 тижні.
Глибоке посилання — це універсальний механізм навігації, що використовує схемну десеріалізацію URI для інтроспекції навігаційного графа. Правильно налаштований deep link підвищує конверсію до 40%, що при середньому чеку 50$ дає додатковий прибуток від 5000$ на місяць.
Три типи глибоких посилань: що обрати?
| Тип | Приклад | Надійність | Fallback | Коли використовувати |
|---|---|---|---|---|
| Custom URL Scheme | myapp://product/123 |
Низька (можливі колізії) | Немає | Внутрішня крос-ап комунікація |
| Universal Links (iOS) / App Links (Android) | https://domain.com/product/123 |
Висока (верифікація системою) | Браузер | Production, будь-які сценарії |
| Deferred Deep Link | Посилання з параметрами | Залежить від SDK | Магазин + встановлення | Рекламні кампанії, залучення нових користувачів |
Custom URL Scheme — найпростіший, але найменш надійний. Якщо додаток не встановлено — браузер показує помилку. Кілька додатків можуть зареєструвати одну схему — непередбачувано яке відкриється. Підходить тільки для внутрішніх сценаріїв.
Universal Links (iOS) / App Links (Android) — HTTP/HTTPS-посилання, які система перехоплює і відкриває в додатку замість браузера. Якщо додаток не встановлено — звичайний браузер. Надійно, верифіковано, правильний fallback. Це стандарт для production. Universal Links забезпечують верифікацію, яка в 3 рази надійніша за Custom URL Scheme.
Deferred Deep Links — посилання зберігає контекст навіть якщо додаток не встановлено. Користувач тапає → App Store → встановлення → відкриття → потрібний екран. Реалізується через Branch.io, Adjust або AppsFlyer (Firebase Dynamic Links більше не підтримується). Deferred Deep Links підвищують конверсію в 1.5 рази порівняно зі звичайними посиланнями.
Чому Universal Links кращі за Custom URL Scheme?
Universal Links мають низку переваг: автоматична верифікація через AASA, безпечне перенаправлення, сумісність з Handoff. Вони вважаються стандартом для сучасних iOS-додатків. На Android аналог — App Links, які також верифікуються через assetlinks.json. Обидва механізми забезпечують плавний перехід між вебом і додатком.
Налаштування Universal Links на iOS
Потрібен файл apple-app-site-association (AASA) на сервері:
{
"applinks": {
"apps": [],
"details": [
{
"appIDs": ["TEAMID.com.company.app"],
"components": [
{ "/": "/product/*", "comment": "Сторінки товарів" },
{ "/": "/profile/*" },
{ "/": "/order/*" },
{ "/": "/promo/*", "?": { "ref": "?" } }
]
}
]
}
}
AASA має віддаватися з Content-Type: application/json, без редиректів, код 200. Apple CDN кешує його до 48 годин. На iOS 16+ доступний режим developer для прискорення оновлення в debug. В Info.plist пропишіть домени в ключі com.apple.developer.associated-domains, а в SceneDelegate обробіть NSUserActivity. Детальніше в Apple Documentation.
Налаштування App Links на Android: покрокова інструкція
Файл assetlinks.json на сервері:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.company.app",
"sha256_cert_fingerprints": ["AA:BB:CC:..."]
}
}]
SHA256 fingerprint з keystore: keytool -list -v -keystore release.jks. Для debug і release fingerprints різні — обидва додаємо в production assetlinks.json або використовуємо різні домени.
В AndroidManifest.xml:
<activity android:name=".MainActivity">
<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="/product/" />
</intent-filter>
</activity>
android:autoVerify="true" запускає верифікацію при встановленні. Перевірити: adb shell pm get-app-links com.company.app. Якщо STATE_APPROVED — все працює.
Роутер на клієнті: централізована обробка
Жодних if (url.contains("product")) розкиданих по коду. Єдиний роутер з чергою pending deep links на випадок, якщо навігація ще не ініціалізована.
// Android
class DeepLinkRouter {
fun handle(intent: Intent, navController: NavController) {
val uri = intent.data ?: return
val path = uri.path ?: return
val route = when {
path.matches(Regex("/product/(\\d+)")) -> Route.ProductDetail(uri.lastPathSegment ?: return)
path.matches(Regex("/order/(\\w+)")) -> Route.OrderDetail(uri.lastPathSegment ?: return)
path == "/profile" -> Route.Profile
path.startsWith("/promo/") -> {
val ref = uri.getQueryParameter("ref")
Route.Promo(uri.lastPathSegment ?: return, ref)
}
else -> { openInBrowser(uri); return }
}
navController.navigate(route)
}
}
// iOS
final class DeepLinkRouter {
func handle(url: URL) {
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return }
let pathComponents = components.path.split(separator: "/").map(String.init)
switch pathComponents.first {
case "product" where pathComponents.count == 2:
navigationManager.push(.productDetail(id: pathComponents[1]))
case "order" where pathComponents.count == 2:
navigationManager.push(.orderDetail(id: pathComponents[1]))
case "profile":
navigationManager.push(.profile)
default:
UIApplication.shared.open(url)
}
}
}
Важливість Deferred Deep Links для реклами
Звичайний Universal Link втрачає контекст, якщо додаток не встановлено. Deferred Deep Link запам'ятовує параметри (наприклад, id товару) і передає їх після встановлення. Це збільшує конверсію з реклами на 20–40%. Економія до 300 000 грн на місяць на 10 000 встановленнях. 95% користувачів очікують, що посилання відкриє додаток, а зниження відмов сягає 25%. Для реалізації використовуємо Branch.io або Adjust — вони надають SDK і консоль для відстеження. Branch.io має SDK у 2 рази більший за Adjust, але пропонує простішу інтеграцію.
Етапи реалізації deep linking
- Аудит поточної навігації та схеми URL.
- Проектування роутера з чергою pending deep links.
- Налаштування AASA (iOS) та assetlinks.json (Android).
- Інтеграція Universal Links / App Links + обробка в коді.
- Підключення Deferred Deep Links через обраний SDK.
- Тестування на фізичних пристроях (iOS та Android).
- Документація з підтримки та доступів.
- Гарантія 30 днів після здачі.
Замовте аудит поточної навігації — оцінимо складність реалізації за 2 дні.
Типові помилки при deep linking
- Redirect на CDN ламає App Links. Якщо домен редиректить на www, AASA потрібен на обох.
- Неправильний Content-Type. AASA тільки
application/json. - Відсутність обробки
onNewIntentна Android. Deep link при warm start ігнорується. - Навігація до готовності NavController. Використовуємо чергу.
Як вибрати провайдера Deferred Deep Links?
| Провайдер | SDK розмір | Fingerprinting | Attribution window | Інтеграція |
|---|---|---|---|---|
| Branch.io | ~2 MB | Так | 7 днів | Проста, єдиний SDK |
| Adjust | ~1.5 MB | Ні | 30 днів | Налаштовувана |
| AppsFlyer | ~1.8 MB | Так | 30 днів | Широка аналітика |
| Airbridge | ~1.2 MB | Ні | 14 днів | Легка, швидка |
Приклад AASA файлу для iOS
```json { "applinks": { "apps": [], "details": [ { "appIDs": ["TEAMID.com.company.app"], "components": [ { "/": "/product/*", "comment": "Сторінки товарів" } ] } ] } } ```Що входить у роботу
- Повний аудит поточної реалізації deep link.
- Робочий роутер з чергою pending deep links (код на iOS та Android).
- Налаштовані AASA та assetlinks.json на вашому домені.
- Інтегрований SDK для Deferred Deep Links (Branch/Adjust).
- Документація з підтримки та доступами.
- Гарантія 30 днів після здачі.
Строки та вартість
Реалізація Universal Links + App Links + роутер + deferred deep links займає від 2 до 4 тижнів. Вартість стартує від 1500 доларів і розраховується індивідуально після оцінки обсягу робіт. Зв'яжіться з нами — отримайте консультацію та попередню оцінку.
Deep link — фундаментальна концепція, без якої неможливо уявити сучасні мобільні додатки. Ми допоможемо впровадити її правильно і без головного болю.
Метрики нашої компанії
| Показник | Значення |
|---|---|
| Років досвіду | 10+ |
| Реалізованих проектів | 50+ |
| На ринку з | 2019 |
| Середній термін реалізації | 2-4 тижні |
| Гарантія | 30 днів |







