02/02/2023
I den digitale tidsalder er det afgørende at levere en problemfri og intuitiv brugeroplevelse. En central del af dette er evnen til at guide brugere direkte til det mest relevante indhold, uanset om det er på en hjemmeside eller i en installeret app. Dette koncept er kendt som Deep Linking. Når en bruger klikker på et link i en webbrowser på sin mobiltelefon og automatisk åbner den tilhørende app på et specifikt sted, er det dybdeling i praksis. Denne guide fokuserer udelukkende på, hvordan du udløser en app-åbning fra en webside på mobil, og dykker ned i Android App Links, Googles løsning til at strømline denne proces.

Android-platformen har historisk set været kendt for sin fragmentering. På grund af Googles beslutning om at give enhedsproducenterne ansvaret for at portere operativsystemet, har der været et væld af forskellige versioner, tilpasninger og tekniske krav, som udviklere har skullet navigere i. Denne kompleksitet har desværre også præget dybdeling på Android, hvor udviklere gennem årene har stået over for en række tekniske krav, der afhang af brugerens omstændigheder og kontekst. Dette har gjort det til en udfordrende opgave at sikre, at links altid fungerer som forventet på tværs af et bredt spektrum af enheder og Android-versioner.
Hvad er Deep Linking?
Deep linking er processen med at linke til specifikt indhold inden for en mobilapp, frem for blot at åbne appen til dens standard startskærm. Forestil dig, at du ser en specifik produktkategori på en webshop i din mobilbrowser. Med deep linking kan et klik på et link potentielt åbne den tilsvarende app direkte på den samme produktkategori, hvilket sparer brugeren for besværet med at navigere manuelt. Dette skaber en mere flydende og integreret oplevelse mellem web og app, hvilket er afgørende for at fastholde brugere og forbedre konverteringsrater.
Det er vigtigt at skelne mellem deep linking fra en webbrowser og deep linking fra links inde i andre apps. I denne artikel fokuserer vi udelukkende på det første scenarie, hvor en bruger interagerer med et link på en hjemmeside, og dette link derefter udløser åbningen af en installeret app. Målet er at give dig den viden, der er nødvendig for at implementere denne funktionalitet effektivt for din egen Android-app.
Udfordringerne ved Deep Linking på Android
Som nævnt er Android kendt for sin fragmentering, hvilket har skabt betydelige udfordringer for app-udviklere, der ønsker at implementere robust deep linking. Tidligere versioner af Android krævede ofte forskellige tilgange, og der var ingen ensartet standard for, hvordan en app skulle håndtere indgående links. Dette resulterede ofte i det såkaldte 'disambiguation dialog' – en pop-up, der spurgte brugeren, om de ville åbne indholdet i browseren eller i en specifik app, selvom appen var den tilsigtede destination. Dette ekstra trin kan virke lille, men det tilføjer friktion til brugerrejsen og kan føre til et fald i engagementet.
Udover dialogboksen har udviklere også kæmpet med at sikre, at links fungerede korrekt på tværs af forskellige Android-versioner og enhedsproducenter. En løsning, der virkede på én Samsung-telefon, fungerede måske ikke på en OnePlus, eller en løsning for Android 9 fungerede ikke for Android 11. Dette krævede omfattende test og ofte komplekse kodeløsninger for at håndtere alle tænkelige scenarier. Det er netop disse udfordringer, som Android App Links søger at løse ved at tilbyde en mere standardiseret og sikker metode til dybdeling.
Android App Links: En Overblik
Android App Links er Googles officielle og anbefalede løsning til at tage brugere direkte til specifikt indhold i din app. Deres primære formål er at eliminere det tidligere nævnte 'disambiguation dialog', hvor brugeren skulle vælge mellem at se indholdet på mobilwebsiden eller i appen. Med App Links kan din app blive den standardejer af en given linktype, hvilket giver en meget mere glidende og forudsigelig brugeroplevelse.
Nøglefunktionerne ved Android App Links er:
- Brug af HTTP og HTTPS URL'er: I modsætning til ældre dybdelingsmetoder, der kunne bruge brugerdefinerede skemaer (f.eks.
myapp://), anvender App Links standard web-URL'er (http://oghttps://). Dette gør dem mere kompatible med web-økosystemet og lettere at implementere for webudviklere. - Sikkerhed og Ejerskab: App Links giver dig mulighed for at bevise, at din app er den officielle ejer af et bestemt domæne. Dette forhindrer andre apps i at kapre dine links og videresende brugere til deres eget indhold, hvilket øger sikkerheden og tilliden.
- Problemfri Brugeroplevelse: Når din app er verificeret som ejer af domænet, vil links, der peger på dit domæne, automatisk åbne din app uden at spørge brugeren om at vælge. Dette er den største fordel og forbedrer brugerflowet markant.
- Fallback til Mobilhjemmeside: Et vigtigt aspekt ved App Links er, at brugere, der ikke har din app installeret, automatisk vil blive sendt til den tilsvarende side på din mobilhjemmeside. Dette understreger vigtigheden af at have en velkonfigureret mobilhjemmeside, der kan håndtere disse URL'er, for at undgå 404-fejl og sikre en god brugeroplevelse for alle.
Samlet set repræsenterer Android App Links en robust og fremtidssikker måde at implementere dybdeling på, der adresserer de historiske udfordringer med fragmentering og usikkerhed.
Sådan Opretter Du Android App Links: En Trin-for-Trin Guide
At implementere Android App Links kræver en række specifikke trin i din app's kode og konfiguration. Det er en proces, der sikrer, at dit domæne og din app er ordentligt forbundet og verificeret af Android-systemet. Følgende er de fire primære trin, du skal igennem for at opsætte Android App Links korrekt.
Trin 1: Opret Intent Filtre
For at Android-systemet skal vide, at din app kan håndtere specifikke URL'er, skal du definere Intent Filtre i din app's manifestfil (AndroidManifest.xml). Disse filtre fortæller systemet, hvilke typer af 'intents' – altså handlinger eller anmodninger – din app er i stand til at reagere på. Når det kommer til dybdeling, handler det om at lytte efter indgående URL'er.
Inden for din <activity>-tag i manifestet skal du tilføje et <intent-filter> med følgende elementer og attributværdier:
<action android:name="android.intent.action.VIEW" />: Dette angiver, at intent-filtret kan nås fra Google Søgning eller andre web-link-klik.VIEW-handlingen er standard for at vise data til brugeren.<category android:name="android.intent.category.DEFAULT" />: Denne kategori er nødvendig for at din app kan reagere på implicitte intents. Implicitte intents er dem, der ikke eksplicit navngiver en komponent, men i stedet beskriver en handling, der skal udføres, og de data, der skal bruges.<category android:name="android.intent.category.BROWSABLE" />: Denne kategori er absolut afgørende, da den gør intent-filtret tilgængeligt fra en webbrowser. Uden den kan et klik på et link i en browser ikke dirigere brugere til din app. Det er denne kategori, der tillader et web-link at fungere som en 'startpunkt' for din app.<data>: Denne tag definerer URI-formatet, som filtret vil reagere på. Den skal inkludereandroid:scheme(entenhttpellerhttps),android:host(dit domænenavn, f.eks.www.eksempel.dk), og eventueltandroid:pathPrefixfor at specificere en sti inden for domænet (f.eks./produkter).android:autoVerify="true": Dette er en vigtig attribut, der blev introduceret for at automatisere verificeringsprocessen for App Links (mere om dette i Trin 3). Når denne er sat tiltrue, beder du Android-systemet om automatisk at bekræfte, at din app er den officielle ejer af de URL-domæner, der er defineret i dine intent-filtre.
Her er et eksempel på et intent-filter i et manifest for dybdeling, der bruger URI'en https://www.eksempel.dk/gadgets:
<intent-filter
android:autoVerify="true"
android:label="@string/filter_view_http_gadgets">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepterer URI'er, der starter med "https://www.eksempel.dk/gadgets" -->
<data android:scheme="https"
android:host="www.eksempel.dk"
android:pathPrefix="/gadgets" />
</intent-filter>
Bemærk, at du teknisk set kan bruge http i stedet for https, men dette kræver yderligere konfiguration (en netværkskonfigurations-XML-fil med cleartextTrafficPermitted=true). Det er dog vigtigt at understrege, at ukrypteret information (cleartext) ikke er sikker og bør undgås, hvor det er muligt, især for følsomme data.
Trin 2: Læs Data fra Indgående Intents
Når Android-systemet har dirigeret et indgående link (en intent) til din app, er næste skridt at udtrække de data, der er knyttet til linket. Disse data vil fortælle din app, hvilket specifikt indhold brugeren forsøgte at få adgang til, så du kan vise det korrekte skærmbillede eller indhold i appen.
Du skal kalde metoderne getData() og getAction() på den indgående intent for at hente de relevante oplysninger. getData() returnerer URI'en for det link, der udløste intenten, mens getAction() returnerer den handling, der blev udført (i dette tilfælde android.intent.action.VIEW).
Her er et kodeudsnit, der viser, hvordan du henter data fra en intent i Java:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
// Brug 'data' og 'action' til at bestemme, hvad der skal vises i appen
}
Og her er den tilsvarende kode i Kotlin:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
val intent: Intent = intent
val action: String? = intent.action
val data: Uri? = intent.data
// Brug 'data' og 'action' til at bestemme, hvad der skal vises i appen
}Når du har hentet URI'en (data-objektet), kan du parse den for at identificere stien og eventuelle query-parametre. For eksempel, hvis URI'en er https://www.eksempel.dk/gadgets?id=123, kan du udtrække /gadgets for at bestemme skærmbilledet og id=123 for at hente de specifikke gadget-detaljer. Dette er kernen i at levere en præcis dybdelingsoplevelse.
Trin 3: Verificer Ejerskab af Din App og Hjemmeside
Fra januar 2023 kræver Google Play Butikken, at alle nye apps og opdateringer som minimum er målrettet Android 12 (API-niveau 31). Med Android 12 og nyere versioner er det blevet et krav, at du verificerer ejerskabet af både din app og din hjemmeside for at kunne dybdelinke brugere til dit app-indhold. Denne verificering er en kritisk sikkerhedsforanstaltning, der sikrer, at kun den officielle app kan åbne links fra dit domæne.
Processen involverer to hoveddele:
1. Anmod om automatisk app-link-verificering i dit manifest
Som nævnt i Trin 1, sætter du android:autoVerify="true" i dit <intent-filter>. Dette signalerer til Android-systemet, at det skal forsøge at verificere, at din app er den retmæssige ejer af det domæne, der er angivet i dine intent-filtre. Verificeringen finder sted, når appen installeres, og systemet tjekker, om der findes en specifik fil på dit domæne, der bekræfter forbindelsen til din app.
For at android:autoVerify="true" skal fungere korrekt, skal dit intent-filter også inkludere android.intent.action.VIEW og android.intent.category.BROWSABLE kategorierne, som beskrevet tidligere.
2. Deklarer forholdet mellem din hjemmeside og dine intent-filtre
For at bevise ejerskabet og lade Android-systemet verificere din app, skal du publicere en Digital Asset Links JSON-fil på din hjemmeside. Denne fil skal placeres på et specifikt sted:
https://dit.domænenavn/.well-known/assetlinks.json
Denne JSON-fil fungerer som et digitalt bevis, der forbinder dit webdomæne med din Android-app. Den indeholder oplysninger om din app, som Android-systemet kan læse og verificere.
Du skal bruge følgende oplysninger for at publicere Digital Asset Links JSON-filen:
namespace: Denne værdi skal altid være"android_app".package_name: Dette er applikations-ID'et, der er deklareret i din app'sbuild.gradle-fil (f.eks.com.ditfirma.dinapp).sha256_cert_fingerprints: Dette er SHA256-fingeraftrykket af din apps signeringscertifikat. Dette er afgørende, da det unikt identificerer din app. Du kan generere fingeraftrykket via Javakeytoolmed følgende kommando (erstatmy-release-key.keystoremed stien til din keystore-fil):
$ keytool -list -v -keystore my-release-key.keystore
Et eksempel på en assetlinks.json-fil kan se således ud (forestil dig, at dette er indholdet af filen på den angivne URL):
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.ditfirma.dinapp",
"sha256_cert_fingerprints":
["XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"]
}
}
]
Sørg for, at din assetlinks.json-fil opfylder følgende krav:
- Den skal serveres med
Content-Type: application/json. - Den skal være tilgængelig over en HTTPS-forbindelse, uanset om din apps intent-filtre deklarerer HTTPS som data-skemaet.
- Den skal være tilgængelig uden nogen omdirigeringer (ingen 301 eller 302 omdirigeringer) og skal være tilgængelig for bots (din
robots.txtskal tillade crawling af/.well-known/assetlinks.json). - Den skal publiceres på hvert domæne, hvis din app understøtter flere host-domæner.
Endelig kan du bekræfte, at Digital Asset Links JSON-filen er korrekt hostet og defineret ved at bruge Google's Digital Asset Links API eller en online validator. Dette trin er afgørende for at sikre, at Android-systemet kan udføre den automatiske verificering korrekt.
Trin 4: Test Dine URL-Intents
Efter at have verificeret de hjemmesider, der er forbundet med din app, og sikret, at den hostede JSON-fil er gyldig, er det tid til at teste. Installer appen på din enhed og vent mindst 20 sekunder på, at den asynkrone verificeringsproces er fuldført. Android-systemet tager et øjeblik at udføre verificeringen i baggrunden.
Du kan bruge adb (Android Debug Bridge) værktøjet til at kontrollere, om systemet har verificeret din app og indstillet de korrekte linkhåndteringspolitikker. Åbn en kommandoprompt eller terminal og kør følgende kommando for at simulere et linkklik:
adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://dit.domænenavn:valgfri_port/specifik_sti"
Erstat https://dit.domænenavn:valgfri_port/specifik_sti med en faktisk URL, som din app er konfigureret til at håndtere. Hvis opsætningen er korrekt, skal denne kommando åbne din app direkte på det tilsvarende indhold uden at vise en valgprompt.
Du kan også gennemgå en liste over de links, der håndteres af alle dine apps, med følgende kommando:
adb shell dumpsys package domain-preferred-apps
Outputtet vil vise dig alle linkhåndteringsadfærd for dine apps. Sørg for, at din app er indstillet til altid at åbne ved et linkklik. Du bør se noget lignende:
Package: din.app.pakke
Domains: dit.domæne.com
Status: always: 20000000c
Den hexadecimal værdi (20000000c i eksemplet) er Android-systemets registrering for app-link-adfærd. Hvis status er 'always', betyder det, at din app er den foretrukne handler for de specificerede domæner, og brugerne vil opleve den problemfri dybdeling, du har arbejdet på at implementere.
Ofte Stillede Spørgsmål (FAQ)
Hvad er forskellen på dybdeling og Android App Links?
Dybdeling er det generelle koncept om at lede brugere til specifikt indhold inden for en mobilapp via et link. Android App Links er Googles specifikke implementering og anbefalede standard for dybdeling på Android. App Links bruger HTTP/HTTPS-URL'er og tilbyder automatisk verificering af domæneejerskab, hvilket giver en mere sikker og problemfri brugeroplevelse uden disambiguation-dialogbokse, i modsætning til ældre eller mere generiske dybdelingsmetoder.
Hvorfor er verificering af ejerskab vigtigt?
Verificering af ejerskab er afgørende for sikkerheden og brugertilliden. Ved at bevise, at din app ejer det webdomæne, den ønsker at dybdelinke fra, forhindrer du ondsindede apps i at kapre dine links og videresende brugere til uønsket indhold. Det sikrer, at kun din officielle app kan åbne links fra dit domæne, hvilket beskytter både dine brugere og dit brand.
Hvad sker der, hvis en bruger ikke har min app installeret?
Hvis en bruger klikker på et App Link, men ikke har din app installeret, vil Android-systemet automatisk omdirigere brugeren til den tilsvarende side på din mobilhjemmeside. Dette understreger vigtigheden af at have en responsiv og velkonfigureret mobilhjemmeside, der kan håndtere disse URL'er og give en god fallback-oplevelse, så brugeren ikke lander på en 404-fejlside.
Er Android App Links sikre?
Ja, Android App Links er designet med sikkerhed for øje. Kravet om verificering af domæneejerskab via Digital Asset Links-filen sikrer, at kun den app, der kan bevise sit tilhørsforhold til et givent domæne, kan håndtere dets links. Dette minimerer risikoen for link-kapring og phishing, hvilket gør App Links til en robust og pålidelig metode for dybdeling.
Kan jeg bruge HTTP i stedet for HTTPS til mine App Links?
Selvom det teknisk set er muligt at konfigurere dine App Links til at bruge HTTP, anbefales det på det kraftigste at bruge HTTPS. HTTPS giver en krypteret og sikker forbindelse, hvilket beskytter data under overførsel og opbygger tillid hos brugerne. Brug af HTTP kræver desuden yderligere konfiguration i din app (cleartextTrafficPermitted=true), hvilket åbner for potentielle sikkerhedsrisici, da data sendes ukrypteret. For den bedste sikkerhed og ydeevne bør du altid prioritere HTTPS.
At mestre dybdeling på Android, især med Android App Links, er en investering i en overlegen brugeroplevelse. Ved at eliminere friktion og guide dine brugere direkte til det indhold, de søger, styrker du engagementet, reducerer frafald og maksimerer værdien af din app. Selvom processen kan virke kompleks, er de definerede trin og den automatiske verificering designet til at gøre implementeringen mere ligetil end ældre metoder. Med en korrekt opsætning kan du sikre, at dine links altid fungerer, og at dine brugere får den bedst mulige oplevelse på tværs af web og app.
Hvis du vil læse andre artikler, der ligner Forstå Android App Links: Din Guide til Dybdeling, kan du besøge kategorien Mobilteknologi.
