URL Scheme: mi ez, hogyan működik és használják a fejlesztésben

Szerző: IT Sectr Megjelenés: 2026-05-14 Olvasási idő: 8 perc

Az URL Scheme egy egyedi URI-protokoll, amelyet a mobilalkalmazás regisztrál az operációs rendszerben a myapp://path formátumú hivatkozásokon keresztüli megnyitáshoz. A RFC 3986 szerint az URI séma meghatározza a cím összes további összetevőjének szintaxisát és szemantikáját. Egy ilyen hivatkozásra kattintva a rendszer azonosítja a regisztrált alkalmazást az egyedi azonosító alapján, és elindítja a hivatkozásból kinyert paraméterekkel. A Deep link URL Scheme alapján továbbra is az alkalmazások közötti navigáció alapvető mechanizmusa marad a mobil platformokon, a modernebb alternatívák megjelenése ellenére.

Főbb pontok

  • URL Scheme — egyedi hivatkozásprotokoll myapp://path formátumban, amelyet az alkalmazás regisztrál más alkalmazásokból vagy böngészőből történő megnyitáshoz.
  • Szintaxis tartalmazza a sémát, hostot, elérési utat és query-paramétereket az RFC 3986 szabvány szerint, ami rugalmas adatátvitelt biztosít az alkalmazások között.
  • iOS a CFBundleURLTypes-t használja az Info.plist-ben és az AppDelegate delegáltat a beérkező URL Scheme-ek navigációs paraméterekkel történő feldolgozásához.
  • Android Intent Filter-t alkalmaz az AndroidManifest.xml-ben action, category és data megadásával a deep link cél Activity-hez irányításához.
  • Korlátozás — az URL Scheme nem működik az alkalmazás hiányában, amit az Universal Links iOS-en és az App Links Android-on old meg.

Mi az URL Scheme?

URL Scheme — egy egyedi protokollazonosító, amelyet az alkalmazás regisztrál az operációs rendszerben, hogy egyedi hivatkozásokon keresztül hívásokat fogadhasson. Amikor a felhasználó egy myapp://profile/123 formátumú hivatkozásra kattint, a rendszer azonosítja a myapp sémát regisztráló alkalmazást, és átadja neki a vezérlést a teljes URI-val. Ez a mechanizmus lehetővé teszi az alkalmazások számára, hogy adatokat cseréljenek és megnyissák egymást szerverinfrastruktúra nélkül.

Az URL Scheme koncepciója közvetlenül a RFC 3986 webes szabványokból származik, ahol az URI séma minden univerzális erőforrás-azonosító első összetevője. A mobilfejlesztésben ezt az ötletet az alkalmazások közötti kommunikációhoz adaptálták, ahol a HTTP szerver helyett maga a hivatkozást feldolgozó alkalmazás működik.

Ismert URL Scheme példák

Számos népszerű alkalmazás regisztrálja saját URL Scheme-jét külső szolgáltatásokkal való integrációhoz. Például a Spotify a spotify:// sémát, a Telegram a tg://, az Instagram pedig az instagram:// sémát használja. A fejlesztők gyakran hoznak létre appname:// formátumú sémát belső navigációhoz és képernyők teszteléséhez.

Az URL Scheme-eket még mindig széles körben használják push értesítésekben, e-mail kampányokban és QR kódokban, ahol az alkalmazás egy adott szakaszába történő azonnali átlépés szükséges. Az iOS 9 és Android 6 óta azonban alternatív mechanizmusok jelentek meg, amelyek fokozatosan kiegészítik és felváltják a puszta sémákat.

URL Scheme szintaxis: séma, host és elérési út

Az egyedi URI szerkezete az általános RFC 3986 specifikációnak felel meg, és több összetevőből áll. A séma kerül megadásra elsőként, és kettőspont választja el a cím többi részétől. A séma után host, port, elérési út, query-paraméterek és fragment következhet, amelyek mindegyike opcionális.

A teljes szintaxis a következőképpen néz ki: scheme://host/path?key=value#fragment. A séma az egyetlen kötelező elem, a többit az adott implementáció igényei határozzák meg. A séma utáni dupla perjel történetileg a HTTP-ből származik, és a specifikáció szerint nem szigorúan kötelező, de konvencióként mindenhol használatos.

URI összetevők

Az URI szerkezetének vizuális megjelenítéséhez egy összetevőtáblázatot használunk. Minden elemnek megvan a maga célja és kötelező szintje.

ÖsszetevőPéldaKötelezőség
SchememyappIgen
HostprofileNem
Path/user/42Nem
Query?id=42&tab=mainNem
Fragment#section2Nem

A fejlesztők szabadon választhatják meg az URI szerkezetét, ami rugalmasságot biztosít, de kompatibilitási problémákat okoz az alkalmazás különböző verziói között. Javasolt az URL Scheme formátumot az alkalmazás nyilvános API-jának részeként dokumentálni és változtatáskor verziózni.

Hogyan működik az URL Scheme iOS-ben

Az iOS megköveteli minden URL Scheme explicit regisztrációját a projekt Info.plist fájljában. A fejlesztő hozzáad egy CFBundleURLTypes tömböt, amelynek minden eleme tartalmaz egy azonosítót (CFBundleURLName) és a támogatott sémák listáját (CFBundleURLSchemes). Regisztráció után a rendszer automatikusan a regisztrált sémákra érkező összes hívást az alkalmazáshoz irányítja.

A beérkező URL Scheme feldolgozása az alkalmazás delegáltjában történik a application(_:open:options:) metóduson keresztül. Ez a metódus egy URL objektumot kap, amelyből az elérési út és a query-paraméterek kerülnek kinyerésre a navigációs döntés meghozatalához. A feldolgozásnak egy Bool értéket kell visszaadnia, amely jelzi a művelet sikerességét.

Feldolgozás az AppDelegate-ben

Az alábbiakban egy URL Scheme-kezelő implementációjának példája látható Swift nyelven. A kód bemutatja a host és a query-paraméterek kinyerését a beérkező URI-ból az URLComponents segítségével.

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
}

A metódus az URLComponents-et használja a query-paraméterek biztonságos elemzéséhez. Ez a megközelítés előnyösebb a karakterlánc manuális elemzésénél, mivel automatikusan kezeli a százalékos kódolást és a speciális karakterek dekódolását a paraméterértékekben.

Hogyan működik az URL Scheme Androidban

Az Android az Intent Filter rendszert használja a deep link-ek URL Scheme alapján történő irányításához. A fejlesztő deklarálja a szűrőt az AndroidManifest.xml-ben annak az Activity-nek a tag-jén belül, amelynek a hivatkozást kell feldolgoznia. A szűrő tartalmazza az action VIEW-t, a BROWSABLE és DEFAULT kategóriákat, valamint a data tag-et a séma, host és pathPrefix megadásával.

Amikor a felhasználó egy egyedi sémával rendelkező hivatkozásra kattint, a rendszer ellenőrzi az összes telepített alkalmazás Intent Filter-ét. Ha több megfelelő alkalmazást talál, a felhasználó számára egy választási párbeszédablak jelenik meg. A BROWSABLE kategória lehetővé teszi a hivatkozás feldolgozását a böngészőből.

Intent Filter beállítása

Példa az Intent Filter deklarálására az AndroidManifest.xml-ben a myapp séma Activity-n történő feldolgozásához. Az action és category kombinációja kötelező a deep link helyes irányításához.

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>

A szűrő beállítása után az Activity-ben meg kell hívni az intent.getData()-t az URI megszerzéséhez. Fontos ellenőrizni az intent-et és az adatokat null-ra, mivel az Activity beérkező deep link nélkül is elindulhat, például a launcher-ből történő szabványos indításkor.

Paraméterek átadása URL Scheme segítségével

A query-paraméterek az URL Scheme-ben a kérdőjel után kerülnek átadásra kulcs=érték formátumban, ampersanddal elválasztva. Ez a formátum megegyezik a HTTP kérésekkel, és könnyen feldolgozható a platform szabványos eszközeivel. A paramétereket százalékos kódolással kell kódolni az URI megengedett készletébe nem tartozó összes karakter esetében.

Példa egy teljes hivatkozásra paraméterekkel: myapp://profile?userId=42&source=email&ref=abc123. Az URL kinyerése után az alkalmazás egymás után feldolgozza az összes query-items-t, és azok értékei alapján navigációs döntést hoz a célképernyőre.

URI hosszának korlátozása

Összetett adatok átadásakor fontos figyelembe venni az URI hosszának korlátozását. iOS-ben az URL Scheme maximális hossza 2 KB-ra korlátozódik, ami után a rendszer levágja a hivatkozást. Androidban a határ körülbelül 8 KB, de a pontos érték az operációs rendszer verziójától és a készülék gyártójától függ. Nagy adatmennyiségek esetén javasolt csak a munkamenet-azonosító átadása URL Scheme segítségével, a többi adatot pedig a szerverről betölteni.

Az URL Scheme korlátozásai és alternatívái

Az URL Scheme fő hátránya — a hivatkozás feldolgozásának képtelensége, ha az alkalmazás nincs telepítve a készülékre. A böngésző hibát jelez, és a felhasználó elveszíti az átmenet kontextusát. A probléma megoldására az Apple bevezette az Universal Links szolgáltatást iOS 9-ben, a Google pedig az App Links szolgáltatást Android 6-ban. Mindkét mechanizmus az alkalmazáshoz kapcsolt webdomainen keresztül regisztrálódik.

Az Universal Links és az App Links úgy működnek, mint a szokásos HTTPS hivatkozások, de ha az alkalmazás telepítve van, kiválasztási párbeszéd nélkül nyitják meg azt. Ha az alkalmazás nincs telepítve, a hivatkozás ugyanazon a doménen nyit meg egy weboldalt, megőrizve a felhasználói élményt. Ez teszi őket előnyös alternatívává a production környezetben.

Fallback mechanizmusok

Az URL Scheme-hez iOS-en és Androidon nincs beépített fallback mechanizmus. A fejlesztők köztes szerver megoldásokat használnak: a hivatkozás egy weboldalra vezet, amely JavaScript segítségével ellenőrzi az alkalmazás telepítését, és vagy a sémára, vagy az alkalmazásboltba irányít át. A Firebase Dynamic Links és a Branch.io kész megoldásokat kínálnak erre a problémára deferred deep link támogatással, amelyek automatikusan meghatározzák a telepítési állapotot, és átirányítják a felhasználót anélkül, hogy saját szerver pipeline-t kellene fejleszteni.

További bonyodalom merül fel az URL Scheme használatakor iOS 15+ és Android 12+ esetén, ahol szigorították az adatvédelmi szabályokat. A Safari blokkolja a nem regisztrált séma megnyitására tett kísérleteket előzetes megerősítés nélkül, az Android 12 pedig korlátozza a telepített alkalmazások láthatóságát a PackageManageren keresztül. Ezek a változtatások kevésbé megbízhatóvá teszik az URL Scheme használatát az alkalmazások közötti interakcióhoz, mint a platformok korábbi verzióiban.

Gyakran Ismételt Kérdések

Miben különbözik az URL Scheme az Universal Links-től?

Az URL Scheme egyedi protokollt használ titkosítás nélkül, míg az Universal Links HTTPS-en keresztül működik domain ellenőrzéssel. Az Universal Links nem hív fel alkalmazásválasztó párbeszédablakot, és helyesen kerül feldolgozásra, ha az alkalmazás nincs jelen a készüléken.

Tartalmazhat az URL Scheme cirill betűket?

Igen, de az összes nem ASCII karaktert percent-encoding segítségével kell kódolni az RFC 3986 szerint. Javasolt kerülni a cirill betűket az URL Scheme-ben a régebbi operációs rendszer- és böngészőverziókkal való kompatibilitás biztosítása érdekében.

Hány URL Scheme-t regisztrálhat egy alkalmazás?

Nincs korlátozás a sémák számában sem iOS-ben, sem Androidban. A gyakorlatban az alkalmazások egy-öt sémát használnak. Például a Telegram regisztrálja a tg://, t.me/, telegram:// és telegram.me:// sémákat.

Hogyan ellenőrizhető, hogy a készülék támogatja-e az URL Scheme-met?

iOS-ben a canOpenURL(_:) metódust használjuk, amely true értéket ad vissza, ha létezik regisztrált séma. Androidban az ellenőrzés a PackageManager.queryIntentActivities() segítségével történik. Mindkét platform megköveteli a séma előzetes megadását a konfigurációban.

Lehet jelszavakat átadni URL Scheme segítségével?

Nem, az URL Scheme nem titkosítja az adatokat. Bármely alkalmazás, amely regisztrálta ugyanazt a sémát, el tudja kapni a hivatkozást. Biztonság érdekében használjon Universal Links-et HTTPS-sel vagy adattitkosítást protokoll szinten.

Összegzés

  • URL Scheme — egyedi URI protokoll az alkalmazások közötti interakcióhoz mobil platformokon az RFC 3986 szabvány szerint.
  • Regisztráció a séma az Info.plist-ben történik iOS esetén és az AndroidManifest.xml-ben Android esetén az Intent Filter mechanizmuson keresztül.
  • Feldolgozás a beérkező hivatkozás iOS-ben az alkalmazás delegáltján keresztül, Androidban az intent.getData() segítségével a cél Activity-ben történik.
  • Paraméterek query-string-en keresztül kerülnek átadásra százalékos kódolással, legfeljebb 2 KB hosszkorláttal iOS-ben.
  • Korlátozás — az URL Scheme nem működik az alkalmazás hiányában; Universal Links vagy App Links szükséges a megfelelő fallback-hez.
  • Alternatívák — Universal Links (iOS), App Links (Android) és a kereskedelmi platformok Firebase Dynamic Links és Branch.io.
  • Biztonság — az URL Scheme nem titkosítja az adatokat, ezért nem alkalmas bizalmas információk továbbítására.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is