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

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

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