Deep Link: что это, типы ссылок и принцип работы

Автор: IT Sectr Опубликовано: 2026-05-14 Время чтения: 9 мин

Deep Link (глубокая ссылка) — это URL, который направляет пользователя на конкретный экран или контент внутри мобильного приложения, минуя главный экран. В отличие от обычной ссылки на сайт, deep link активирует приложение и сразу открывает целевой контент. По данным Android Developers, правильно настроенные deep link увеличивают конверсию в целевое действие на 30–50% за счёт сокращения числа шагов до контента.

Главное

  • Deep Link — URL, открывающий конкретный экран приложения, а не главную страницу
  • URI-схема (myapp://profile/123) — классический способ deep link, работает на обеих платформах
  • Deferred Deep Link — ссылка, которая срабатывает после установки приложения, передавая контекст
  • Universal Link (iOS) и App Link (Android) — эволюция deep link с верификацией домена
  • Контекстный deep link — передаёт дополнительные параметры: промокод, referrer, источник трафика

Deep Link (глубокая ссылка) — это URI, который при переходе открывает не веб-страницу, а конкретный экран внутри мобильного приложения. Технология решает фундаментальную проблему мобильных платформ: браузер не может напрямую открыть экран приложения, а deep link создаёт мост между вебом и нативным кодом. Без deep link пользователь всегда попадает на главный экран и вынужден вручную навигировать к нужному контенту.

Архитектура deep link состоит из двух частей: схема (scheme) определяет, какое приложение должно обработать ссылку, а путь (path) указывает на конкретный ресурс внутри приложения — товар, статью, профиль пользователя или раздел настроек. Параметры запроса (?source=push&campaign=summer) передают дополнительный контекст для аналитики, персонализации и атрибуции кампаний.

Важно различать deep link и regular link. Обычная ссылка (https://example.com/product/42) открывается в браузере и ведёт на веб-версию страницы. Deep link (myapp://product/42) при наличии установленного приложения открывает именно нативный экран с тем же контентом, а если приложение отсутствует — показывает ошибку. Именно для решения проблемы бесшовного fallback были созданы Universal Link (iOS) и App Link (Android).

Разные задачи требуют разных типов deep link. Некоторые ссылки работают только с установленным приложением, другие умеют ждать установки, третьи передают аналитический контекст. Выбор типа зависит от сценария использования: рекламная кампания, push-уведомление, шеринг контента или email-рассылка.

Обычный Deep Link (Standard Deep Link)

Standard Deep Link — базовый тип, который срабатывает, только если приложение уже установлено на устройстве. Пользователь нажимает на ссылку myapp://product/42, система определяет зарегистрированную схему и открывает приложение на нужном экране. Если приложение не установлено — браузер показывает ошибку «Страница не найдена» или просто ничего не делает. Этот тип подходит для внутренней навигации внутри уже установленного приложения.

Настройка стандартного deep link проста: достаточно зарегистрировать URI-схему в манифесте (Android) или Info.plist (iOS). Не требуется серверной валидации или SSL-сертификатов. Но именно из-за отсутствия fallback этот тип считается устаревшим для маркетинговых кампаний — потеря трафика от пользователей без приложения составляет до 60%.

Deferred Deep Link (отложенная глубокая ссылка)

Deferred Deep Link решает главную проблему обычных deep link: он работает даже если приложение не установлено. Пользователь переходит по ссылке → видит страницу (landing или App Store/Google Play) → устанавливает приложение → при первом запуске приложение получает контекст оригинальной ссылки и открывает нужный экран. Технология требует SDK посредника (AppsFlyer, Branch, Adjust), который сохраняет контекст на сервере до момента первого запуска.

Branch — одна из самых популярных платформ для deferred deep link. Она предоставляет единую ссылку, которая работает на всех платформах: определяет ОС пользователя, перенаправляет в магазин приложений, а после установки передаёт контекст (промокод, идентификатор товара, источник кампании). По данным Branch (2024), deferred deep link повышают конверсию рекламных кампаний на 40–70%.

Contextual Deep Link (контекстная глубокая ссылка)

Contextual Deep Link — это обычный или deferred deep link, дополненный параметрами контекста: источник трафика (source), кампания (campaign), промокод, referrer, идентификатор партнёра. Параметры передаются в URL и обрабатываются приложением для персонализации: показать приветственный бонус, открыть товар со скидкой, записать аналитику установки.

UTM-метки (utm_source, utm_medium, utm_campaign) — стандартный способ передачи контекста. В mobile контекстные deep link критичны для атрибуции: без них владелец приложения не знает, какой канал привёл пользователя — органический трафик, реклама Facebook, email-рассылка или QR-код. Качественная атрибуция требует интеграции с MMP (Mobile Measurement Partner).

Тип Deep LinkТребует установкиHold on installКонтекст
StandardДаНетТолько в URL
DeferredНетДаСерверное хранение
ContextualЛюбойЛюбойUTM + параметры

iOS поддерживает deep link через два механизма: старый Custom URL Scheme и современный Universal Link (iOS 9+). Custom URL Scheme работает по принципу регистрации кастомной схемы в Info.plist. Приложение регистрирует myapp://, и iOS при переходе по такой ссылке открывает приложение. Проблема: если схема не зарегистрирована ни одним приложением, браузер показывает ошибку.

Обработка deep link на iOS происходит через метод AppDelegate application(_:open:options:) или SceneDelegate scene(_:openURLContexts:). Разработчик извлекает URL, парсит путь и параметры, затем навигирует на соответствующий экран. Если используется SwiftUI, обработка выполняется через OpenURLAction или onChange(of: openURL). Важно корректно обрабатывать состояние: приложение может быть не запущено, свёрнуто или активно.

Security на iOS строгая: Custom URL Scheme может перехватить любое приложение, зарегистрировавшее ту же схему. Это потенциальная уязвимость (URL Scheme hijacking). Поэтому Apple рекомендует Universal Link как более безопасную альтернативу: только подтверждённый владелец домена может ассоциировать ссылки с приложением. Подробнее о Universal Link — в статье Universal Link.

Android реализует deep link через Intent Filter в AndroidManifest.xml. Приложение определяет Activity, которая обрабатывает определённую схему (myapp://) или конкретные хосты и пути. Когда пользователь нажимает на deep link, Android ищет Activity с подходящим Intent Filter и открывает её. Если подходящих Activity несколько — система показывает диалог выбора приложения.

xml
// AndroidManifest.xml — Intent Filter для Deep Link
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="myapp"
            android:host="product"
            android:pathPrefix="/" />
    </intent-filter>
</activity>

Обработка deep link в Android выполняется в методе Activity.onCreate() или onNewIntent(). Разработчик получает Intent, извлекает URI и вызывает навигацию. Для Jetpack Navigation компонент Navigation Deep Link позволяет декларативно описать deep link в графе навигации. Android App Link (Android 6.0+) — эволюция deep link с верификацией через Digital Asset Links, устраняющая диалог выбора приложения.

Важно учитывать Android 12+ изменения: начиная с API 31, система требует явного указания exported=true для Activity, обрабатывающих deep link, и проверяет корректность Intent Filter. Google Play Store проверяет App Link верификацию при публикации. Без верификации Google может отклонить апдейт, если deep link ведут на несуществующие страницы сайта.

Настройка deep link включает несколько этапов, общих для обеих платформ. Первый шаг — определить схему и структуру URL. Рекомендуется использовать https-схему (вместо кастомной) для совместимости с Universal Link и App Link. Структура URL должна повторять структуру веб-сайта: /product/42, /profile/john, /settings/notifications. Это упрощает поддержку и индексацию контента поисковиками.

Второй этап — обработка deep link в коде приложения. Для Android рекомендуется Jetpack Navigation с декларативными deep link в nav_graph. Для iOS — SwiftUI NavigationStack с обработкой OpenURLAction. Важно обрабатывать три состояния приложения: cold start (приложение не запущено), warm start (свёрнуто) и active (на экране). Каждое состояние требует разной логики навигации.

  • Определить схему и структуру URL (myapp:// или https://your.domain/)
  • Зарегистрировать схему в манифесте (Android) или Info.plist (iOS)
  • Реализовать обработку в Activity или AppDelegate/SwiftUI
  • Настроить fallback для случая, если приложение не установлено
  • Протестировать все три состояния: cold start, warm start, active

Тестирование deep link — отдельная задача. Android Studio предоставляет инструмент App Links Assistant для проверки Intent Filter. На iOS тестирование выполняется через Xcode с передачей URL через аргументы схемы запуска. Рекомендуется настроить CI-проверку: автоматический переход по deep link и проверка, что открылся ожидаемый экран. Для deferred deep link тестирование включает полный цикл «установка → первый запуск → контекст». Без тестирования deep link часто ломаются при обновлении навигации в приложении.

Часто задаваемые вопросы

Чем deep link отличается от обычной ссылки?

Обычная ссылка (https://site.com/page) открывается в браузере. Deep link (myapp://page или https://site.com/page с верификацией) открывает экран внутри мобильного приложения. Deep link может также передавать контекст: промокод, источник трафика, идентификатор реферала.

Что такое URI-схема и зачем она нужна?

URI-схема — это префикс URL, определяющий, какое приложение должно обработать ссылку (например, myapp://, vk://, tg://). Система использует схему для маршрутизации: находит приложение, зарегистрировавшее эту схему, и передаёт ему URL для обработки.

Как работает deferred deep link?

Пользователь переходит по ссылке → сервис (Branch, AppsFlyer) запоминает контекст → перенаправляет в App Store/Google Play → после установки и первого запуска SDK передаёт сохранённый контекст приложению → приложение открывает нужный экран, как если бы пользователь уже имел приложение.

Можно ли использовать deep link без установленного приложения?

Обычный deep link — нет. Deferred deep link — да, за счёт промежуточной страницы, которая перенаправляет в магазин приложений и сохраняет контекст. Universal Link и App Link открывают сайт как fallback, если приложение не установлено.

Как тестировать deep link на реальных устройствах?

На Android используйте adb: adb shell am start -W -a android.intent.action.VIEW -d "myapp://product/42". На iOS — xcrun simctl openurl booted "myapp://product/42". Для обеих платформ доступны тестовые консоли Firebase Dynamic Links и Branch.

Итоги

  • Deep Link — URL, открывающий конкретный экран приложения, а не главную страницу или сайт
  • Три типа — Standard (только при установленном приложении), Deferred (с ожиданием установки), Contextual (с UTM-параметрами)
  • Custom URL Scheme (myapp://) — простой способ, но без fallback при отсутствии приложения
  • Universal Link и App Link — эволюция deep link с верификацией домена и браузерным fallback
  • iOS обрабатывает deep link через AppDelegate/SceneDelegate, Android — через Intent Filter
  • Deferred Deep Link требует SDK посредника (Branch, AppsFlyer) для хранения контекста до установки
  • Тестирование всех трёх состояний (cold, warm, active) — обязательный этап настройки deep link

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также