Deferred Deep Link — це механізм, який зберігає цільовий контекст переходу, навіть якщо додаток ще не встановлено на пристрої користувача. За даними Branch Resources, після встановлення додатка система автоматично обробляє збережений контекст і перенаправляє користувача на цільовий екран. Deferred Deep Link вирішує головну проблему звичайного deep link — неможливість роботи з невстановленими додатками.
Головне
Deferred Deep Link — це різновид глибокого посилання, яке працює в два етапи: спочатку користувач переходить за посиланням до встановлення додатка, а потім система відновлює контекст після завершення встановлення. Звичайний deep link відкриває додаток лише якщо він уже встановлений, а deferred зберігає всі параметри переходу та передає їх при першому запуску.
Технологія стала особливо затребуваною з ростом мобільного маркетингу, де рекламні кампанії часто націлені на користувачів, які ще не встановили додаток. Без deferred deep link кожен такий перехід закінчувався б просто завантаженням додатка без жодного контексту — користувач потрапляв на головний екран замість цільового.
Звичайний deep link відкриває цільовий контент у вже встановленому додатку. Якщо додаток не встановлено, браузер відображає помилку. Deferred Deep Link працює через проміжний сервер, який перенаправляє користувача в магазин, а після встановлення повідомляє додаток про збережені параметри. Таким чином, deferred посилання не вимагає попереднього встановлення додатка та забезпечує наскрізний шлях користувача від реклами до контенту.
Процес обробки deferred deep link складається з трьох етапів. На першому етапі користувач переходить за посиланням — сервер визначає, чи встановлено додаток. Якщо ні, він генерує унікальний ідентифікатор сесії, зберігає параметри переходу та перенаправляє користувача в App Store або Google Play з цим ідентифікатором.
На другому етапі користувач встановлює додаток з магазину. Після встановлення та першого запуску SDK платформи зв’язується з сервером, передає ідентифікатор пристрою та отримує збережені параметри переходу. На третьому етапі додаток обробляє отримані дані та автоматично перенаправляє користувача на цільовий екран.
Для збереження параметрів між переходом за посиланням та встановленням використовуються різні механізми. На iOS це зв’язка ключів iCloud (iCloud Keychain) або буфер обміну, на Android — Install Referrer API. Firebase Dynamic Links використовує комбінацію localStorage браузера та реферального посилання магазину для передачі ідентифікатора сесії. Branch.io застосовує власний протокол з резервуванням даних у кількох сховищах.
В iOS deferred deep link реалізується через комбінацію Universal Links та Shared Web Credentials. Коли користувач переходить за Universal Link на сайті додатка, браузер Safari зберігає параметри переходу в iCloud Keychain, пов’язаному з доменом додатка. Після встановлення додатка з App Store iOS перевіряє наявність збережених даних і передає їх додатку при першому запуску.
Apple не надає вбудованого API для deferred deep link — реалізація повністю лягає на сторонні SDK. Firebase Dynamic Links використовує механізм passive deferred, при якому дані зберігаються в cookie браузера та відновлюються через редирект на спеціальний URL при першому запуску додатка.
Починаючи з iOS 14, Apple посилила правила конфіденційності, що вплинуло на механізми deferred deep link. Буфер обміну більше не може використовуватися для читання даних без явного дозволу користувача. iCloud Keychain також має обмеження на об’єм даних — не більше 4 КБ на запис. Це робить серверні рішення з унікальним ідентифікатором сесії кращим методом для передачі контексту.
Android надає більш гнучкі можливості для deferred deep link через Install Referrer API. Коли користувач переходить за посиланням на Google Play, магазин фіксує referrer — рядок з параметрами переходу. Після встановлення додаток отримує цей рядок через Install Referrer API та витягує з нього цільовий контекст. Це найнадійніший механізм deferred deep link на Android.
Для додатків, що поширюються не через Google Play, Android підтримує реферальний BroadcastReceiver. Розробник може надіслати кастомний Intent з параметрами після встановлення, і додаток отримає його через зареєстрований в маніфесті BroadcastReceiver. Однак цей механізм менш надійний, оскільки залежить від реалізації встановлювача.
Install Referrer API надає інформацію про джерело встановлення, включаючи referrer URL, час переходу та час встановлення. Максимальна довжина referrer-рядка становить 8 КБ, що достатньо для передачі всіх необхідних параметрів deep link. API доступний на пристроях з Google Play Store версії 8.3.73 та вище і підтримується на Android 5.0 (API 21).
Firebase Dynamic Links — найпопулярніший безкоштовний інструмент для реалізації deferred deep link на обох платформах. Firebase автоматично обробляє всі етапи deferred переходу: перенаправлення в магазин при відсутності додатка, зберігання параметрів на сервері Firebase та передачу їх SDK при першому запуску додатка.
Для реалізації достатньо інтегрувати Firebase SDK в проект, створити Dynamic Link через Firebase Console із зазначенням глибокого посилання та параметрів кампанії. Firebase SDK автоматично викликається при запуску додатка та перевіряє наявність вхідного Dynamic Link через метод getDynamicLink().
Приклад обробки відкладеного Firebase Dynamic Link в Activity на Kotlin. Код однаково працює для cold start та warm start при запуску додатка.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDeferredLink()
}
private fun checkDeferredLink() {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deferredLink = link?.link.toString()
if (deferredLink.isNotEmpty()) {
navigateToContent(deferredLink)
}
}
}
}
Метод getDynamicLink() повертає PendingTask з об’єктом DynamicLink. Якщо додаток було встановлено після переходу за посиланням, listener отримає дані з параметрами. Якщо додаток уже було встановлено до переходу, метод поверне ті самі дані, що й при звичайному deep link. Прапорець minimumAppVersion в параметрах посилання дозволяє задати мінімальну версію додатка для обробки.
Deferred Deep Link надає значні переваги для маркетингових кампаній: користувач отримує цільовий контент після встановлення без додаткових дій, що підвищує конверсію та retention. Для реферальних програм deferred посилання дозволяють однозначно пов’язати запрошення зі встановленням та діями нового користувача.
Однак технологія має й обмеження. Deferred deep link не працює в браузерах, що блокують сторонні cookie, а на iOS з версії 14 потрібне додаткове налаштування для роботи з iCloud Keychain. Крім того, між переходом за посиланням та встановленням може минути кілька днів, і не всі SDK гарантують збереження даних за такий період.
Deferred deep link обов’язковий для рекламних кампаній, націлених на нових користувачів, email-розсилок із запрошеннями та реферальних програм. Для вже встановлених користувачів достатньо звичайного deep link. Якщо додаток не використовує маркетингові кампанії та реферальні механіки, deferred deep link не потрібний — достатньо Universal Links та App Links.
При виборі реалізації враховуйте вартість: Firebase Dynamic Links безкоштовний, але має обмежену аналітику. Branch.io та AppsFlyer надають розширену атрибуцію, але вимагають підписки. Для невеликих проектів Firebase — оптимальне рішення, для enterprise з десятками рекламних каналів — комерційні MMP.
Поширені запитання
Звичайний deep link вимагає встановленого додатка та відкриває його безпосередньо. Deferred Deep Link працює, навіть якщо додаток не встановлено — він перенаправляє в магазин, а після встановлення відновлює контекст переходу та відкриває цільовий екран.
Термін зберігання залежить від платформи. Firebase Dynamic Links зберігає параметри до 30 днів. Branch.io зберігає дані до 90 днів. На Android Install Referrer API зберігає referrer-рядок до моменту першого зчитування додатком, але не більше 90 днів.
На десктопі deferred deep link не має сенсу, оскільки додаток не можна встановити через магазин на комп’ютері. При переході за посиланням з десктопа користувач побачить fallback URL — веб-версію контенту або сторінку з QR-кодом для встановлення на мобільний пристрій.
Chrome, Safari та Samsung Internet підтримують deferred deep link через механізми cookie та localStorage. Firefox має обмежену підтримку через сувору політику блокування сторонніх cookie. Для максимального покриття рекомендується використовувати SDK Firebase або Branch.io.
Технічно можна реалізувати самостійне рішення через проміжний сервер та реферальні механізми. Однак це вимагає розробки та підтримки серверної інфраструктури, обробки cookie, інтеграції з кожним магазином та вирішення проблем на різних платформах. Готові SDK Firebase та Branch.io прискорюють розробку в десятки разів.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також