App Link: co to je, princip fungování a nastavení

Autor: IT Sectr Publikováno: 2026-05-14 Doba čtení: 9 min

App Link je mechanismus Android (Android 6.0+), který automaticky otevírá webové odkazy v nainstalované aplikaci a obchází dialog výběru. Termín zavedl Google v roce 2015 spolu s Androidem 6.0 Marshmallow. Podle Android Developers používá App Link Digital Asset Links — kryptografické ověření prostřednictvím souboru na serveru, které potvrzuje, že doména patří vývojáři aplikace.

Hlavní body

  • App Link — HTTPS odkaz, který automaticky otevře aplikaci bez dialogu výběru
  • Digital Asset Links — JSON soubor assetlinks.json na serveru ověřující propojení domény s aplikací
  • SHA256 otisk certifikátu — klíčový prvek ověření spojující vývojáře s doménou
  • Intent Filter — komponenta Android deklarující, které odkazy aplikace zpracovává
  • Bezpečnost — App Link odstraňuje dialog „Otevřít v aplikaci nebo prohlížeči“, čímž zvyšuje konverzi

App Link (Android App Link) — je standardní HTTPS odkaz, který po kliknutí na zařízení Android automaticky otevře nainstalovanou aplikaci bez zobrazení standardního dialogu výběru mezi prohlížečem a aplikací. Google představil App Link v Androidu 6.0 (API 23) jako řešení problému „dialogu výběru“, který snižoval konverzi deep linků kvůli dodatečnému kliknutí a zmatení uživatele.

Klíčová inovace: ověření. Android kontroluje, zda doména skutečně patří vývojáři aplikace, prostřednictvím Digital Asset Links API. Google Play Store ověřuje App Link při publikování a může aktualizaci odmítnout, pokud ověření selže. To činí App Link bezpečnější než Custom URL Scheme: žádná jiná aplikace nemůže zachytit odkaz na vaši doménu.

Digital Asset Links — je otevřený protokol, který Google používá nejen pro App Link, ale také pro propojování webových stránek s aplikacemi ve výsledcích vyhledávání, Google Assistant a Smart Lock for Passwords. Protokol je založen na kryptografickém ověření: v assetlinks.json je uveden SHA256 otisk podpisového certifikátu aplikace, což vylučuje padělání.

Proces fungování App Link se skládá ze tří fází: ověření Digital Asset Links, zpracování přes Intent Filter a automatické přesměrování. Každá fáze je povinná. Pokud ověření selže, Android zobrazí dialog výběru — takový deep link funguje jako běžný, ale bez výhody automatického přesměrování.

Digital Asset Links (assetlinks.json)

Asset Links — JSON soubor umístěný na serveru na adrese https://doména/.well-known/assetlinks.json. Soubor obsahuje pole objektů s poli: relation (pole řetězců popisujících typ vztahu), target (objekt s namespace a package_name aplikace, a také sha256_cert_fingerprints — pole SHA256 otisků podpisového certifikátu).

json
// assetlinks.json — minimální konfigurace 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 otisk se získává z certifikátu, kterým je aplikace podepsána. Pro debug sestavení se používá standardní Android debug certifikát, pro release — certifikát z Google Play Console nebo vlastní certifikát. Důležité: při změně podpisového certifikátu (např. při přechodu na App Signing by Google Play) je nutné aktualizovat assetlinks.json na serveru, jinak App Link přestane fungovat.

Intent Filter a ověření

Android kontroluje App Link při prvním kliknutí na odkaz. Systém načte assetlinks.json ze serveru, porovná package_name a SHA256 otisk s certifikátem nainstalované aplikace. Pokud se údaje shodují, Android označí Intent Filter jako ověřený a všechny následující odkazy na tuto doménu se otevírají automaticky, bez dialogu.

xml
// AndroidManifest.xml — Intent Filter pro 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" — povinný atribut, který nařizuje Androidu zkontrolovat assetlinks.json. Bez tohoto atributu nebude Intent Filter ověřen a App Link nebude aktivován. Android podporuje více Intent Filter v jedné Activity — pro různé hostitele. Systém kontroluje každého hostitele samostatně. Ověření se provádí asynchronně a při prvním přechodu může trvat až 20 sekund.

Automatické přesměrování (Automatic Redirect)

Po úspěšném ověření Android automaticky otevře aplikaci při kliknutí na jakýkoli odkaz odpovídající ověřenému Intent Filter. Uživatel nevidí dialog výběru — aplikace se otevře okamžitě. Pokud aplikace není nainstalována, odkaz se otevře v prohlížeči (jako běžná webová stránka). To je ideální uživatelská zkušenost: bezproblémový přechod bez zbytečných akcí.

Důležité: automatické přesměrování funguje pouze pro schéma HTTPS. App Link nepodporuje HTTP (nezabezpečený protokol). Pokud uživatel ručně otevře HTTP odkaz (např. z SMS), Android neprovede ověření a zobrazí dialog výběru. Doporučuje se používat HTTPS pro všechny odkazy vedoucí do aplikace a nastavit HTTP → HTTPS přesměrování na serveru.

App Link je evoluce Deep Linku na Androidu, nikoli náhrada. Rozdíl mezi nimi je zásadní. Běžný Deep Link (Custom URL Scheme) funguje přes Intent Filter s vlastním schématem (myapp://) a bez autoVerify. Android nekontroluje, zda je aplikace skutečně spojena s tímto schématem — jakákoli aplikace může zaregistrovat myapp:// a zachytávat odkazy.

App Link řeší tři problémy Deep Linku. První: bezpečnost — ověření přes Digital Asset Links vylučuje zachycení odkazů. Druhý: uživatelský zážitek — absence dialogu výběru zvyšuje konverzi na cílovou akci o 20–40%. Třetí: indexace — Google indexuje HTTPS odkazy App Link a může je zobrazovat ve výsledcích vyhledávání jako odkazy na obsah uvnitř aplikace.

Kompatibilita: App Link funguje na Androidu 6.0+ (99 % zařízení). Pro Android 5.x (Lollipop) se používá běžný Deep Link s dialogem výběru. Proto se doporučuje podporovat oba mechanismy: App Link pro moderní zařízení a Custom URL Scheme jako záložní pro starší verze. Intent Filter s autoVerify="true" neláme zpětnou kompatibilitu — na Androidu < 6 je atribut ignorován.

VlastnostDeep LinkApp Link
SchémaVlastní (myapp://)HTTPS (https://doména)
OvěřeníNeassetlinks.json
Dialog výběruZobrazuje seAutomatické přesměrování
Verze AndroidAPI 1+API 23+ (6.0+)
Indexace GoogleNeAno (URL HTTPS)

Nastavení App Link vyžaduje tři kroky: konfiguraci Intent Filter v manifestu, umístění assetlinks.json na server a kontrolu ověření. První krok — přidání Intent Filter s android:autoVerify="true" do AndroidManifest.xml. Je důležité uvést schéma HTTPS, hostitele a cesty, které má aplikace zpracovávat. Cesty mohou obsahovat zástupný znak (*) pro podsložky.

Druhý krok — vytvoření assetlinks.json. Soubor lze vygenerovat přes Android Studio (Tools → App Links Assistant). Asistent také pomáhá s laděním a testováním. Soubor se umístí na server na cestu /.well-known/assetlinks.json. Server musí vracet Content-Type: application/json a být dostupný přes HTTPS bez přesměrování. Google Play Console také zobrazuje stav ověření App Link v sekci Publishing.

  1. Přidat Intent Filter s android:autoVerify="true" do AndroidManifest.xml
  2. Získat SHA256 otisk certifikátu (keytool nebo App Links Assistant)
  3. Vytvořit assetlinks.json s package_name a sha256_cert_fingerprints
  4. Umístit soubor na cestu /.well-known/assetlinks.json na HTTPS serveru
  5. Zkontrolovat ověření přes adb: adb shell dumpsync domain_verification

Testování — třetí krok. Pomocí adb zkontrolujte: příkaz adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" otevře aplikaci. Pokud se místo aplikace otevře prohlížeč — zkontrolujte assetlinks.json a autoVerify. Android Studio App Links Assistant obsahuje vestavěný tester: zobrazuje stav ověření pro každou doménu a cestu. Pro automatické testování použijte Android Testing Library s Intent Matcher.

Vlastnosti fungování

Android 12 (API 31) přinesl změny ve zpracování App Link. Bylo přidáno nové ověření specifické pro doménu: systém kontroluje každý odkaz samostatně, nikoli celý Intent Filter. To zvyšuje bezpečnost, ale vyžaduje aktualizaci souboru assetlinks.json při přidávání nových cest. Android 12 také představil Android App Links Assistant v balíčku s ADB — příkazy pro správu ověření přes shell.

Více domén — typický scénář pro produkci. Aplikace může zpracovávat odkazy z example.com, m.example.com a example.org. Pro každou doménu je potřeba samostatný assetlinks.json na příslušném serveru. V manifestu se přidá několik Intent Filter — jeden na doménu. Všechny domény musí být dostupné přes HTTPS a projít ověřením nezávisle.

App Link a Jetpack Navigation — doporučený způsob zpracování App Link v moderních Android aplikacích. Jetpack Navigation podporuje deklarativní deep linky v nav_graph.xml nebo přes NavDeepLinkRequest. To zjednodušuje navigaci: vývojář popíše, která obrazovka se otevře pod určitou URL, a komponenta Navigation sama zpracuje Intent a obnoví zásobník navigace. Google doporučuje používat právě Jetpack Navigation pro App Link.

kotlin
// Zpracování App Link přes 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 kontroluje App Link při publikování. Pokud je v manifestu uveden Intent Filter s autoVerify, ale assetlinks.json není dostupný nebo je nesprávný, Google Play může aktualizaci odmítnout s varováním. V konzoli vývojáře (Policy and Programs → App Links) se zobrazuje stav ověření každé domény. Před publikováním nezapomeňte zkontrolovat stav — oprava po odmítnutí aktualizace zdržuje vydání.

Často kladené otázky

Čím se App Link liší od Deep Link na Androidu?

App Link — je Deep Link s ověřením přes Digital Asset Links. Hlavní rozdíly: App Link používá schéma HTTPS místo vlastního schématu, nezobrazuje dialog výběru a je indexován Googlem. Běžný Deep Link funguje na všech verzích Androidu, ale vyžaduje ruční výběr aplikace.

Kam umístit assetlinks.json?

Soubor se umísťuje do kořene HTTPS serveru na cestu /.well-known/assetlinks.json. Server musí vracet Content-Type: application/json. Soubor je třeba aktualizovat při změně podpisového certifikátu nebo přidání nových domén.

Proč App Link neotevírá aplikaci automaticky?

Hlavní důvody: chybí android:autoVerify="true" v Intent Filter, assetlinks.json není dostupný přes HTTPS, nesprávný SHA256 otisk, jiný podpisový certifikát (debug vs release). Zkontrolujte stav ověření přes adb shell dumpsync domain_verification.

Lze App Link použít bez vlastní domény?

Ne — App Link vyžaduje HTTPS server s dostupným assetlinks.json. Pokud doménu nemáte, použijte Firebase Hosting nebo GitHub Pages pro hostování souboru. Alternativa: Custom URL Scheme (bez ověření) nebo Firebase Dynamic Links.

Funguje App Link na Androidu 5?

Ne — App Link je podporován na Androidu 6.0 (API 23) a novějším. Na Androidu 5 Intent Filter s android:autoVerify="true" atribut ignoruje a funguje jako běžný Deep Link s dialogem výběru. Doporučuje se podporovat oba mechanismy pro zpětnou kompatibilitu.

Shrnutí

  • App Link — evoluce Deep Link pro Android: HTTPS odkaz s automatickým přechodem do aplikace
  • Digital Asset Links — kryptografické ověření přes assetlinks.json na serveru
  • SHA256 otisk podpisového certifikátu — klíčový prvek spojující vývojáře s doménou
  • android:autoVerify="true" — povinný atribut Intent Filter pro aktivaci App Link
  • Bezpečnost — App Link vylučuje zachycení odkazů aplikacemi třetích stran
  • Google Play Store kontroluje ověření App Link při publikování a při chybách odmítá
  • Jetpack Navigation — doporučený způsob zpracování App Link s deklarativními deep linky

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také