URL Scheme: шта је то, како ради и користи се у развоју

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

URL Scheme је прилагођени URI протокол који мобилна апликација региструје у оперативном систему за отварање путем линкова облика myapp://path. Према RFC 3986, URI шема дефинише синтаксу и семантику свих наредних компоненти адресе. Приликом клика на такав линк, систем идентификује регистровану апликацију по јединственом идентификатору и покреће је са параметрима извученим из линка. Deep link заснован на URL Scheme остаје основни механизам међуапликативне навигације на мобилним платформама, упркос појави савременијих алтернатива.

Главно

  • URL Scheme — прилагођени протокол линкова облика myapp://path, који апликација региструје за отварање из других апликација или прегледача.
  • Синтакса укључује шему, хост, путању и query параметре према стандарду RFC 3986, што обезбеђује флексибилан пренос података између апликација.
  • iOS користи CFBundleURLTypes у Info.plist и делегата AppDelegate за обраду долазних URL Scheme са параметрима навигације.
  • Android примењује Intent Filter у AndroidManifest.xml са навођењем action, category и data за усмеравање deep link-а на циљну Activity.
  • Ограничење — URL Scheme не ради када апликација није инсталирана, што се решава путем Universal Links на iOS и App Links на Android.

Шта је URL Scheme?

URL Scheme — је јединствени идентификатор протокола који апликација региструје у оперативном систему за примање позива путем прилагођених линкова. Када корисник кликне на линк облика myapp://profile/123, систем идентификује апликацију која је регистровала шему myapp и предаје јој контролу са комплетним URI-јем. Овај механизам омогућава апликацијама да размењују податке и отварају једне друге без учешћа серверске инфраструктуре.

Концепт URL Scheme је директно преузет из веб стандарда RFC 3986, где је URI шема прва компонента сваког универзалног идентификатора ресурса. У мобилном развоју, ова идеја је прилагођена за међуапликативну комуникацију, где уместо HTTP сервера наступа сама апликација која обрађује линк.

Примери познатих URL Scheme

Многе популарне апликације региструју сопствене URL Scheme за интеграцију са спољним сервисима. На пример, Spotify користи шему spotify://, Telegram — tg://, а Instagram — instagram://. Програмери такође често креирају шему облика appname:// за унутрашњу навигацију и тестирање екрана.

URL Scheme се и даље широко користе у push обавештењима, имејл кампањама и QR кодовима, где је потребан тренутни прелазак у одређени део апликације. Међутим, почевши од iOS 9 и Android 6, појавили су се алтернативни механизми који постепено допуњују и замењују голе шеме.

Синтакса URL Scheme: шема, хост и путања

Структура прилагођеног URI-ја подлеже општој спецификацији RFC 3986 и састоји се од неколико компоненти. Шема се наводи прва и одваја се двотачком од остатка адресе. Након шеме могу следити хост, порт, путања, query параметри и фрагмент, од којих је сваки опционалан.

Потпуна синтакса изгледа као scheme://host/path?key=value#fragment. Шема је једини обавезни елемент, остали се одређују потребама конкретне имплементације. Двострука коса црта након шеме историјски потиче из HTTP-а и није строго обавезна према спецификацији, али се свуда користи као конвенција.

Компоненте URI

За визуелни приказ структуре URI користи се табела компоненти. Сваки елемент има своју намену и ниво обавезности.

КомпонентаПримерОбавезност
SchememyappДа
HostprofileНе
Path/user/42Не
Query?id=42&tab=mainНе
Fragment#section2Не

Програмери могу слободно бирати структуру URI-ја, што ствара флексибилност, али рађа проблеме компатибилности између различитих верзија апликације. Препоручује се документовање формата URL Scheme као дела јавног API-ја апликације и верзионисање при промени.

Како ради URL Scheme у iOS

iOS захтева експлицитну регистрацију сваког URL Scheme у Info.plist датотеци пројекта. Програмер додаје низ CFBundleURLTypes, чији сваки елемент садржи идентификатор (CFBundleURLName) и листу подржаних шема (CFBundleURLSchemes). Након регистрације, систем аутоматски усмерава све долазне позиве на регистроване шеме ка апликацији.

Обрада долазног URL Scheme-а се одвија у делегату апликације путем методе application(_:open:options:). Ова метода прима објекат URL из којег се извлаче путања и query параметри за доношење одлуке о навигацији. Обрада мора вратити Bool вредност која указује на успешност операције.

Обрада у AppDelegate

Испод је дат пример имплементације обрађивача URL Scheme у језику Swift. Код демонстрира извлачење хоста и query параметара из долазног URI-ја помоћу URLComponents.

swift
func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey: Any]
) -> Bool {
    let host = url.host
    let params = URLComponents(
        url: url,
        resolvingAgainstBaseURL: false
    )?.queryItems
    if host == "profile" {
        navigateToProfile(params)
    }
    return true
}

Метода користи URLComponents за безбедно парсирање query параметара. Овај приступ је пожељнији од ручног рашчлањивања стринга, јер аутоматски обрађује процентно кодирање и декодирање специјалних знакова у вредностима параметара.

Како ради URL Scheme у Android

Android користи систем Intent Filter за усмеравање deep link-ова на основу URL Scheme-а. Програмер декларише филтер у AndroidManifest.xml унутар тага Activity која треба да обрађује линк. Филтер садржи action VIEW, категорије BROWSABLE и DEFAULT, као и таг data са навођењем шеме, хоста и pathPrefix.

Када корисник кликне на линк са прилагођеном шемом, систем проверава Intent Filter свих инсталираних апликација. Ако је пронађено више одговарајућих апликација, кориснику се приказује дијалог избора. Категорија BROWSABLE дозвољава обраду линка из прегледача.

Подешавање Intent Filter

Пример декларације Intent Filter-а у AndroidManifest.xml за обраду шеме myapp на Activity. Комбинација action и category је обавезна за правилно усмеравање deep link-а.

xml
<activity android:name=".MainActivity">
    <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="profile"
            android:pathPrefix="/user" />
    </intent-filter>
</activity>

Након подешавања филтера, у Activity је потребно позвати intent.getData() за добијање URI-ја. Важно је проверити intent и податке на null, јер Activity може бити покренута без долазног deep link-а, на пример при стандардном покретању из лаунчера.

Пренос параметара путем URL Scheme

Query параметри у URL Scheme се преносе након знака питања у формату кључ=вредност, раздвојени амперсандом. Овај формат је идентичан HTTP захтевима и лако се обрађује стандардним алатима платформе. Параметри морају бити кодирани помоћу процентног кодирања за све знакове који нису у дозвољеном скупу URI-ја.

Пример пуног линка са параметрима: myapp://profile?userId=42&source=email&ref=abc123. Након издвајања URL-а, апликација секвенцијално парсира све query-items и на основу њихових вредности доноси одлуку о навигацији ка циљном екрану.

Ограничење дужине URI

При преносу сложених података важно је узети у обзир ограничење дужине URI-ја. У iOS максимална дужина URL Scheme је ограничена на 2 KB, након чега систем скраћује линк. У Android лимит износи око 8 KB, али тачна вредност зависи од верзије оперативног система и произвођача уређаја. За велике количине података препоручује се преношење само идентификатора сесије путем URL Scheme, а остале податке учитавати са сервера.

Ограничења и алтернативе URL Scheme

Основни недостатак URL Scheme — немогућност обраде линка ако апликација није инсталирана на уређају. Прегледач приказује грешку и корисник губи контекст преласка. За решавање овог проблема, Apple је увео Universal Links у iOS 9, а Google — App Links у Android 6. Оба механизма се региструју путем веб домена повезаног са апликацијом.

Universal Links и App Links раде као обични HTTPS линкови, али када је апликација присутна, отварају је без дијалога избора. Ако апликација није инсталирана, линк отвара веб страницу на истом домену, чувајући корисничко искуство. То их чини пожељном алтернативом за производно окружење.

Механизми fallback

За URL Scheme на iOS и Android не постоји уграђени механизам fallback. Програмери користе посредна серверска решења: линк води до веб странице која проверава инсталацију апликације путем JavaScript-а и преусмерава било на шему, било у продавницу апликација. Firebase Dynamic Links и Branch.io нуде готова решења овог проблема са подршком за deferred deep link, који аутоматски одређују статус инсталације и усмеравају корисника без потребе за развојем сопственог серверског pipeline-а.

Додатна сложеност настаје при коришћењу URL Scheme у iOS 15+ и Android 12+, где су пооштрена правила приватности. Safari блокира покушаје отварања нерегистроване шеме без претходне потврде, а Android 12 ограничава видљивост инсталираних апликација путем PackageManager-а. Ове промене чине употребу URL Scheme за међуапликативну интеракцију мање поузданом него у ранијим верзијама платформи.

Често постављана питања

По чему се URL Scheme разликује од Universal Links?

URL Scheme користи прилагођени протокол без шифровања, а Universal Links раде путем HTTPS са верификацијом домена. Universal Links не изазивају дијалог избора апликације и правилно се обрађују када апликација није присутна на уређају.

Може ли URL Scheme садржати ћириличне знакове?

Да, али сви не-ASCII знакови морају бити кодирани путем percent-encoding према RFC 3986. Препоручује се избегавање ћирилице у URL Scheme ради обезбеђивања компатибилности са старијим верзијама оперативних система и прегледача.

Колико URL Scheme може регистровати једна апликација?

Нема ограничења на број шема ни у iOS ни у Android. У пракси, апликације користе од једне до пет шема. На пример, Telegram региструје шеме tg://, t.me/, telegram:// и telegram.me://.

Како проверити да ли уређај подржава мој URL Scheme?

У iOS се користи метода canOpenURL(_:) која враћа true ако постоји регистрована шема. У Android провера се врши путем PackageManager.queryIntentActivities(). Обе платформе захтевају претходно навођење шеме у конфигурацији.

Могу ли се лозинке преносити путем URL Scheme?

Не, URL Scheme не шифрује податке. Било која апликација која је регистровала исту шему може пресрести линк. За безбедност користите Universal Links са HTTPS или шифровање података на нивоу протокола.

Закључак

  • URL Scheme — прилагођени URI протокол за међуапликативну интеракцију на мобилним платформама према стандарду RFC 3986.
  • Регистрација шеме се врши у Info.plist за iOS и у AndroidManifest.xml за Android путем механизма Intent Filter.
  • Обрада долазног линка у iOS се одвија путем делегата апликације, у Android — путем intent.getData() у циљној Activity.
  • Параметри се преносе путем query-string-а са процентним кодирањем и ограничењима дужине до 2 KB на iOS.
  • Ограничење — URL Scheme не ради када апликација није инсталирана; потребни су Universal Links или App Links за правилан fallback.
  • Алтернативе — Universal Links (iOS), App Links (Android) и комерцијалне платформе Firebase Dynamic Links и Branch.io.
  • Безбедност — URL Scheme не шифрује податке, стога није погодан за пренос поверљивих информација.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

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

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