App Link är en Android-mekanism (Android 6.0+) som automatiskt öppnar webblänkar i den installerade appen och hoppar över valdialogrutan. Termen introducerades av Google 2015 tillsammans med Android 6.0 Marshmallow. Enligt Android Developers använder App Link Digital Asset Links — kryptografisk verifiering via en fil på servern som bekräftar att domänen tillhör apputvecklaren.
Huvudpunkter
App Link (Android App Link) — är en standard HTTPS-länk som vid klick på en Android-enhet automatiskt öppnar den installerade appen utan att visa standarddialogrutan för val mellan webbläsare och app. Google introducerade App Link i Android 6.0 (API 23) som en lösning på problemet med “valdialogrutan” som minskade deep link-konverteringen på grund av ett extra klick och användarförvirring.
Den viktigaste innovationen: verifiering. Android kontrollerar om domänen verkligen tillhör apputvecklaren via Digital Asset Links API. Google Play Store verifierar App Link vid publicering och kan avvisa uppdateringen om verifieringen misslyckas. Detta gör App Link säkrare än Custom URL Scheme: ingen annan app kan fånga upp en länk till din domän.
Digital Asset Links — är ett öppet protokoll som Google använder inte bara för App Link utan också för att koppla webbplatser till appar i sökresultat, Google Assistant och Smart Lock for Passwords. Protokollet är baserat på kryptografisk verifiering: i assetlinks.json anges SHA256-avtrycket för appens signeringscertifikat, vilket utesluter förfalskning.
App Links arbetsprocess består av tre steg: verifiering av Digital Asset Links, bearbetning via Intent Filter och automatisk omdirigering. Varje steg är obligatoriskt. Om verifieringen misslyckas visar Android valdialogrutan — en sådan deep link fungerar som en vanlig, men utan fördelen med automatisk omdirigering.
Asset Links — JSON-fil som placeras på servern på adressen https://domän/.well-known/assetlinks.json. Filen innehåller en array av objekt med fälten: relation (en array av strängar som beskriver relationstypen), target (ett objekt med namespace och package_name för appen, samt sha256_cert_fingerprints — en array av SHA256-avtryck för signeringscertifikatet).
// assetlinks.json — minimal konfiguration av App Link
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:AD:A4:C5:AD:6B:01:14:79:6B:CB:12:6B:21:39:6F:EA"
]
}
}]
SHA256-avtryck erhålls från certifikatet som appen är signerad med. För debug-bygge används standard Android debug-certifikat, för release — certifikat från Google Play Console eller ditt eget certifikat. Viktigt: när signeringscertifikatet ändras (t.ex. vid övergång till App Signing by Google Play) måste assetlinks.json uppdateras på servern, annars slutar App Link att fungera.
Android kontrollerar App Link vid första klicket på en länk. Systemet laddar assetlinks.json från servern, jämför package_name och SHA256-avtryck med certifikatet för den installerade appen. Om data matchar markerar Android Intent Filter som verifierad, och alla efterföljande länkar till denna domän öppnas automatiskt utan dialog.
// AndroidManifest.xml — Intent Filter för App Link
<activity
android:name=".ui.ProductActivity"
android:exported="true">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/product" />
</intent-filter>
</activity>
autoVerify="true" — det obligatoriska attributet som instruerar Android att kontrollera assetlinks.json. Utan detta attribut kommer Intent Filter inte att verifieras och App Link aktiveras inte. Android stöder flera Intent Filters i en Activity — för olika värdar. Systemet kontrollerar varje värd separat. Verifieringen utförs asynkront och kan ta upp till 20 sekunder vid första övergången.
Efter framgångsrik verifiering öppnar Android automatiskt appen när användaren klickar på en länk som matchar den verifierade Intent Filter. Användaren ser ingen valdialogruta — appen öppnas omedelbart. Om appen inte är installerad öppnas länken i webbläsaren (som en vanlig webbsida). Detta är den ideala användarupplevelsen: sömlös övergång utan onödiga åtgärder.
Viktigt: automatisk omdirigering fungerar endast för HTTPS-schemat. App Link stöder inte HTTP (osäkert protokoll). Om användaren manuellt öppnar en HTTP-länk (t.ex. från SMS) utför Android ingen verifiering och visar valdialogrutan. Det rekommenderas att använda HTTPS för alla länkar som leder till appen och konfigurera HTTP → HTTPS-omdirigering på servern.
App Link är en evolution av Deep Link på Android, inte en ersättning. Skillnaden mellan dem är fundamental. Vanlig Deep Link (Custom URL Scheme) fungerar via Intent Filter med ett anpassat schema (myapp://) och utan autoVerify. Android kontrollerar inte om appen verkligen är kopplad till detta schema — vilken app som helst kan registrera myapp:// och fånga upp länkar.
App Link löser tre problem med Deep Link. För det första: säkerhet — verifiering via Digital Asset Links utesluter länkavlyssning. För det andra: användarupplevelse — frånvaron av valdialogruta ökar konverteringen till mååtgärden med 20–40%. För det tredje: indexering — Google indexerar HTTPS-länkar från App Link och kan visa dem i sökresultat som länkar till innehåll i appen.
Kompatibilitet: App Link fungerar på Android 6.0+ (99% av enheterna). För Android 5.x (Lollipop) används vanlig Deep Link med valdialogruta. Därför rekommenderas att stödja båda mekanismerna: App Link för moderna enheter och Custom URL Scheme som fallback för äldre versioner. Intent Filter med autoVerify="true" bryter inte bakåtkompatibiliteten — på Android < 6 ignoreras attributet.
| Egenskap | Deep Link | App Link |
|---|---|---|
| Schema | Anpassat (myapp://) | HTTPS (https://domän) |
| Verifiering | Nej | assetlinks.json |
| Valdialogruta | Visas | Automatisk omdirigering |
| Android-version | API 1+ | API 23+ (6.0+) |
| Google-indexering | Nej | Ja (HTTPS URL) |
Konfigurering av App Link kräver tre steg: konfiguration av Intent Filter i manifestet, placering av assetlinks.json på servern och kontroll av verifiering. Första steget — lägg till Intent Filter med android:autoVerify="true" i AndroidManifest.xml. Det är viktigt att ange HTTPS-schemat, värden och de sökvägar som appen ska bearbeta. Sökvägar kan innehålla jokertecken (*) för undermappar.
Andra steget — skapa assetlinks.json. Filen kan genereras via Android Studio (Tools → App Links Assistant). Assistenten hjälper också med felsökning och testning. Filen placeras på servern på sökvägen /.well-known/assetlinks.json. Servern måste returnera Content-Type: application/json och vara tillgänglig via HTTPS utan omdirigeringar. Google Play Console visar också verifieringsstatus för App Link i avsnittet Publishing.
Testning — tredje steget. Använd adb för kontroll: kommandot adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" öppnar appen. Om webbläsaren öppnas istället för appen — kontrollera assetlinks.json och autoVerify. Android Studio App Links Assistant innehåller en inbyggd testare: den visar verifieringsstatus för varje domän och sökväg. För automatisk testning, använd Android Testing Library med Intent Matcher.
Android 12 (API 31) införde förändringar i bearbetningen av App Link. En ny domänspecifik verifiering har lagts till: systemet kontrollerar varje länk separat, inte hela Intent Filter. Detta ökar säkerheten men kräver uppdatering av filen assetlinks.json när nya sökvägar läggs till. Android 12 introducerade också Android App Links Assistant tillsammans med ADB — kommandon för att hantera verifiering via shell.
Flera domäner — ett typiskt produktionsscenario. Appen kan bearbeta länkar från example.com, m.example.com och example.org. För varje domän krävs en separat assetlinks.json på motsvarande server. I manifestet läggs flera Intent Filters till — en per domän. Alla domäner måste vara tillgängliga via HTTPS och genomgå verifiering oberoende av varandra.
App Link och Jetpack Navigation — det rekommenderade sättet att bearbeta App Link i moderna Android-appar. Jetpack Navigation stöder deklarativa deep links i nav_graph.xml eller via NavDeepLinkRequest. Detta förenklar navigeringen: utvecklaren beskriver vilken skärm som öppnas under en viss URL, och Navigation-komponenten bearbetar själva Intent och återställer navigeringsstacken. Google rekommenderar att använda Jetpack Navigation för App Link.
// Bearbetning av App Link via Jetpack Navigation
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handleDeepLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleDeepLink(intent)
}
private fun handleDeepLink(intent: Intent) {
intent.data?.let { uri ->
navController.handleDeepLink(NavDeepLinkRequest
.Builder
.fromUri(uri)
.build()
)
}
}
}
Google Play Store kontrollerar App Link vid publicering. Om en Intent Filter med autoVerify anges i manifestet men assetlinks.json inte är tillgänglig eller är felaktig, kan Google Play avvisa uppdateringen med en varning. I utvecklarkonsolen (Policy and Programs → App Links) visas verifieringsstatus för varje domän. Före publicering, kontrollera alltid status — reparation efter avvisning av uppdateringen försenar lanseringen.
Vanliga frågor
App Link — är en Deep Link med verifiering via Digital Asset Links. Huvudskillnader: App Link använder HTTPS-schemat istället för ett anpassat schema, visar ingen valdialogruta och indexeras av Google. Vanlig Deep Link fungerar på alla Android-versioner men kräver manuellt val av app.
Filen placeras i roten av HTTPS-servern på sökvägen /.well-known/assetlinks.json. Servern måste returnera Content-Type: application/json. Filen måste uppdateras vid ändring av signeringscertifikatet eller tillägg av nya domäner.
Huvudorsaker: android:autoVerify="true" saknas i Intent Filter, assetlinks.json är inte tillgänglig via HTTPS, felaktigt SHA256-avtryck, annat signeringscertifikat (debug vs release). Kontrollera verifieringsstatus via adb shell dumpsync domain_verification.
Nej — App Link kräver en HTTPS-server med tillgänglig assetlinks.json. Om du inte har en domän, använd Firebase Hosting eller GitHub Pages för att hosta filen. Alternativ: Custom URL Scheme (utan verifiering) eller Firebase Dynamic Links.
Nej — App Link stöds på Android 6.0 (API 23) och senare. På Android 5 ignorerar Intent Filter med android:autoVerify="true" attributet och fungerar som en vanlig Deep Link med valdialogruta. Det rekommenderas att stödja båda mekanismerna för bakåtkompatibilitet.
Sammanfattning
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.
Läs också