Реализация Deferred Deep Linking в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Реализация Deferred Deep Linking в мобильном приложении
Сложная
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Реализация Deferred Deep Linking в мобильном приложении

Обычный deep link работает только если приложение установлено. Пользователь нажимает на ссылку, приложение не установлено — ссылка ведёт в стор, контекст теряется. Deferred deep linking решает именно эту ситуацию: пользователь устанавливает приложение и при первом запуске попадает на тот экран, на который нажимал. Это критично для рекламных кампаний, реферальных программ и шаринга контента.

Как это работает технически

Механика deferred deep linking строится на нескольких слоях.

Слой 1: передача параметров до установки. Классический подход — fingerprinting: при переходе по ссылке сервер сохраняет параметры (кампания, контент, реферер) вместе с fingerprint браузера (IP, user agent, разрешение экрана). После установки приложение делает запрос к серверу со своим fingerprint — сервер матчит и возвращает сохранённые параметры.

Точность fingerprinting — 70–85%. Достаточно для большинства маркетинговых задач, но не для финансовых операций.

Слой 2: Google Play Referrer (Android). Надёжнее fingerprinting. При переходе по ссылке с &referrer= параметром Google Play сохраняет его и передаёт приложению при первой установке через InstallReferrerClient:

val referrerClient = InstallReferrerClient.newBuilder(context).build()
referrerClient.startConnection(object : InstallReferrerStateListener {
    override fun onInstallReferrerSetupFinished(responseCode: Int) {
        if (responseCode == InstallReferrerClient.InstallReferrerResponse.OK) {
            val referrer = referrerClient.installReferrer.installReferrer
            // parse UTM parameters from referrer string
        }
    }
    override fun onInstallReferrerServiceDisconnected() {}
})

Слой 3: SKAdNetwork / StoreKit AdNetwork (iOS). Apple закрыла fingerprinting в iOS 14.5+ через App Tracking Transparency. Для iOS деferred deep linking работает только через:

  • Клипборд — копируем параметры в буфер обмена на лендинге, приложение читает при первом запуске (требует UIPasteboard.general.string, iOS 16+ показывает системный prompt)
  • Сторонние SDK (Branch, AppsFlyer, Adjust), которые используют детерминированное сопоставление через IDFA (с разрешения) и SKAdNetwork для атрибуции без него

Реализация через Branch.io

Branch — наиболее полный инструмент для deferred deep linking. Поддерживает Android (Play Referrer + fingerprint), iOS (клипборд + SKAdNetwork + детерминированное), web fallback.

Android SDK:

// Application.onCreate()
Branch.getAutoInstance(this)

// Activity.onStart()
Branch.sessionBuilder(this)
    .withCallback { referringParams, error ->
        if (error == null && referringParams != null) {
            val screen = referringParams.getString("screen")
            val itemId = referringParams.getString("item_id")
            if (referringParams.getBoolean("+clicked_branch_link", false)) {
                // навигация на нужный экран
                navigateTo(screen, itemId)
            }
        }
    }
    .withData(intent?.data)
    .init()

iOS SDK:

Branch.getInstance().initSession(launchOptions: launchOptions) { params, error in
    guard error == nil, let params = params else { return }
    if let clicked = params["+clicked_branch_link"] as? Bool, clicked {
        let screen = params["screen"] as? String
        self.navigateTo(screen: screen)
    }
}

Универсальные ссылки (iOS) и App Links (Android) настраиваются параллельно — Branch генерирует нужные apple-app-site-association и assetlinks.json через свой dashboard.

Кастомная реализация без сторонних SDK

Если Branch/AppsFlyer избыточны (нет бюджета на enterprise план или политика против third-party SDK), можно реализовать упрощённую версию:

  1. Создать endpoint /deferred?screen=product&id=123 — сохраняет параметры + fingerprint в Redis с TTL 24 часа
  2. На Android: установить referrer через ?referrer=screen%3Dproduct%26id%3D123 в ссылке на Play Store
  3. При первом запуске: читать через InstallReferrerClient (Android) или делать запрос с fingerprint (iOS)
  4. Навигация на нужный экран

Ограничение: на iOS точность ~70–75%, Android через Play Referrer — ~95%.

Тестирование

Deferred deep linking крайне сложно тестировать в dev-окружении: нужна реальная установка из стора или тестовый track (Firebase App Distribution / TestFlight). Для Branch — режим testMode позволяет эмулировать клики в debug-сборке.

Обязательные тест-кейсы:

  • Установка на чистое устройство по ссылке
  • Переход по ссылке с уже установленным приложением (обычный deep link)
  • Переход по ссылке, удаление и повторная установка (параметры не должны применяться повторно)
  • Переход без клика на Branch ссылку (organic install — параметров нет)

Что входит в работу

Выбираем стратегию под платформы и бюджет (Branch/AppsFlyer vs кастомная реализация), настраиваем Universal Links и App Links, реализуем SDK интеграцию с навигацией на нужные экраны, тестируем все сценарии на реальных устройствах. Документируем схему параметров для маркетинговой команды.

Срок: 5–10 дней с учётом настройки домена, тестирования всех сценариев установки и интеграции с навигацией.