Az App Link egy Android-mechanizmus (Android 6.0+), amely automatikusan megnyitja a webes linkeket a telepített alkalmazásban, megkerülve a kiválasztási párbeszédablakot. A kifejezést a Google vezette be 2015-ben az Android 6.0 Marshmallow-val együtt. A Android Developers szerint az App Link a Digital Asset Links-et használja — egy kriptográfiai hitelesítést a szerveren lévő fájlon keresztül, amely megerősíti, hogy a tartomány az alkalmazás fejlesztőjéhez tartozik.
Főbb pontok
App Link (Android App Link) — egy szabványos HTTPS-link, amely Android-eszközön kattintva automatikusan megnyitja a telepített alkalmazást anélkül, hogy megjelenítené a szabványos kiválasztási párbeszédablakot a böngésző és az alkalmazás között. A Google az App Link-et az Android 6.0-ban (API 23) vezette be a „kiválasztási párbeszédablak” problémájának megoldásaként, amely a deep link konverzióját csökkentette a plusz kattintás és a felhasználói zavar miatt.
Kulcsfontosságú újítás: hitelesítés. Az Android ellenőrzi, hogy a tartomány valóban az alkalmazás fejlesztőjéhez tartozik-e a Digital Asset Links API-n keresztül. A Google Play Store ellenőrzi az App Link-et publikáláskor, és elutasíthatja a frissítést, ha a hitelesítés sikertelen. Ez biztonságosabbá teszi az App Link-et, mint a Custom URL Scheme: egyetlen más alkalmazás sem tudja elfogni a linket az Ön tartományához.
Digital Asset Links — egy nyílt protokoll, amelyet a Google nemcsak az App Link-hez használ, hanem a weboldalak alkalmazásokkal való összekapcsolásához is a keresési eredményekben, a Google Assistant-ban és a Smart Lock for Passwords-ben. A protokoll kriptográfiai hitelesítésen alapul: az assetlinks.json fájlban meg van adva az alkalmazás aláírási tanúsítványának SHA256 ujjlenyomata, ami kizárja a hamisítást.
Az App Link működési folyamata három szakaszból áll: a Digital Asset Links hitelesítése, feldolgozás Intent Filter-en keresztül és automatikus átirányítás. Minden szakasz kötelező. Ha a hitelesítés sikertelen, az Android megjeleníti a kiválasztási párbeszédablakot — az ilyen deep link úgy működik, mint egy szokásos, de az automatikus átirányítás előnye nélkül.
Asset Links — JSON-fájl, amely a szerveren található a https://domain/.well-known/assetlinks.json címen. A fájl objektumok tömbjét tartalmazza a következő mezőkkel: relation (a kapcsolat típusát leíró karakterláncok tömbje), target (objektum az alkalmazás namespace és package_name mezőjével, valamint sha256_cert_fingerprints — az aláírási tanúsítvány SHA256 ujjlenyomatainak tömbje).
// assetlinks.json — az App Link minimális konfigurációja
[{
"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 ujjlenyomat abból a tanúsítványból származik, amellyel az alkalmazást aláírták. Debug buildhez a szabványos Android debug tanúsítványt használják, release-hez — a Google Play Console tanúsítványát vagy a saját tanúsítványát. Fontos: az aláírási tanúsítvány megváltoztatásakor (pl. az App Signing by Google Play-re való áttéréskor) frissíteni kell az assetlinks.json-t a szerveren, különben az App Link leáll.
Android ellenőrzi az App Link-et az első linkre kattintáskor. A rendszer letölti az assetlinks.json-t a szerverről, összehasonlítja a package_name-t és az SHA256 ujjlenyomatot a telepített alkalmazás tanúsítványával. Ha az adatok egyeznek, az Android megjelöli az Intent Filter-t hitelesítettként, és az összes további link ehhez a tartományhoz automatikusan, párbeszédablak nélkül nyílik meg.
// AndroidManifest.xml — Intent Filter az App Link-hez
<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" — a kötelező attribútum, amely utasítja az Androidot az assetlinks.json ellenőrzésére. Ezen attribútum nélkül az Intent Filter nem lesz hitelesítve, és az App Link nem aktiválódik. Az Android több Intent Filter-t támogat egy Activity-ben — különböző hosztokhoz. A rendszer minden hosztot külön ellenőriz. A hitelesítés aszinkron módon történik, és az első átmenetkor akár 20 másodpercig is eltarthat.
Sikeres hitelesítés után az Android automatikusan megnyitja az alkalmazást, amikor a felhasználó bármely olyan linkre kattint, amely megfelel a hitelesített Intent Filter-nek. A felhasználó nem lát kiválasztási párbeszédablakot — az alkalmazás azonnal megnyílik. Ha az alkalmazás nincs telepítve, a link a böngészőben nyílik meg (mint egy szokásos weboldal). Ez az ideális felhasználói élmény: zökkenőmentes átmenet felesleges műveletek nélkül.
Fontos: az automatikus átirányítás csak a HTTPS-séma esetén működik. Az App Link nem támogatja a HTTP-t (nem biztonságos protokoll). Ha a felhasználó manuálisan nyit meg egy HTTP-linket (pl. SMS-ből), az Android nem végez hitelesítést, és megjeleníti a kiválasztási párbeszédablakot. Javasolt a HTTPS használata minden olyan linkhez, amely az alkalmazásba vezet, és HTTP → HTTPS átirányítás beállítása a szerveren.
Az App Link a Deep Link evolúciója Androidon, nem pedig helyettesítője. A különbség közöttük alapvető. Szokásos Deep Link (Custom URL Scheme) egy Intent Filter-en keresztül működik egyéni sémával (myapp://) és autoVerify nélkül. Az Android nem ellenőrzi, hogy az alkalmazás valóban kapcsolódik-e ehhez a sémához — bármely alkalmazás regisztrálhatja a myapp://-t és elkaphatja a linkeket.
App Link három problémát old meg a Deep Link-kel kapcsolatban. Első: biztonság — a Digital Asset Links-en keresztüli hitelesítés kizárja a linkek elfogását. Második: felhasználói élmény — a kiválasztási párbeszédablak hiánya 20–40%-kal növeli a célművelet konverzióját. Harmadik: indexelés — a Google indexeli az App Link HTTPS-linkjeit, és megjelenítheti azokat a keresési találatokban az alkalmazáson belüli tartalomra mutató linkként.
Kompatibilitás: Az App Link Android 6.0+ (az eszközök 99%-án) működik. Android 5.x (Lollipop) esetén a szokásos Deep Link használatos kiválasztási párbeszédablakkal. Ezért ajánlott mindkét mechanizmus támogatása: App Link a modern eszközökhöz és Custom URL Scheme visszaesési lehetőségként a régebbi verziókhoz. Az autoVerify="true" attribútummal rendelkező Intent Filter nem töri meg a visszafelé kompatibilitást — Android < 6 esetén az attribútum figyelmen kívül van hagyva.
| Jellemző | Deep Link | App Link |
|---|---|---|
| Séma | Egyéni (myapp://) | HTTPS (https://domain) |
| Hitelesítés | Nincs | assetlinks.json |
| Kiválasztási párbeszéd | Megjelenik | Automatikus átirányítás |
| Android verzió | API 1+ | API 23+ (6.0+) |
| Google indexelés | Nincs | Igen (HTTPS URL) |
App Link beállítása három lépést igényel: az Intent Filter konfigurálása a manifestben, az assetlinks.json elhelyezése a szerveren és a hitelesítés ellenőrzése. Első lépés — Intent Filter hozzáadása android:autoVerify="true" attribútummal az AndroidManifest.xml-ben. Fontos megadni a HTTPS-sémát, a hosztot és azokat az útvonalakat, amelyeket az alkalmazásnak fel kell dolgoznia. Az útvonalak wildcard (*) karaktert tartalmazhatnak az alkönyvtárakhoz.
Második lépés — az assetlinks.json létrehozása. A fájl Android Studio-n keresztül generálható (Tools → App Links Assistant). Az asszisztens segít a hibakeresésben és a tesztelésben is. A fájl a szerveren a /.well-known/assetlinks.json útvonalon helyezkedik el. A szervernek Content-Type: application/json-t kell visszaadnia, és HTTPS-en keresztül, átirányítások nélkül kell elérhetőnek lennie. A Google Play Console is mutatja az App Link hitelesítési állapotát a Publishing szakaszban.
Tesztelés — harmadik lépés. Használja az adb-t az ellenőrzéshez: az adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" parancs megnyitja az alkalmazást. Ha az alkalmazás helyett a böngésző nyílik meg — ellenőrizze az assetlinks.json-t és az autoVerify-t. Az Android Studio App Links Assistant beépített tesztelőt tartalmaz: megjeleníti a hitelesítés állapotát minden tartományhoz és útvonalhoz. Automatikus teszteléshez használja az Android Testing Library-t Intent Matcher-rel.
Android 12 (API 31) változásokat hozott az App Link feldolgozásában. Új, tartomány-specifikus hitelesítés került hozzáadásra: a rendszer minden linket külön ellenőriz, nem a teljes Intent Filter-t. Ez növeli a biztonságot, de megköveteli az assetlinks.json fájl frissítését új útvonalak hozzáadásakor. Az Android 12 bevezette az Android App Links Assistant-t is az ADB-vel együtt — parancsokat a hitelesítés shellen keresztüli kezeléséhez.
Több tartomány — tipikus forgatókönyv éles környezetben. Az alkalmazás feldolgozhat linkeket az example.com, m.example.com és example.org oldalakról. Minden tartományhoz külön assetlinks.json szükséges a megfelelő szerveren. A manifestben több Intent Filter kerül hozzáadásra — egy-egy tartományonként. Minden tartománynak HTTPS-en keresztül kell elérhetőnek lennie, és függetlenül kell átesnie a hitelesítésen.
App Link és Jetpack Navigation — az ajánlott módja az App Link feldolgozásának modern Android-alkalmazásokban. A Jetpack Navigation támogatja a deklaratív deep link-eket a nav_graph.xml-ben vagy a NavDeepLinkRequest-en keresztül. Ez leegyszerűsíti a navigációt: a fejlesztő leírja, melyik képernyő nyílik meg egy adott URL alatt, a Navigation komponens pedig maga dolgozza fel az Intent-et és állítja vissza a navigációs vermet. A Google a Jetpack Navigation használatát ajánlja az App Link-hez.
// App Link feldolgozása Jetpack Navigation segítségével
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 ellenőrzi az App Link-et publikáláskor. Ha a manifest-ben meg van adva Intent Filter autoVerify-val, de az assetlinks.json nem elérhető vagy hibás, a Google Play elutasíthatja a frissítést egy figyelmeztetéssel. A fejlesztői konzolban (Policy and Programs → App Links) megjelenik az egyes tartományok hitelesítési állapota. Publikálás előtt feltétlenül ellenőrizze az állapotot — a javítás a frissítés elutasítása után késlelteti a kiadást.
Gyakran Ismételt Kérdések
App Link — egy Deep Link hitelesítéssel a Digital Asset Links-en keresztül. Főbb különbségek: az App Link HTTPS-sémát használ az egyéni séma helyett, nem jelenít meg kiválasztási párbeszédablakot és indexeli a Google. A szokásos Deep Link az Android összes verzióján működik, de az alkalmazás manuális kiválasztását igényli.
A fájl a HTTPS-szerver gyökerében található a /.well-known/assetlinks.json útvonalon. A szervernek Content-Type: application/json-t kell visszaadnia. A fájlt frissíteni kell az aláírási tanúsítvány megváltoztatásakor vagy új tartományok hozzáadásakor.
Fő okok: hiányzó android:autoVerify="true" az Intent Filter-ben, az assetlinks.json nem elérhető HTTPS-en keresztül, hibás SHA256 ujjlenyomat, eltérő aláírási tanúsítvány (debug vs release). Ellenőrizze a hitelesítés állapotát az adb shell dumpsync domain_verification segítségével.
Nem — az App Linkhez HTTPS-szerver szükséges elérhető assetlinks.json-nal. Ha nincs tartománya, használja a Firebase Hosting vagy GitHub Pages szolgáltatást a fájl tárolásához. Alternatíva: Custom URL Scheme (hitelesítés nélkül) vagy Firebase Dynamic Links.
Nem — az App Link Android 6.0 (API 23) és újabb verziókon támogatott. Android 5-ön az android:autoVerify="true" attribútummal rendelkező Intent Filter figyelmen kívül hagyja az attribútumot, és szokásos Deep Link-ként működik kiválasztási párbeszédablakkal. A visszafelé kompatibilitás érdekében ajánlott mindkét mechanizmus támogatása.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is