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) или clipboard, на 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. Clipboard больше не может использоваться для чтения данных без явного разрешения пользователя. 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().
Пример обработки 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 предоставляет значительные преимущества для маркетинговых кампаний: пользователь получает целевой контент после установки без дополнительных действий, что повышает конверсию и 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 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также