URL Scheme: ce este, cum funcționează și se utilizează în dezvoltare

Autor: IT Sectr Publicat: 2026-05-14 Timp de citire: 8 min

URL Scheme este un protocol URI personalizat pe care aplicația mobilă îl înregistrează în sistemul de operare pentru deschiderea prin linkuri de tipul myapp://path. Conform RFC 3986, schema URI definește sintaxa și semantica tuturor componentelor ulterioare ale adresei. La accesarea unui astfel de link, sistemul identifică aplicația înregistrată după un identificator unic și o lansează cu parametrii extrași din link. Deep link bazat pe URL Scheme rămâne mecanismul de bază al navigării inter-aplicații pe platformele mobile, în ciuda apariției unor alternative mai moderne.

Principalele puncte

  • URL Scheme — un protocol personalizat de linkuri de tipul myapp://path, pe care aplicația îl înregistrează pentru deschiderea din alte aplicații sau din browser.
  • Sintaxa include schema, host, calea și parametrii query conform standardului RFC 3986, asigurând transmiterea flexibilă a datelor între aplicații.
  • iOS utilizează CFBundleURLTypes în Info.plist și delegatul AppDelegate pentru procesarea URL Scheme-urilor primite cu parametri de navigare.
  • Android aplică Intent Filter în AndroidManifest.xml cu specificarea action, category și data pentru rutarea deep link-ului către Activity-ul țintă.
  • Limitare — URL Scheme nu funcționează în absența aplicației, ceea ce se rezolvă prin Universal Links pe iOS și App Links pe Android.

Ce este URL Scheme?

URL Scheme — este un identificator unic de protocol pe care aplicația îl înregistrează în sistemul de operare pentru a primi apeluri prin linkuri personalizate. Când utilizatorul face clic pe un link de tipul myapp://profile/123, sistemul identifică aplicația care a înregistrat schema myapp și îi transmite controlul cu URI-ul complet. Acest mecanism permite aplicațiilor să facă schimb de date și să se deschidă reciproc fără infrastructură server.

Conceptul de URL Scheme este preluat direct din standardele web RFC 3986, unde schema URI este prima componentă a oricărui identificator universal de resursă. În dezvoltarea mobilă, această idee a fost adaptată pentru comunicarea între aplicații, unde în locul serverului HTTP acționează însăși aplicația care procesează linkul.

Exemple de URL Scheme cunoscute

Multe aplicații populare își înregistrează propriile URL Scheme pentru integrarea cu servicii terțe. De exemplu, Spotify utilizează schema spotify://, Telegram — tg://, iar Instagram — instagram://. Dezvoltatorii creează adesea și schema de tipul appname:// pentru navigarea internă și testarea ecranelor.

URL Scheme-urile sunt încă utilizate pe scară largă în notificările push, campaniile email și codurile QR, unde este necesară o tranziție imediată către o secțiune specifică a aplicației. Cu toate acestea, începând cu iOS 9 și Android 6, au apărut mecanisme alternative care completează și înlocuiesc treptat schemele simple.

Sintaxa URL Scheme: schema, host și calea

Structura unui URI personalizat respectă specificația generală RFC 3986 și constă din mai multe componente. Schema este specificată prima și este separată de două puncte de restul adresei. După schemă pot urma host, port, cale, parametrii query și fragment, fiecare fiind opțional.

Sintaxa completă arată ca scheme://host/path?key=value#fragment. Schema este singurul element obligatoriu, restul fiind determinate de necesitățile implementării concrete. Dubla bară oblică după schemă provine istoric din HTTP și nu este strict obligatorie conform specificației, dar este utilizată universal ca convenție.

Componentele URI

Pentru reprezentarea vizuală a structurii URI se utilizează un tabel cu componente. Fiecare element are propriul scop și nivel de obligativitate.

ComponentăExempluObligativitate
SchememyappDa
HostprofileNu
Path/user/42Nu
Query?id=42&tab=mainNu
Fragment#section2Nu

Dezvoltatorii pot alege liber structura URI, ceea ce oferă flexibilitate, dar generează probleme de compatibilitate între diferite versiuni ale aplicației. Se recomandă documentarea formatului URL Scheme ca parte a API-ului public al aplicației și versionarea acestuia la modificare.

Cum funcționează URL Scheme în iOS

iOS necesită înregistrarea explicită a fiecărui URL Scheme în fișierul Info.plist al proiectului. Dezvoltatorul adaugă un array CFBundleURLTypes, fiecare element conținând un identificator (CFBundleURLName) și lista schemelor suportate (CFBundleURLSchemes). După înregistrare, sistemul direcționează automat toate apelurile primite către schemele înregistrate către aplicație.

Procesarea URL Scheme-ului primit are loc în delegatul aplicației prin metoda application(_:open:options:). Această metodă primește un obiect URL din care se extrag calea și parametrii query pentru a lua o decizie de navigare. Procesarea trebuie să returneze o valoare Bool care indică succesul operațiunii.

Procesarea în AppDelegate

Mai jos este prezentat un exemplu de implementare a unui handler URL Scheme în limbajul Swift. Codul demonstrează extragerea hostului și a parametrilor query din URI-ul primit folosind 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
}

Metoda utilizează URLComponents pentru parsarea sigură a parametrilor query. Această abordare este preferabilă analizei manuale a șirului, deoarece gestionează automat codificarea procentuală și decodificarea caracterelor speciale în valorile parametrilor.

Cum funcționează URL Scheme în Android

Android utilizează sistemul Intent Filter pentru rutarea deep link-urilor pe baza URL Scheme. Dezvoltatorul declară filtrul în AndroidManifest.xml în interiorul tagului Activity care trebuie să proceseze linkul. Filtrul conține action VIEW, categoriile BROWSABLE și DEFAULT, precum și tagul data cu specificarea schemei, hostului și pathPrefix.

Când utilizatorul face clic pe un link cu o schemă personalizată, sistemul verifică Intent Filter-urile tuturor aplicațiilor instalate. Dacă sunt găsite mai multe aplicații potrivite, utilizatorului i se afișează un dialog de selecție. Categoria BROWSABLE permite procesarea linkului din browser.

Configurarea Intent Filter

Exemplu de declarare a Intent Filter în AndroidManifest.xml pentru procesarea schemei myapp pe o Activity. Combinația dintre action și category este obligatorie pentru rutarea corectă a deep link-ului.

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>

După configurarea filtrului, în Activity trebuie apelat intent.getData() pentru a obține URI-ul. Este important să verificați intent și datele pentru null, deoarece Activity poate fi lansată fără un deep link primit, de exemplu la pornirea standard din lansator.

Transmiterea parametrilor prin URL Scheme

Parametrii query în URL Scheme sunt transmiși după semnul întrebării în formatul cheie=valoare, separați prin ampersand. Acest format este identic cu cererile HTTP și este ușor procesat de instrumentele standard ale platformei. Parametrii trebuie codificați folosind codificarea procentuală pentru toate caracterele care nu fac parte din setul permis de URI.

Exemplu de link complet cu parametri: myapp://profile?userId=42&source=email&ref=abc123. După extragerea URL-ului, aplicația parsează secvențial toate query-items și pe baza valorilor lor ia o decizie de navigare către ecranul țintă.

Limitarea lungimii URI

La transmiterea datelor compuse este important să se țină cont de limitarea lungimii URI. În iOS, lungimea maximă a URL Scheme este limitată la 2 KB, după care sistemul trunchiază linkul. În Android, limita este de aproximativ 8 KB, dar valoarea exactă depinde de versiunea sistemului de operare și de producătorul dispozitivului. Pentru volume mari de date, se recomandă transmiterea doar a identificatorului de sesiune prin URL Scheme, iar restul datelor să fie încărcate de pe server.

Limitări și alternative ale URL Scheme

Principalul dezavantaj al URL Scheme — imposibilitatea de a procesa linkul dacă aplicația nu este instalată pe dispozitiv. Browserul afișează o eroare, iar utilizatorul pierde contextul tranziției. Pentru a rezolva această problemă, Apple a introdus Universal Links în iOS 9, iar Google — App Links în Android 6. Ambele mecanisme se înregistrează printr-un domeniu web asociat aplicației.

Universal Links și App Links funcționează ca linkurile HTTPS obișnuite, dar în prezența aplicației o deschid fără dialog de selecție. Dacă aplicația nu este instalată, linkul deschide o pagină web pe același domeniu, păstrând experiența utilizatorului. Acest lucru le face alternativa preferată pentru mediul de producție.

Mecanisme de fallback

Pentru URL Scheme pe iOS și Android nu există un mecanism de fallback încorporat. Dezvoltatorii utilizează soluții intermediare pe server: linkul duce către o pagină web care verifică instalarea aplicației prin JavaScript și redirecționează fie către schemă, fie către magazinul de aplicații. Firebase Dynamic Links și Branch.io oferă soluții gata făcute pentru această problemă cu suport pentru deferred deep link, care determină automat starea instalării și direcționează utilizatorul fără a fi nevoie să dezvolte propriul pipeline server.

O complexitate suplimentară apare la utilizarea URL Scheme în iOS 15+ și Android 12+, unde regulile de confidențialitate au fost înăsprite. Safari blochează încercările de a deschide o schemă neînregistrată fără confirmare prealabilă, iar Android 12 limitează vizibilitatea aplicațiilor instalate prin PackageManager. Aceste modificări fac utilizarea URL Scheme pentru interacțiunea între aplicații mai puțin fiabilă decât în versiunile anterioare ale platformelor.

Întrebări frecvente

Cu ce diferă URL Scheme de Universal Links?

URL Scheme utilizează un protocol personalizat fără criptare, iar Universal Links funcționează prin HTTPS cu verificarea domeniului. Universal Links nu afișează dialogul de selecție a aplicației și sunt procesate corect în absența aplicației pe dispozitiv.

Poate URL Scheme să conțină caractere chirilice?

Da, dar toate caracterele non-ASCII trebuie codificate prin percent-encoding conform RFC 3986. Se recomandă evitarea chirilicei în URL Scheme pentru a asigura compatibilitatea cu versiunile vechi ale sistemelor de operare și browserelor.

Câte URL Scheme poate înregistra o singură aplicație?

Nu există limitări privind numărul de scheme nici în iOS, nici în Android. În practică, aplicațiile utilizează de la una la cinci scheme. De exemplu, Telegram înregistrează schemele tg://, t.me/, telegram:// și telegram.me://.

Cum verific dacă dispozitivul suportă URL Scheme-ul meu?

În iOS se utilizează metoda canOpenURL(_:), care returnează true în prezența unei scheme înregistrate. În Android, verificarea se realizează prin PackageManager.queryIntentActivities(). Ambele platforme necesită specificarea prealabilă a schemei în configurație.

Se pot transmite parole prin URL Scheme?

Nu, URL Scheme nu criptează datele. Orice aplicație care a înregistrat aceeași schemă poate intercepta linkul. Pentru securitate, utilizați Universal Links cu HTTPS sau criptarea datelor la nivel de protocol.

Concluzii

  • URL Scheme — un protocol URI personalizat pentru interacțiunea între aplicații pe platformele mobile conform standardului RFC 3986.
  • Înregistrarea schemei se realizează în Info.plist pentru iOS și în AndroidManifest.xml pentru Android prin mecanismul Intent Filter.
  • Procesarea linkului primit în iOS are loc prin delegatul aplicației, în Android — prin intent.getData() în Activity-ul țintă.
  • Parametrii sunt transmiși prin query-string cu codificare procentuală și limită de lungime de până la 2 KB pe iOS.
  • Limitare — URL Scheme nu funcționează în absența aplicației; sunt necesare Universal Links sau App Links pentru un fallback corect.
  • Alternative — Universal Links (iOS), App Links (Android) și platformele comerciale Firebase Dynamic Links și Branch.io.
  • Securitate — URL Scheme nu criptează datele, prin urmare nu este potrivit pentru transmiterea informațiilor confidențiale.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și