Deep Link: vad det är, typer av länkar och funktionsprincip

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

Deep Link (djup länk) är en URL som leder användaren till en specifik skärm eller specifikt innehåll i en mobilapp, utan att gå via startsidan. Till skillnad från en vanlig länk till en webbplats aktiverar deep link appen och öppnar direkt mål-innehållet. Enligt Android Developers ökar korrekt konfigurerade deep link konverteringen till målåtgärden med 30–50% genom att minska antalet steg till innehållet.

Huvudpunkter

  • Deep Link — en URL som öppnar en specifik app-skärm, inte startsidan
  • URI-schema (myapp://profile/123) — den klassiska deep link-metoden, fungerar på båda plattformarna
  • Deferred Deep Link — en länk som aktiveras efter att appen har installerats och överför sammanhang
  • Universal Link (iOS) och App Link (Android) — evolution av deep link med domänverifiering
  • Contextual Deep Link — överför ytterligare parametrar: kampanjkod, referrer, trafikkälla

Deep Link (djup länk) är en URI som när den klickas öppnar inte en webbsida utan en specifik skärm i en mobilapp. Tekniken löser ett grundläggande problem med mobilplattformar: webbläsaren kan inte direkt öppna en app-skärm, och deep link skapar en bro mellan webben och native-kod. Utan deep link hamnar användaren alltid på startsidan och måste manuellt navigera till önskat innehåll.

Arkitekturen för deep link består av två delar: schemat (scheme) bestämmer vilken app som ska hantera länken, och sökvägen (path) anger en specifik resurs i appen — en produkt, artikel, användarprofil eller inställningssektion. Frågeparametrar (?source=push&campaign=summer) överför extra sammanhang för analys, personalisering och kampanjattribuering.

Det är viktigt att skilja på deep link och vanlig länk. En vanlig länk (https://example.com/product/42) öppnas i webbläsaren och leder till webbsidan. Deep link (myapp://product/42) öppnar, om appen är installerad, den inbyggda skärmen med samma innehåll, och om appen saknas visas ett fel. Just för att lösa problemet med sömlös fallback skapades Universal Link (iOS) och App Link (Android).

Olika uppgifter kräver olika typer av deep link. Vissa länkar fungerar bara med installerad app, andra kan vänta på installation, och ytterligare andra överför analyssammanhang. Valet av typ beror på användningsscenariot: reklamkampanj, push-notis, innehållsdelning eller e-postutskick.

Standard Deep Link

Standard Deep Link är den grundläggande typen som bara aktiveras om appen redan är installerad på enheten. Användaren klickar på länken myapp://product/42, systemet identifierar det registrerade schemat och öppnar appen på rätt skärm. Om appen inte är installerad visar webbläsaren ett fel “Sidan hittades inte” eller gör ingenting. Denna typ passar för intern navigering i en redan installerad app.

Konfiguration av standard deep link är enkel: registrera URI-schemat i manifestet (Android) eller Info.plist (iOS). Ingen servervalidering eller SSL-certifikat krävs. Men just på grund av avsaknaden av fallback anses denna typ vara föråldrad för marknadsföringskampanjer — trafikförlusten från användare utan appen uppgår till 60%.

Deferred Deep Link (uppskjuten djup länk)

Deferred Deep Link löser huvudproblemet med vanliga deep link: den fungerar även om appen inte är installerad. Användaren klickar på länken → ser en sida (landningssida eller App Store/Google Play) → installerar appen → vid första start hämtar appen sammanhanget från den ursprungliga länken och öppnar rätt skärm. Tekniken kräver ett SDK-mellanled (AppsFlyer, Branch, Adjust) som sparar sammanhanget på servern fram till första start.

Branch är en av de mest populära plattformarna för deferred deep link. Den tillhandahåller en enhetlig länk som fungerar på alla plattformar: identifierar användarens operativsystem, omdirigerar till appbutiken och överför efter installation sammanhanget (kampanjkod, produkt-ID, kampanjkälla). Enligt Branch (2024) ökar deferred deep link konverteringen i reklamkampanjer med 40–70%.

Contextual Deep Link (kontextuell djup länk)

Contextual Deep Link är en vanlig eller deferred deep link som kompletterats med sammanhangsparametrar: trafikkälla (source), kampanj (campaign), kampanjkod, referrer, partner-ID. Parametrarna överförs i URL:en och bearbetas av appen för personalisering: visa en välkomstbonus, öppna en produkt med rabatt, registrera installationsanalys.

UTM-taggar (utm_source, utm_medium, utm_campaign) är ett standardsätt att överföra sammanhang. Inom mobil är kontextuella deep link kritiska för attribuering: utan dem vet appägaren inte vilken kanal som ledde användaren — organisk trafik, Facebook-annons, e-postutskick eller QR-kod. Kvalitativ attribuering kräver integration med MMP (Mobile Measurement Partner).

Deep Link-typKräver installationVäntar på installationSammanhang
StandardJaNejEndast i URL
DeferredNejJaServerlagring
ContextualValfriValfriUTM + parametrar

iOS stöder deep link via två mekanismer: det gamla Custom URL Scheme och moderna Universal Link (iOS 9+). Custom URL Scheme fungerar genom att registrera ett anpassat schema i Info.plist. Appen registrerar myapp://, och iOS öppnar appen när en sådan länk klickas. Problemet: om inget program har registrerat schemat visar webbläsaren ett fel.

Hantering av deep link på iOS sker via AppDelegates metod application(_:open:options:) eller SceneDelegates scene(_:openURLContexts:). Utvecklaren extraherar URL:en, tolkar sökväg och parametrar och navigerar sedan till motsvarande skärm. Om SwiftUI används sker hanteringen via OpenURLAction eller onChange(of: openURL). Det är viktigt att korrekt hantera tillståndet: appen kan vara ostartad, minimerad eller aktiv.

Säkerhet på iOS är strikt: Custom URL Scheme kan fångas upp av vilken app som helst som registrerat samma schema. Detta är en potentiell sårbarhet (URL Scheme hijacking). Därför rekommenderar Apple Universal Link som ett säkrare alternativ: endast den verifierade domänägaren kan associera länkar med appen. Mer om Universal Link finns i artikeln Universal Link.

Android implementerar deep link via Intent Filter i AndroidManifest.xml. Appen definierar en Activity som hanterar ett specifikt schema (myapp://) eller specifika värdar och sökvägar. När användaren klickar på en deep link söker Android efter en Activity med matchande Intent Filter och öppnar den. Om flera Activities matchar visar systemet en dialogruta för appval.

xml
// AndroidManifest.xml — Intent Filter för Deep Link
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <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="product"
            android:pathPrefix="/" />
    </intent-filter>
</activity>

Hantering av deep link i Android sker i Activitys onCreate() eller onNewIntent()-metod. Utvecklaren får Intent, extraherar URI och anropar navigering. För Jetpack Navigation gör komponenten Navigation Deep Link det möjligt att deklarativt beskriva deep link i navigeringsgrafen. Android App Link (Android 6.0+) är en evolution av deep link med verifiering via Digital Asset Links, vilket eliminerar dialogrutan för appval.

Det är viktigt att ta hänsyn till Android 12+-ändringar: från och med API 31 kräver systemet att exported=true anges explicit för Activity som hanterar deep link, och kontrollerar att Intent Filter är korrekt. Google Play Store kontrollerar App Link-verifiering vid publicering. Utan verifiering kan Google avvisa en uppdatering om deep link leder till icke-existerande webbsidor.

Konfiguration av deep link omfattar flera steg som är gemensamma för båda plattformarna. Första steget är att bestämma schema och URL-struktur. Det rekommenderas att använda https-schema (istället för anpassat) för kompatibilitet med Universal Link och App Link. URL-strukturen bör spegla webbplatsens struktur: /product/42, /profile/john, /settings/notifications. Detta förenklar underhåll och indexering av innehåll för sökmotorer.

Andra steget är att hantera deep link i appkoden. För Android rekommenderas Jetpack Navigation med deklarativa deep link i nav_graph. För iOS rekommenderas SwiftUI NavigationStack med hantering via OpenURLAction. Det är viktigt att hantera tre apptillstånd: cold start (appen är inte startad), warm start (minimerad) och active (på skärmen). Varje tillstånd kräver olika navigeringslogik.

  • Bestämma schema och URL-struktur (myapp:// eller https://your.domain/)
  • Registrera schemat i manifestet (Android) eller Info.plist (iOS)
  • Implementera hantering i Activity eller AppDelegate/SwiftUI
  • Konfigurera fallback för fallet att appen inte är installerad
  • Testa alla tre tillstånd: cold start, warm start, active

Testning av deep link är en separat uppgift. Android Studio tillhandahåller verktyget App Links Assistant för att kontrollera Intent Filter. På iOS utförs testning via Xcode med URL-överföring via startschemaargument. Det rekommenderas att konfigurera CI-kontroll: automatisk övergång via deep link och verifiering att rätt skärm öppnades. För deferred deep link omfattar testning hela cykeln “installation → första start → sammanhang”. Utan testning går deep link ofta sönder vid uppdatering av navigeringen i appen.

Vanliga frågor

Vad är skillnaden mellan deep link och en vanlig länk?

Vanlig länk (https://site.com/page) öppnas i webbläsaren. Deep link (myapp://page eller https://site.com/page med verifiering) öppnar en skärm i mobilappen. Deep link kan också överföra sammanhang: kampanjkod, trafikkälla, referent-ID.

Vad är ett URI-schema och varför behövs det?

URI-schema är ett URL-prefix som bestämmer vilken app som ska hantera länken (t.ex. myapp://, vk://, tg://). Systemet använder schemat för routing: hittar appen som registrerat schemat och skickar URL:en till den för bearbetning.

Hur fungerar en deferred deep link?

Användaren klickar på länken → tjänsten (Branch, AppsFlyer) sparar sammanhanget → omdirigerar till App Store/Google Play → efter installation och första start skickar SDK det sparade sammanhanget till appen → appen öppnar rätt skärm, som om användaren redan hade appen installerad.

Kan jag använda deep link utan installerad app?

Vanlig deep link — nej. Deferred deep link — ja, via en mellanliggande sida som omdirigerar till appbutiken och sparar sammanhanget. Universal Link och App Link öppnar webbplatsen som fallback om appen inte är installerad.

Hur testar man deep link på riktiga enheter?

På Android använd adb: adb shell am start -W -a android.intent.action.VIEW -d “myapp://product/42”. På iOS — xcrun simctl openurl booted “myapp://product/42”. För båda plattformarna finns testkonsoler från Firebase Dynamic Links och Branch.

Sammanfattning

  • Deep Link — en URL som öppnar en specifik app-skärm, inte startsidan eller webbplatsen
  • Tre typer — Standard (endast med installerad app), Deferred (väntar på installation), Contextual (med UTM-parametrar)
  • Custom URL Scheme (myapp://) — enkel metod men utan fallback när appen saknas
  • Universal Link och App Link — evolution av deep link med domänverifiering och webbläsar-fallback
  • iOS hanterar deep link via AppDelegate/SceneDelegate, Android via Intent Filter
  • Deferred Deep Link kräver SDK-mellanled (Branch, AppsFlyer) för att lagra sammanhang före installation
  • Testning av alla tre tillstånd (cold, warm, active) är ett obligatoriskt steg vid konfiguration av deep link

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å