Deep Link: шта је, врсте линкова и принцип рада

Аутор: IT Sectr Објављено: 2026-05-14 Време читања: 9 мин

Deep Link (дубоки линк) — је URL који усмерава корисника на одређени екран или садржај унутар мобилне апликације, заобилазећи главни екран. За разлику од обичног линка ка веб сајту, deep link активира апликацију и одмах отвара циљни садржај. Према Android Developers, правилно постављени deep link-ови повећавају конверзију ка циљној акцији за 30–50% захваљујући смањењу броја корака до садржаја.

Главно

  • Deep Link — URL који отвара одређени екран апликације, а не почетну страницу
  • URI-scheme (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 од обичног линка. Обичан линк (https://example.com/product/42) отвара се у прегледачу и води ка веб верзији странице. Deep link (myapp://product/42) код инсталиране апликације отвара нативни екран са истим садржајем, а ако апликација не постоји — приказује грешку. Управо за решавање проблема беспрекорног fallback-а створени су Universal Link (iOS) и App Link (Android).

Различити задаци захтевају различите врсте deep link-а. Неки линкови раде само са инсталираном апликацијом, други могу да сачекају инсталацију, трећи преносе аналитички контекст. Избор типа зависи од сценарија коришћења: рекламна кампања, push обавештење, дељење садржаја или имејл кампања.

Обичан 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) — стандардни начин преношења контекста. У мобилним апликацијама, контекстни 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-у се одвија кроз методу 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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође