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 не ради у прегледачима који блокирају cookie-је трећих страна, а на 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 има ограничену подршку због строге политике блокирања cookie-ја трећих страна. За максималну покривеност препоручује се коришћење Firebase или Branch.io SDK-а.
Технички је могуће имплементирати сопствено решење кроз посредни сервер и рефералне механизме. Међутим, то захтева развој и одржавање серверске инфраструктуре, управљање cookie, интеграцију са сваком продавницом и решавање проблема на различитим платформама. Готови Firebase и Branch.io SDK-ови убрзавају развој десетинама пута.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође