Deep Link: що це, типи посилань та принцип роботи

Автор: IT Sectr Опубліковано: 2026-05-14 Час читання: 9 хв

Deep Link (глибоке посилання) — це URL, який направляє користувача на конкретний екран або контент всередині мобільного додатка, минаючи головний екран. На відміну від звичайного посилання на сайт, deep link активує додаток і одразу відкриває цільовий контент. За даними Android Developers, правильно налаштовані deep link збільшують конверсію в цільову дію на 30–50% за рахунок скорочення кількості кроків до контенту.

Головне

  • Deep Link — URL, що відкриває конкретний екран додатка, а не головну сторінку
  • URI-схема (myapp://profile/123) — класичний спосіб deep link, працює на обох платформах
  • Deferred Deep Link — посилання, яке спрацьовує після встановлення додатка, передаючи контекст
  • Universal Link (iOS) та App Link (Android) — еволюція deep link з верифікацією домену
  • Контекстний deep link — передає додаткові параметри: промокод, referrer, джерело трафіку

Deep Link (глибоке посилання) — це URI, який при переході відкриває не веб-сторінку, а конкретний екран всередині мобільного додатка. Технологія вирішує фундаментальну проблему мобільних платформ: браузер не може безпосередньо відкрити екран додатка, а deep link створює міст між вебом та нативним кодом. Без deep link користувач завжди потрапляє на головний екран і змушений вручну навігувати до потрібного контенту.

Архітектура deep link складається з двох частин: схема (scheme) визначає, який додаток має обробити посилання, а шлях (path) вказує на конкретний ресурс всередині додатка — товар, статтю, профіль користувача або розділ налаштувань. Параметри запиту (?source=push&campaign=summer) передають додатковий контекст для аналітики, персоналізації та атрибуції кампаній.

Важливо розрізняти deep link та звичайне посилання. Звичайне посилання (https://example.com/product/42) відкривається в браузері та веде на веб-версію сторінки. Deep link (myapp://product/42) за наявності встановленого додатка відкриває саме нативний екран з тим самим контентом, а якщо додаток відсутній — показує помилку. Саме для вирішення проблеми безшовного fallback були створені Universal Link (iOS) та App Link (Android).

Різні завдання потребують різних типів deep link. Деякі посилання працюють тільки з встановленим додатком, інші вміють чекати встановлення, треті передають аналітичний контекст. Вибір типу залежить від сценарію використання: рекламна кампанія, push-повідомлення, шеринг контенту або email-розсилка.

Звичайний Deep Link (Standard Deep Link)

Standard Deep Link — базовий тип, який спрацьовує, тільки якщо додаток уже встановлено на пристрої. Користувач натискає на посилання myapp://product/42, система визначає зареєстровану схему та відкриває додаток на потрібному екрані. Якщо додаток не встановлено — браузер показує помилку «Сторінку не знайдено» або просто нічого не робить. Цей тип підходить для внутрішньої навігації всередині вже встановленого додатка.

Налаштування стандартного deep link просте: достатньо зареєструвати URI-схему в маніфесті (Android) або Info.plist (iOS). Не потрібно серверної валідації або SSL-сертифікатів. Але саме через відсутність fallback цей тип вважається застарілим для маркетингових кампаній — втрата трафіку від користувачів без додатка становить до 60%.

Deferred Deep Link (відкладене глибоке посилання)

Deferred Deep Link вирішує головну проблему звичайних deep link: він працює навіть якщо додаток не встановлено. Користувач переходить за посиланням → бачить сторінку (landing або App Store/Google Play) → встановлює додаток → при першому запуску додаток отримує контекст оригінального посилання та відкриває потрібний екран. Технологія потребує SDK посередника (AppsFlyer, Branch, Adjust), який зберігає контекст на сервері до моменту першого запуску.

Branch — одна з найпопулярніших платформ для deferred deep link. Вона надає єдине посилання, яке працює на всіх платформах: визначає ОС користувача, перенаправляє в магазин додатків, а після встановлення передає контекст (промокод, ідентифікатор товару, джерело кампанії). За даними Branch (2024), deferred deep link підвищують конверсію рекламних кампаній на 40–70%.

Contextual Deep Link (контекстне глибоке посилання)

Contextual Deep Link — це звичайний або deferred deep link, доповнений параметрами контексту: джерело трафіку, кампанія, промокод, referrer, ідентифікатор партнера. Параметри передаються в URL та обробляються додатком для персоналізації: показати вітальний бонус, відкрити товар зі знижкою, записати аналітику встановлення.

UTM-мітки (utm_source, utm_medium, utm_campaign) — стандартний спосіб передачі контексту. У mobile контекстні deep link критичні для атрибуції: без них власник додатка не знає, який канал привів користувача — органічний трафік, реклама Facebook, email-розсилка або QR-код. Якісна атрибуція потребує інтеграції з MMP (Mobile Measurement Partner).

Тип Deep LinkВимагає встановленняОчікування встановленняКонтекст
StandardТакНіТільки в URL
DeferredНіТакСерверне зберігання
ContextualБудь-якийБудь-якийUTM + параметри

iOS підтримує deep link через два механізми: старий Custom URL Scheme та сучасний Universal Link (iOS 9+). Custom URL Scheme працює за принципом реєстрації кастомної схеми в Info.plist. Додаток реєструє myapp://, і iOS при переході за таким посиланням відкриває додаток. Проблема: якщо схема не зареєстрована жодним додатком, браузер показує помилку.

Обробка deep link на iOS відбувається через метод AppDelegate application(_:open:options:) або SceneDelegate scene(_:openURLContexts:). Розробник витягує URL, парсить шлях та параметри, потім навігує на відповідний екран. Якщо використовується SwiftUI, обробка виконується через OpenURLAction або onChange(of: openURL). Важливо коректно обробляти стан: додаток може бути не запущено, згорнуто або активно.

Security на iOS сувора: Custom URL Scheme може перехопити будь-який додаток, зареєструвавши ту саму схему. Це потенційна вразливість (URL Scheme hijacking). Тому Apple рекомендує Universal Link як більш безпечну альтернативу: тільки підтверджений власник домену може асоціювати посилання з додатком. Докладніше про Universal Link — у статті Universal Link.

Android реалізує deep link через Intent Filter в AndroidManifest.xml. Додаток визначає Activity, яка обробляє певну схему (myapp://) або конкретні хости та шляхи. Коли користувач натискає на deep link, Android шукає Activity з відповідним Intent Filter та відкриває її. Якщо відповідних Activity декілька — система показує діалог вибору додатка.

xml
// AndroidManifest.xml — Intent Filter для Deep Link
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="myapp"
            android:host="product"
            android:pathPrefix="/" />
    </intent-filter>
</activity>

Обробка deep link в Android виконується в методі Activity.onCreate() або onNewIntent(). Розробник отримує Intent, витягує URI та викликає навігацію. Для Jetpack Navigation компонент Navigation Deep Link дозволяє декларативно описати deep link в графі навігації. Android App Link (Android 6.0+) — еволюція deep link з верифікацією через Digital Asset Links, що усуває діалог вибору додатка.

Важливо враховувати Android 12+ зміни: починаючи з API 31, система вимагає явного зазначення exported=true для Activity, що обробляють deep link, та перевіряє коректність Intent Filter. Google Play Store перевіряє верифікацію App Link при публікації. Без верифікації Google може відхилити оновлення, якщо deep link ведуть на неіснуючі сторінки сайту.

Налаштування deep link включає кілька етапів, спільних для обох платформ. Перший крок — визначити схему та структуру URL. Рекомендується використовувати https-схему (замість кастомної) для сумісності з Universal Link та App Link. Структура URL має повторювати структуру веб-сайту: /product/42, /profile/john, /settings/notifications. Це спрощує підтримку та індексацію контенту пошуковими системами.

Другий етап — обробка deep link в коді додатка. Для Android рекомендується Jetpack Navigation з декларативними deep link в nav_graph. Для iOS — SwiftUI NavigationStack з обробкою OpenURLAction. Важливо обробляти три стани додатка: cold start (додаток не запущено), warm start (згорнуто) та active (на екрані). Кожен стан потребує різної логіки навігації.

  • Визначити схему та структуру URL (myapp:// або https://your.domain/)
  • Зареєструвати схему в маніфесті (Android) або Info.plist (iOS)
  • Реалізувати обробку в Activity або AppDelegate/SwiftUI
  • Налаштувати fallback для випадку, якщо додаток не встановлено
  • Протестувати всі три стани: cold start, warm start, active

Тестування deep link — окреме завдання. Android Studio надає інструмент App Links Assistant для перевірки Intent Filter. На iOS тестування виконується через Xcode з передачею URL через аргументи схеми запуску. Рекомендується налаштувати CI-перевірку: автоматичний перехід за deep link та перевірка, що відкрився очікуваний екран. Для deferred deep link тестування включає повний цикл «встановлення → перший запуск → контекст». Без тестування deep link часто ламаються при оновленні навігації в додатку.

Часті запитання

Чим deep link відрізняється від звичайного посилання?

Звичайне посилання (https://site.com/page) відкривається в браузері. Deep link (myapp://page або https://site.com/page з верифікацією) відкриває екран всередині мобільного додатка. Deep link може також передавати контекст: промокод, джерело трафіку, ідентифікатор реферала.

Що таке URI-схема та для чого вона потрібна?

URI-схема — це префікс URL, який визначає, який додаток має обробити посилання (наприклад, myapp://, vk://, tg://). Система використовує схему для маршрутизації: знаходить додаток, що зареєстрував цю схему, і передає йому URL для обробки.

Як працює deferred deep link?

Користувач переходить за посиланням → сервіс (Branch, AppsFlyer) запам'ятовує контекст → перенаправляє в App Store/Google Play → після встановлення та першого запуску SDK передає збережений контекст додатку → додаток відкриває потрібний екран, як якщо б користувач уже мав додаток.

Чи можна використовувати deep link без встановленого додатка?

Звичайний deep link — ні. Deferred deep link — так, за рахунок проміжної сторінки, яка перенаправляє в магазин додатків та зберігає контекст. Universal Link та App Link відкривають сайт як fallback, якщо додаток не встановлено.

Як тестувати deep link на реальних пристроях?

На Android використовуйте adb: adb shell am start -W -a android.intent.action.VIEW -d «myapp://product/42». На iOS — xcrun simctl openurl booted «myapp://product/42». Для обох платформ доступні тестові консолі Firebase Dynamic Links та Branch.

Підсумки

  • Deep Link — URL, що відкриває конкретний екран додатка, а не головну сторінку або сайт
  • Три типи — Standard (тільки при встановленому додатку), Deferred (з очікуванням встановлення), Contextual (з UTM-параметрами)
  • Custom URL Scheme (myapp://) — простий спосіб, але без fallback при відсутності додатка
  • Universal Link та App Link — еволюція deep link з верифікацією домену та браузерним fallback
  • iOS обробляє deep link через AppDelegate/SceneDelegate, Android — через Intent Filter
  • Deferred Deep Link потребує SDK посередника (Branch, AppsFlyer) для зберігання контексту до встановлення
  • Тестування всіх трьох станів (cold, warm, active) — обов'язковий етап налаштування deep link

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також