URL Scheme: vad det är, hur det fungerar och används i utveckling

Författare: IT Sectr Publicerad: 2026-05-14 Lästid: 8 min

URL Scheme är ett anpassat URI-protokoll som mobilapplikationen registrerar i operativsystemet för att öppnas via länkar av typen myapp://path. Enligt RFC 3986 definierar URI-schemat syntaxen och semantiken för alla efterföljande komponenter i adressen. När en användare klickar på en sådan länk identifierar systemet den registrerade applikationen via en unik identifierare och startar den med parametrar som extraherats från länken. Deep link baserad på URL Scheme förblir den grundläggande mekanismen för navigering mellan applikationer på mobila plattformar, trots uppkomsten av mer moderna alternativ.

Huvudpunkter

  • URL Scheme — ett anpassat länkprotokoll av typen myapp://path som applikationen registrerar för att öppnas från andra applikationer eller webbläsaren.
  • Syntax inkluderar schema, värd, sökväg och query-parametrar enligt standarden RFC 3986, vilket möjliggör flexibel dataöverföring mellan applikationer.
  • iOS använder CFBundleURLTypes i Info.plist och AppDelegate-delegaten för att bearbeta inkommande URL Schemes med navigeringsparametrar.
  • Android tillämpar Intent Filter i AndroidManifest.xml med specificering av action, category och data för routning av deep link till mål-Activityn.
  • Begränsning — URL Scheme fungerar inte när applikationen saknas, vilket löses via Universal Links på iOS och App Links på Android.

Vad är URL Scheme?

URL Scheme — är en unik protokollidentifierare som applikationen registrerar i operativsystemet för att ta emot anrop via anpassade länkar. När en användare klickar på en länk som myapp://profile/123 identifierar systemet applikationen som registrerade schemat myapp och överför kontrollen med fullständig URI. Denna mekanism gör det möjligt för applikationer att utbyta data och öppna varandra utan serverinfrastruktur.

Konceptet URL Scheme är direkt hämtat från webbstandarderna RFC 3986, där URI-schemat är den första komponenten i varje universell resursidentifierare. Inom mobilutveckling har denna idé anpassats för kommunikation mellan applikationer, där istället för HTTP-server agerar själva applikationen som bearbetar länken.

Exempel på kända URL Schemes

Många populära applikationer registrerar egna URL Schemes för integration med tredjepartstjänster. Till exempel använder Spotify schemat spotify://, Telegram — tg://, och Instagram — instagram://. Utvecklare skapar också ofta ett schema av typen appname:// för intern navigering och testning av skärmar.

URL Schemes används fortfarande i stor utsträckning i push-notiser, e-postkampanjer och QR-koder, där omedelbar övergång till en specifik sektion av applikationen krävs. Från och med iOS 9 och Android 6 har dock alternativa mekanismer dykt upp som gradvis kompletterar och ersätter rena scheman.

URL Scheme-syntax: schema, värd och sökväg

Strukturen för en anpassad URI följer den allmänna specifikationen RFC 3986 och består av flera komponenter. Schemat anges först och separeras med kolon från resten av adressen. Efter schemat kan värd, port, sökväg, query-parametrar och fragment följa, som var och en är valfri.

Fullständig syntax ser ut som scheme://host/path?key=value#fragment. Schemat är det enda obligatoriska elementet, resten bestäms av behoven för den specifika implementeringen. Det dubbla snedstrecket efter schemat kommer historiskt från HTTP och är inte strikt obligatoriskt enligt specifikationen, men används överallt som en konvention.

URI-komponenter

För visuell representation av URI-strukturen används en komponenttabell. Varje element har sitt eget syfte och nivå av obligatoriskhet.

KomponentExempelObligatorisk
SchememyappJa
HostprofileNej
Path/user/42Nej
Query?id=42&tab=mainNej
Fragment#section2Nej

Utvecklare kan fritt välja URI-struktur, vilket ger flexibilitet men skapar kompatibilitetsproblem mellan olika versioner av applikationen. Det rekommenderas att dokumentera URL Scheme-formatet som en del av applikationens publika API och versionshantera det vid förändring.

Hur URL Scheme fungerar i iOS

iOS kräver explicit registrering av varje URL Scheme i projektets Info.plist-fil. Utvecklaren lägger till en array CFBundleURLTypes, där varje element innehåller en identifierare (CFBundleURLName) och en lista över scheman som stöds (CFBundleURLSchemes). Efter registrering dirigerar systemet automatiskt alla inkommande anrop till registrerade scheman till applikationen.

Bearbetning av inkommande URL Scheme sker i applikationsdelegaten via metoden application(_:open:options:). Denna metod tar emot ett URL-objekt från vilket sökväg och query-parametrar extraheras för att fatta ett navigeringsbeslut. Bearbetningen måste returnera ett Bool-värde som indikerar om operationen lyckades.

Bearbetning i AppDelegate

Nedan finns ett exempel på implementering av en URL Scheme-handler i språket Swift. Koden visar extrahering av värd och query-parametrar från inkommande URI med hjälp av 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
}

Metoden använder URLComponents för säker parsning av query-parametrar. Detta tillvägagångssätt är att föredra framför manuell parsning av strängen, eftersom det automatiskt hanterar procentkodning och avkodning av specialtecken i parametervärden.

Hur URL Scheme fungerar i Android

Android använder Intent Filter-systemet för routning av deep links baserat på URL Scheme. Utvecklaren deklarerar filtret i AndroidManifest.xml inuti taggen för Activityn som ska bearbeta länken. Filtret innehåller action VIEW, kategorierna BROWSABLE och DEFAULT, samt taggen data med specifikation av schema, värd och pathPrefix.

När en användare klickar på en länk med ett anpassat schema kontrollerar systemet Intent Filters för alla installerade applikationer. Om flera matchande applikationer hittas visas en dialogruta för val. Kategorin BROWSABLE tillåter bearbetning av länken från webbläsaren.

Konfigurera Intent Filter

Exempel på deklaration av Intent Filter i AndroidManifest.xml för bearbetning av schemat myapp på en Activity. Kombinationen av action och category är obligatorisk för korrekt routning av 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>

Efter konfigurering av filtret måste intent.getData() anropas i Activityn för att hämta URI. Det är viktigt att kontrollera intent och data för null, eftersom Activityn kan startas utan inkommande deep link, till exempel vid standardstart från startprogrammet.

Överföring av parametrar via URL Scheme

Query-parametrar i URL Scheme skickas efter frågetecknet i formatet nyckel=värde, åtskilda med ampersand. Detta format är identiskt med HTTP-förfrågningar och bearbetas enkelt av plattformens standardverktyg. Parametrar måste kodas med hjälp av procentkodning för alla tecken som inte ingår i den tillåtna URI-uppsättningen.

Exempel på fullständig länk med parametrar: myapp://profile?userId=42&source=email&ref=abc123. Efter extrahering av URL tolkar applikationen sekventiellt alla query-items och baserat på deras värden fattar den ett navigeringsbeslut till målgskärmen.

Begränsning av URI-längd

Vid överföring av sammansatta data är det viktigt att ta hänsyn till begränsningen av URI-längden. I iOS är den maximala längden för URL Scheme begränsad till 2 KB, varefter systemet kapar länken. I Android är gränsen cirka 8 KB, men det exakta värdet beror på operativsystemets version och enhetstillverkaren. För stora datamängder rekommenderas att endast sessionsidentifieraren skickas via URL Scheme och resterande data laddas från servern.

Begränsningar och alternativ till URL Scheme

Den största nackdelen med URL Scheme — oförmågan att bearbeta länken om applikationen inte är installerad på enheten. Webbläsaren visar ett fel och användaren förlorar övergångskontexten. För att lösa detta problem introducerade Apple Universal Links i iOS 9 och Google App Links i Android 6. Båda mekanismerna registreras via en webdomän som är kopplad till applikationen.

Universal Links och App Links fungerar som vanliga HTTPS-länkar, men när applikationen är installerad öppnar de den utan valdialog. Om applikationen inte är installerad öppnar länken en webbsida på samma domän, vilket bevarar användarupplevelsen. Detta gör dem till det föredragna alternativet för produktionsmiljö.

Fallback-mekanismer

För URL Scheme på iOS och Android finns ingen inbyggd fallback-mekanism. Utvecklare använder mellanliggande serverlösningar: länken leder till en webbsida som kontrollerar installationen av applikationen via JavaScript och omdirigerar antingen till schemat eller till appbutiken. Firebase Dynamic Links och Branch.io erbjuder färdiga lösningar för detta problem med stöd för deferred deep links, som automatiskt bestämmer installationsstatus och dirigerar användaren utan att behöva utveckla en egen serverpipeline.

Ytterligare komplexitet uppstår vid användning av URL Scheme i iOS 15+ och Android 12+, där integritetsreglerna har skärpts. Safari blockerar försök att öppna ett oregistrerat schema utan föregående bekräftelse, och Android 12 begränsar synligheten av installerade applikationer via PackageManager. Dessa förändringar gör användningen av URL Scheme för interaktion mellan applikationer mindre tillförlitlig än i tidigare versioner av plattformarna.

Vanliga frågor

Vad skiljer URL Scheme från Universal Links?

URL Scheme använder ett anpassat protokoll utan kryptering, medan Universal Links fungerar via HTTPS med domänverifiering. Universal Links visar ingen valdialog för applikation och bearbetas korrekt när applikationen inte finns på enheten.

Kan URL Scheme innehålla kyrilliska tecken?

Ja, men alla icke-ASCII-tecken måste kodas via percent-encoding enligt RFC 3986. Det rekommenderas att undvika kyrilliska tecken i URL Scheme för att säkerställa kompatibilitet med äldre versioner av operativsystem och webbläsare.

Hur många URL Schemes kan en applikation registrera?

Det finns inga begränsningar för antalet scheman varken i iOS eller Android. I praktiken använder applikationer ett till fem scheman. Exempelvis registrerar Telegram scheman tg://, t.me/, telegram:// och telegram.me://.

Hur kontrollerar jag om enheten stöder mitt URL Scheme?

I iOS används metoden canOpenURL(_:) som returnerar true om ett registrerat schema finns. I Android görs kontrollen via PackageManager.queryIntentActivities(). Båda plattformarna kräver föregående specifikation av schemat i konfigurationen.

Kan lösenord skickas via URL Scheme?

Nej, URL Scheme krypterar inte data. Varje applikation som har registrerat samma schema kan fånga upp länken. För säkerhet, använd Universal Links med HTTPS eller datakryptering på protokollnivå.

Sammanfattning

  • URL Scheme — ett anpassat URI-protokoll för interaktion mellan applikationer på mobila plattformar enligt standarden RFC 3986.
  • Registrering av schemat sker i Info.plist för iOS och i AndroidManifest.xml för Android via Intent Filter-mekanismen.
  • Bearbetning av inkommande länk i iOS sker via applikationsdelegaten, i Android — via intent.getData() i mål-Activityn.
  • Parametrar skickas via query-sträng med procentkodning och längdbegränsning upp till 2 KB på iOS.
  • Begränsning — URL Scheme fungerar inte när applikationen saknas; Universal Links eller App Links krävs för korrekt fallback.
  • Alternativ — Universal Links (iOS), App Links (Android) och kommersiella plattformar Firebase Dynamic Links och Branch.io.
  • Säkerhet — URL Scheme krypterar inte data, därför är det inte lämpligt för överföring av känslig information.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också