Deferred Deep Link to mechanizm, który zachowuje docelowy kontekst przejścia, nawet jeśli aplikacja nie jest jeszcze zainstalowana na urządzeniu użytkownika. Według Branch Resources, po instalacji aplikacji system automatycznie przetwarza zapisany kontekst i przekierowuje użytkownika na docelowy ekran. Opóźniony głęboki link rozwiązuje główny problem zwykłego deep link — niemożność pracy z niezainstalowanymi aplikacjami.
Najważniejsze
Deferred Deep Link — to rodzaj głębokiego linku, który działa w dwóch etapach: najpierw użytkownik przechodzi przez link przed instalacją aplikacji, a następnie system przywraca kontekst po zakończeniu instalacji. Zwykły deep link otwiera aplikację tylko jeśli jest już zainstalowana, a deferred zachowuje wszystkie parametry przejścia i przekazuje je przy pierwszym uruchomieniu.
Technologia stała się szczególnie potrzebna wraz z rozwojem marketingu mobilnego, gdzie kampanie reklamowe często są skierowane do użytkowników, którzy jeszcze nie zainstalowali aplikacji. Bez deferred deep link każde takie przejście kończyłoby się po prostu pobraniem aplikacji bez jakiegokolwiek kontekstu — użytkownik trafiałby na ekran główny zamiast docelowego.
Zwykły deep link otwiera docelową treść w już zainstalowanej aplikacji. Jeśli aplikacja nie jest zainstalowana, przeglądarka wyświetla błąd. Deferred Deep Link działa przez pośredniczący serwer, który przekierowuje użytkownika do sklepu, a po instalacji informuje aplikację o zapisanych parametrach. W ten sposób deferred link nie wymaga wcześniejszej instalacji aplikacji i zapewnia ciągłą ścieżkę użytkownika od reklamy do treści.
Proces przetwarzania deferred deep link składa się z trzech etapów. Na pierwszym etapie użytkownik przechodzi przez link — serwer określa, czy aplikacja jest zainstalowana. Jeśli nie, generuje unikalny identyfikator sesji, zapisuje parametry przejścia i przekierowuje użytkownika do App Store lub Google Play z tym identyfikatorem.
Na drugim etapie użytkownik instaluje aplikację ze sklepu. Po instalacji i pierwszym uruchomieniu SDK platformy łączy się z serwerem, przekazuje identyfikator urządzenia i otrzymuje zapisane parametry przejścia. Na trzecim etapie aplikacja przetwarza otrzymane dane i automatycznie przekierowuje użytkownika na docelowy ekran.
Do zapisywania parametru pomiędzy przejściem przez link a instalacją używane są różne mechanizmy. W iOS jest to pęk kluczy (iCloud Keychain) lub schowek, w Android — Install Referrer API. Firebase Dynamic Links używa kombinacji localStorage przeglądarki i linku referencyjnego sklepu do przekazania identyfikatora sesji. Branch.io stosuje własny protokół z rezerwacją danych w kilku magazynach.
W iOS deferred deep link jest implementowany przez kombinację Universal Links i Shared Web Credentials. Gdy użytkownik przechodzi przez Universal Link na stronie aplikacji, przeglądarka Safari zapisuje parametry przejścia w iCloud Keychain powiązanym z domeną aplikacji. Po instalacji aplikacji z App Store iOS sprawdza obecność zapisanych danych i przekazuje je aplikacji przy pierwszym uruchomieniu.
Apple nie udostępnia wbudowanego API dla deferred deep link — implementacja w całości spoczywa na zewnętrznych SDK. Firebase Dynamic Links używa mechanizmu passive deferred, w którym dane są zapisywane w cookie przeglądarki i odtwarzane przez przekierowanie na specjalny URL przy pierwszym uruchomieniu aplikacji.
Od iOS 14 Apple zaostrzyło zasady prywatności, co wpłynęło na mechanizmy deferred deep link. Schowek nie może już być używany do odczytu danych bez wyraźnej zgody użytkownika. iCloud Keychain ma również ograniczenia co do ilości danych — nie więcej niż 4 KB na zapis. To sprawia, że rozwiązania serwerowe z unikalnym identyfikatorem sesji są preferowaną metodą przekazywania kontekstu.
Android zapewnia bardziej elastyczne możliwości dla deferred deep link przez Install Referrer API. Gdy użytkownik przechodzi przez link do Google Play, sklep rejestruje referrer — ciąg z parametrami przejścia. Po instalacji aplikacja otrzymuje ten ciąg przez Install Referrer API i wyodrębnia z niego docelowy kontekst. To najbardziej niezawodny mechanizm deferred deep link na Androidzie.
Dla aplikacji dystrybuowanych nie przez Google Play, Android obsługuje referencyjny BroadcastReceiver. Deweloper może wysłać niestandardowy Intent z parametrami po instalacji, a aplikacja otrzyma go przez zarejestrowany w manifeście BroadcastReceiver. Jednak ten mechanizm jest mniej niezawodny, ponieważ zależy od implementacji instalatora.
Install Referrer API dostarcza informacji o źródle instalacji, w tym referrer URL, czas przejścia i czas instalacji. Maksymalna długość ciągu referrer wynosi 8 KB, co wystarcza do przekazania wszystkich niezbędnych parametrów deep link. API jest dostępne na urządzeniach z Google Play Store w wersji 8.3.73 i wyższej oraz jest obsługiwane na Android 5.0 (API 21).
Firebase Dynamic Links — to najpopularniejsze darmowe narzędzie do implementacji deferred deep link na obu platformach. Firebase automatycznie obsługuje wszystkie etapy deferred przejścia: przekierowanie do sklepu przy braku aplikacji, przechowywanie parametrów na serwerze Firebase i przekazanie ich SDK przy pierwszym uruchomieniu aplikacji.
Do implementacji wystarczy zintegrować Firebase SDK z projektem, utworzyć Dynamic Link przez Firebase Console z podaniem głębokiego linku i parametrów kampanii. Firebase SDK automatycznie wywołuje się przy uruchomieniu aplikacji i sprawdza obecność przychodzącego Dynamic Link przez metodę getDynamicLink().
Przykład obsługi deferred Firebase Dynamic Link w Activity w Kotlin. Kod działa tak samo dla cold start i warm start przy uruchomieniu aplikacji.
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)
}
}
}
}
Metoda getDynamicLink() zwraca PendingTask z obiektem DynamicLink. Jeśli aplikacja została zainstalowana po przejściu przez link, listener otrzyma dane z parametrami. Jeśli aplikacja była już zainstalowana przed przejściem, metoda zwróci te same dane, co przy zwykłym deep link. Flaga minimumAppVersion w parametrach linku umożliwia ustawienie minimalnej wersji aplikacji do obsługi.
Deferred Deep Link zapewnia znaczące korzyści dla kampanii marketingowych: użytkownik otrzymuje docelową treść po instalacji bez dodatkowych działań, co zwiększa konwersję i retention. Dla programów referencyjnych deferred linki pozwalają jednoznacznie powiązać zaproszenie z instalacją i działaniami nowego użytkownika.
Jednak technologia ma również ograniczenia. Deferred deep link nie działa w przeglądarkach blokujących cookie stron trzecich, a na iOS od wersji 14 wymagana jest dodatkowa konfiguracja do pracy z iCloud Keychain. Ponadto między przejściem przez link a instalacją może minąć kilka dni, a nie wszystkie SDK gwarantują zachowanie danych przez taki okres.
Deferred deep link jest obowiązkowy dla kampanii reklamowych skierowanych do nowych użytkowników, newsletterów z zaproszeniami i programów referencyjnych. Dla już zainstalowanych użytkowników wystarczy zwykły deep link. Jeśli aplikacja nie używa kampanii marketingowych i mechanik referencyjnych, deferred deep link nie jest potrzebny — wystarczą Universal Links i App Links.
Przy wyborze implementacji uwzględnij koszt: Firebase Dynamic Links jest darmowy, ale ma ograniczoną analitykę. Branch.io i AppsFlyer oferują zaawansowaną atrybucję, ale wymagają subskrypcji. Dla małych projektów Firebase jest optymalnym rozwiązaniem, dla enterprise z dziesiątkami kanałów reklamowych — komercyjne MMP.
Często zadawane pytania
Zwykły deep link wymaga zainstalowanej aplikacji i otwiera ją bezpośrednio. Deferred Deep Link działa, nawet jeśli aplikacja nie jest zainstalowana — przekierowuje do sklepu, a po instalacji przywraca kontekst przejścia i otwiera docelowy ekran.
Czas przechowywania zależy od platformy. Firebase Dynamic Links przechowuje parametry do 30 dni. Branch.io zachowuje dane do 90 dni. Na Androidzie Install Referrer API przechowuje ciąg referrer do momentu pierwszego odczytu przez aplikację, ale nie dłużej niż 90 dni.
Na komputerze deferred deep link nie ma sensu, ponieważ aplikacji nie można zainstalować przez sklep na komputerze. Po przejściu przez link z komputera użytkownik zobaczy fallback URL — wersję internetową treści lub stronę z kodem QR do instalacji na urządzeniu mobilnym.
Chrome, Safari i Samsung Internet obsługują deferred deep link przez mechanizmy cookie i localStorage. Firefox ma ograniczone wsparcie ze względu na surową politykę blokowania cookie stron trzecich. Dla maksymalnego pokrycia zaleca się używanie SDK Firebase lub Branch.io.
Technicznie można zaimplementować własne rozwiązanie przez pośredniczący serwer i mechanizmy referencyjne. Wymaga to jednak opracowania i utrzymania infrastruktury serwerowej, obsługi cookie, integracji z każdym sklepem i rozwiązywania problemów na różnych platformach. Gotowe SDK Firebase i Branch.io przyspieszają rozwój dziesiątki razy.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również