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 с верификация на домейн
  • Contextual Deep Link — предава допълнителни параметри: промокод, referrer, източник на трафик

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

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

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

Различните задачи изискват различни видове deep link. Някои връзки работят само с инсталирано приложение, други могат да изчакат инсталация, трети предават аналитичен контекст. Изборът на тип зависи от сценария на използване: рекламна кампания, push известие, споделяне на съдържание или имейл маркетинг.

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) са стандартен начин за предаване на контекст. В мобилната среда контекстните deep link са критични за атрибуция: без тях собственикът на приложението не знае кой канал е довел потребителя — органичен трафик, реклама във Facebook, имейл маркетинг или QR код. Качествената атрибуция изисква интеграция с MMP (Mobile Measurement Partner).

Тип Deep LinkИзисква инсталацияИзчаква инсталацияКонтекст
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 става чрез метода application(_:open:options:) на AppDelegate или scene(_:openURLContexts:) на SceneDelegate. Разработчикът извлича URL, анализира пътя и параметрите, след което навигира към съответния екран. Ако се използва SwiftUI, обработката се извършва чрез OpenURLAction или onChange(of: openURL). Важно е правилно да се обработва състоянието: приложението може да не е стартирано, да е свито или да е активно.

Сигурността на 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 се извършва в метода onCreate() или onNewIntent() на Activity. Разработчикът получава 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също