Deferred Deep Link е механизъм, който запазва целевия контекст на прехода, дори ако приложението все още не е инсталирано на устройството на потребителя. Според Branch Resources, след инсталиране на приложението системата автоматично обработва запазения контекст и пренасочва потребителя към целевия екран. Отложена дълбока връзка решава основния проблем на обикновения 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 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 KB на запис. Това прави сървърните решения с уникален идентификатор на сесия предпочитания метод за предаване на контекст.
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 KB, достатъчна за предаване на всички необходими параметри на 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().
Пример за обработка на deferred 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 предоставя значителни предимства за маркетингови кампании: потребителят получава целево съдържание след инсталация без допълнителни действия, което повишава конверсията и задържането. За реферални програми deferred връзките позволяват еднозначно свързване на поканата с инсталацията и действията на новия потребител.
Технологията обаче има и ограничения. Deferred deep link не работи в браузъри, блокиращи бисквитки на трети страни, а на iOS от версия 14 изисква допълнителна настройка за работа с iCloud Keychain. Освен това между кликването върху връзката и инсталацията може да минат няколко дни и не всички SDK гарантират запазване на данни за такъв период.
Deferred deep link е задължителен за рекламни кампании, насочени към нови потребители, имейл изпращания с покани и реферални програми. За вече инсталирани потребители е достатъчен обикновен 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 има ограничена поддръжка поради строгата политика за блокиране на бисквитки на трети страни. За максимално покритие се препоръчва използването на Firebase или Branch.io SDK.
Технически може да се реализира самостоятелно решение чрез междинен сървър и реферални механизми. Това обаче изисква разработка и поддръжка на сървърна инфраструктура, управление на cookie, интеграция с всеки магазин и решаване на проблеми на различни платформи. Готовите Firebase и Branch.io SDK ускоряват разработката десетократно.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също