+7 (495) 801-60-42

Deep Linking в мобильных приложениях: Universal Links и App Links

В этой статье разбираем deep linking в мобильных приложениях: как работают Universal Links на iOS и App Links на Android, что нужно для корректной маршрутизации, как подключить deferred deep linking и атрибуцию, а также какие инструменты использовать для быстрой и надёжной реализации.

Зачем бизнесу deep linking и как он работает

Deep link — это ссылка, которая открывает не просто приложение, а конкретный экран, состояние или контент внутри него. Для продукта это:

  • рост конверсии: меньше шагов между кликом и целевым действием;
  • связка рекламы, e-mail, соцсетей и пушей с точными точками входа;
  • персонализация онбординга и повторных визитов;
  • измеримость: отслеживание источников и кампаний.

В вебе этот паттерн решён давно, в мобайле ключ к надёжности — доменно подтверждённые ссылки: Universal Links в iOS и App Links в Android. Они исключают всплывающие диалоги, не перехватываются сторонними приложениями и работают предсказуемо из браузеров и мессенджеров.

Universal Links (iOS): архитектура и настройка

Universal Links — это HTTP(S)-ссылки на ваш домен, которые iOS ассоциирует с приложением.

  • Домены: включите Associated Domains (applinks:example.com) в настройках таргета.
  • Файл apple-app-site-association (AASA):
  • JSON без расширения, доступен по HTTPS: /.well-known/apple-app-site-association или в корне домена.
  • Содержит appID (TeamID.BundleID) и пути, которые маппятся на ваше приложение.
  • Обработка: реализуйте метод сцен/делегата, чтобы получать NSUserActivity с activityType = NSUserActivityTypeBrowsingWeb.
  • Fallback: если приложения нет или ссылка не подтверждена, откроется веб-страница.
  • Нюансы:
  • Один домен может быть привязан к нескольким приложениям; следите за приоритетом путей.
  • AASA кэшируется; при изменениях учитывайте задержку распространения.
  • Некоторые мессенджеры открывают встроенный WebView — тестируйте сценарии.

App Links (Android): устройство и верификация

App Links — доменные HTTP(S)-ссылки, подтверждённые сайтом и приложением.

  • В манифесте добавьте intent-filter с action VIEW, category BROWSABLE/DEFAULT, scheme https и host. Для автоподтверждения используйте android:autoVerify="true".
  • На домене разместите /.well-known/assetlinks.json с записью, указывающей пакет и SHA-256 отпечатки подписей (release и debug при необходимости).
  • После верификации ссылки открываются сразу в вашем приложении без диалога «Открывать всегда?».
  • Обработка: извлекайте Intent data (URI), парсите путь/параметры и передавайте в навигацию.
  • Fallback: при отсутствии приложения система откроет ссылку в браузере.

Схемные deeplink-и: когда уместны

Кастомные схемы (myapp://screen?id=123) просты, но уступают доменным решениям:

  • конфликтуют между приложениями с одинаковым именем схемы;
  • часто перехватываются, показывают системные диалоги;
  • хуже работают из некоторых источников (встроенные веб‑просмотры).

Используйте схемы как внутренний протокол и для обратной связи из OAuth/платёжных SDK, а для внешнего трафика — Universal Links/App Links.

Deep linking в мобильных приложениях: базовые принципы маршрутизации

Надёжный слой маршрутизации — это:

  • Единый роутер: декодирует URI, валидирует параметры, решает, какой экран открыть, и формирует Navigation Intent/Route.
  • Идемпотентность: повторный клик не дублирует действия (например, повторный пуш не открывает один и тот же модальный стек).
  • Холодный/тёплый старт: храните непроцессированные ссылки до инициализации навигации (очередь событий), учитывайте авторизацию.
  • Авторизация и доступ: защищённые экраны открывайте только после логина, перенаправляя на целевой экран после успешной аутентификации.
  • Веб‑фолбэки: для ссылок без установленного приложения предусмотрите эквивалентные веб‑страницы.

Deferred deep linking: как доставить пользователя в нужное место после установки

Deferred deep linking передаёт контекст клика через установку приложения.

  • Android: Play Install Referrer API позволяет получить реферальные параметры после первого запуска и восстановить целевую ссылку.
  • iOS: deferred реализуется через сторонние платформы (например, Firebase Dynamic Links, Branch). Они сохраняют контекст клика на стороне сервера и сопоставляют его первому запуску приложения.
  • Практика:
  • Шифруйте и минимизируйте данные в ссылках; храните минимум, необходимый для маршрутизации и атрибуции.
  • Тайм‑ауты и ретраи: учитывайте задержки между установкой и доставкой контекста.
  • Фолбэки: если deferred не сработал, покажите релевантный онбординг.

UTM для deep link и атрибуция мобильного трафика

UTM‑метки помогают анализировать каналы в единой модели. Рекомендации:

  • Храните utm_source, utm_medium, utm_campaign, utm_content, utm_term в параметрах ссылки. Для Universal/App Links используйте обычный query string.
  • На старте приложения считывайте параметры и синхронизируйте с аналитикой (AppMetrica, Firebase Analytics, Amplitude и др.).
  • Не смешивайте уровни атрибуции: первичная (клик/установка) — в MMP/динамических ссылках; вторичная (внутриприложечные события) — в продуктовой аналитике.
  • Сопоставляйте веб и мобайл: при кросс‑платформенных сценариях прокидывайте идентификатор сессии/пользователя через ссылку и сшивайте в CDP/сквозной аналитике.

Инструменты: Firebase Dynamic Links и Branch.io

Оба сервиса решают задачи генерации коротких доменных ссылок, кросс‑платформенности и deferred.

  • Firebase Dynamic Links:
  • Интеграция с Firebase Analytics, бесплатный базовый функционал.
  • Генерация коротких ссылок, поддержка iOS/Android, кастомные домены.
  • Простая настройка, но ограниченная детализация атрибуции по сравнению с MMP.
  • Branch.io:
  • Сильная атрибуция, глубокая интеграция с рекламными сетями и антифрод‑механизмами.
  • Гибкая маршрутизация, лендинги, QR‑коды, богатые параметры, удобные SDK.
  • Коммерческая модель, но масштабные проекты часто окупают удобством отчётности и стабильностью deferred.

Выбор зависит от стека и требований к отчётности. Для старта нередко достаточно Firebase; для сложной мультиканальной атрибуции — Branch.

Безопасность, приватность и качество трафика

  • Доменная верификация: используйте только HTTPS, храните AASA/assetlinks.json под контролем DevOps.
  • Подписи и ключи: на Android в assetlinks.json добавляйте только актуальные SHA-256 сертификатов (release); отзовите старые при ротации ключей.
  • Валидация URI: отбрасывайте неизвестные пути и подозрительные параметры; лимитируйте длину и набор разрешённых значений.
  • Конфиденциальность: не передавайте PII в query‑параметрах; используйте серверные токены/идентификаторы.
  • Антифрод: отслеживайте аномалии кликов, защиту от фарминга deferred, фильтруйте ботов по паттернам и источникам.

Тестирование и отладка: что проверить до релиза

  • iOS:
  • Убедитесь, что AASA доступен и валиден (проверка JSON и заголовков Content-Type: application/json).
  • Тест на физическом устройстве: удалите приложение, установите заново, проверьте холодный/тёплый старт.
  • Проверьте открытие из Safari, из встроенных WebView и из популярных мессенджеров.
  • Android:
  • Проверка assetlinks.json и статуса верификации (adb shell pm verify-app-links, экраны выбора по умолчанию).
  • Холодный/тёплый старт, сценарии без сети, повторные клики.
  • Deferred:
  • Клик по ссылке → установка → первый запуск. Верифицируйте передачу параметров и тайминги.
  • Многоканальные кампании: разные utm, корректная атрибуция и дедупликация.
  • Аналитика:
  • Сопоставление кликов, установок и событий в MMP/аналитике.
  • Корректность пользовательских свойств/идентификаторов.

Типовые ошибки и как их избежать

  • Неправильные пути в AASA/assetlinks.json → часть ссылок не открывается: указывайте явные префиксы и тестируйте wildcard‑маски.
  • Конфликт с веб‑редиректами: серверные 301/302 должны сохранять домен и путь, который ожидает приложение.
  • Полагание только на схемы: внешние кампании ведите через Universal/App Links; схемы оставьте для SDK и внутренних переходов.
  • Потеря контекста на авторизации: храните deeplink‑состояние в безопасном кеше до завершения логина.
  • Слишком «толстые» ссылки: используйте сжатие параметров или серверные резолверы.

Интеграция deep linking с маркетингом и продуктом

  • Реклама: каждая креативная гипотеза — свой deeplink на конкретный оффер/экран.
  • E-mail/SMS/мессенджеры: персональные ссылки с метками для сегментов.
  • Онбординг: разный первый экран под источник (контент, промо, реферал).
  • Повторные продажи: ссылки из пушей на корзину, избранное, оплату.
  • Сквозная аналитика: соединяйте данные из MMP и веб‑аналитики, стройте когортные отчёты.

Для внедрения в боевых продуктах важно планировать deep linking одновременно с разработкой приложения. Если вы на этапе проектирования или апгрейда, подключение специалистов ускорит релиз и снизит технический долг. Мы делаем комплексные Мобильные приложения, в том числе Сервисные приложения для клиентов и Корпоративные мобильные приложения, сразу закладывая корректную маршрутизацию, атрибуцию и тестирование deeplink‑ов.

Дополнительные материалы

  • Для стратегического фреймворка маркетинга посмотрите «
    ».
  • Про рост мобильных продуктов в смежной нише — «
    ».

Чек‑лист внедрения deep linking

  • Определены сценарии переходов и экраны назначения.
  • Выбран подход: Universal Links (iOS) и App Links (Android), схемы — только для внутренних задач.
  • Подготовлены и размещены AASA и assetlinks.json; домены подтверждены.
  • Реализован единый роутер и обработка холодного/тёплого старта, очереди событий.
  • Настроены fallback‑страницы и поведение без установленного приложения.
  • Подключён deferred deep linking (Firebase Dynamic Links / Branch.io / MMP).
  • Согласована UTM‑схема, параметры считываются и отправляются в аналитику.
  • Покрыты сценарии авторизации и доступа к защищённым экранам.
  • Написаны автотесты/чек‑кейсы, проведено кросс‑девайс/кросс‑канальное тестирование.
  • Настроен мониторинг ошибок, логирование URI и аномалий кликов.

Итоги

Deep linking — база для управляемых пользовательских сценариев в мобайле. Доменные ссылки (Universal Links и App Links) дают предсказуемость, а корректная маршрутизация, deferred и атрибуция — измеримость и рост конверсии. Если нужно спроектировать или модернизировать стек переходов под ваш продукт — напишите нам: спроектируем архитектуру, внедрим и проверим на проде.

Другие полезные статьи

Делимся экспертизой, разбираем кейсы и рассказываем, как превращать идеи в работающие digital-продукты