App Link: ce este, principiul de funcționare și configurare

Autor: IT Sectr Publicat: 2026-05-14 Timp de citire: 9 min

App Link este un mecanism Android (Android 6.0+) care deschide automat linkurile web în aplicația instalată, ocolind dialogul de selecție. Termenul a fost introdus de Google în 2015 împreună cu Android 6.0 Marshmallow. Conform Android Developers, App Link folosește Digital Asset Links — o verificare criptografică printr-un fișier pe server, care confirmă că domeniul aparține dezvoltatorului aplicației.

Principalele puncte

  • App Link — link HTTPS care deschide automat aplicația fără dialog de selecție
  • Digital Asset Links — fișierul JSON assetlinks.json pe server, care verifică legătura dintre domeniu și aplicație
  • Amprenta SHA256 a certificatului — elementul cheie de verificare care leagă dezvoltatorul de domeniu
  • Intent Filter — componenta Android care declară ce linkuri procesează aplicația
  • Securitate — App Link elimină dialogul „Deschide în aplicație sau browser”, crescând conversia

App Link (Android App Link) — este un link HTTPS standard care, la accesarea de pe un dispozitiv Android, deschide automat aplicația instalată fără a afișa dialogul standard de selecție între browser și aplicație. Google a introdus App Link în Android 6.0 (API 23) ca soluție pentru problema „dialogului de selecție” care reducea conversia deep link din cauza unui clic suplimentar și a confuziei utilizatorului.

Inovația cheie: verificarea. Android verifică dacă domeniul aparține într-adevăr dezvoltatorului aplicației prin Digital Asset Links API. Google Play Store verifică App Link la publicare și poate respinge actualizarea dacă verificarea eșuează. Acest lucru face App Link mai sigur decât Custom URL Scheme: nicio altă aplicație nu poate intercepta linkul către domeniul tău.

Digital Asset Links — este un protocol deschis pe care Google îl folosește nu doar pentru App Link, ci și pentru conectarea siteurilor web cu aplicațiile în rezultatele căutării, Google Assistant și Smart Lock for Passwords. Protocolul se bazează pe verificarea criptografică: în assetlinks.json este specificată amprenta SHA256 a certificatului de semnare a aplicației, ceea ce exclude falsificarea.

Procesul de funcționare a App Link constă din trei etape: verificarea Digital Asset Links, procesarea prin Intent Filter și redirecționarea automată. Fiecare etapă este obligatorie. Dacă verificarea eșuează, Android afișează dialogul de selecție — un astfel de deep link funcționează ca unul obișnuit, dar fără avantajul redirecționării automate.

Digital Asset Links (assetlinks.json)

Asset Links — fișier JSON plasat pe server la adresa https://domeniu/.well-known/assetlinks.json. Fișierul conține un array de obiecte cu câmpurile: relation (array de stringuri care descriu tipul de legătură), target (obiect cu namespace și package_name ale aplicației, precum și sha256_cert_fingerprints — array de amprente SHA256 ale certificatului de semnare).

json
// assetlinks.json — configurația minimă 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"
        ]
    }
}]

Amprenta SHA256 se obține din certificatul cu care este semnată aplicația. Pentru compilarea debug se folosește certificatul standard Android debug, pentru release — certificatul din Google Play Console sau propriul certificat. Important: la schimbarea certificatului de semnare (de exemplu, la trecerea la App Signing by Google Play) trebuie actualizat assetlinks.json pe server, altfel App Link va înceta să funcționeze.

Intent Filter și verificarea

Android verifică App Link la prima accesare a linkului. Sistemul încarcă assetlinks.json de pe server, compară package_name și amprenta SHA256 cu certificatul aplicației instalate. Dacă datele coincid, Android marchează Intent Filter ca verificat, iar toate linkurile ulterioare către acest domeniu se deschid automat, fără dialog.

xml
// AndroidManifest.xml — Intent Filter pentru 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" — atributul obligatoriu care instruiește Android să verifice assetlinks.json. Fără acest atribut, Intent Filter nu va fi verificat, iar App Link nu va fi activat. Android suportă mai multe Intent Filter într-o singură Activity — pentru diferite hosturi. Sistemul verifică fiecare host separat. Verificarea se efectuează asincron și poate dura până la 20 de secunde la prima accesare.

Redirecționarea automată (Automatic Redirect)

După verificarea reușită, Android deschide automat aplicația la accesarea oricărui link care se potrivește cu Intent Filter verificat. Utilizatorul nu vede dialogul de selecție — aplicația se deschide instantaneu. Dacă aplicația nu este instalată, linkul se deschide în browser (ca o pagină web obișnuită). Aceasta este experiența ideală pentru utilizator: tranziție fără probleme, fără acțiuni suplimentare.

Important: redirecționarea automată funcționează doar pentru schema HTTPS. App Link nu suportă HTTP (protocol nesecurizat). Dacă utilizatorul deschide manual un link HTTP (de exemplu, din SMS), Android nu efectuează verificarea și afișează dialogul de selecție. Se recomandă utilizarea HTTPS pentru toate linkurile care duc către aplicație și configurarea unei redirecționări HTTP → HTTPS pe server.

App Link este o evoluție a Deep Link pe Android, nu o înlocuire. Diferența dintre ele este fundamentală. Deep Link obișnuit (Custom URL Scheme) funcționează prin Intent Filter cu o schemă personalizată (myapp://) și fără autoVerify. Android nu verifică dacă aplicația este într-adevăr asociată cu această schemă — orice aplicație poate înregistra myapp:// și poate intercepta linkurile.

App Link rezolvă trei probleme ale Deep Link. Prima: securitatea — verificarea prin Digital Asset Links exclude interceptarea linkurilor. A doua: experiența utilizatorului — absența dialogului de selecție crește conversia către acțiunea țintă cu 20–40%. A treia: indexarea — Google indexează linkurile HTTPS App Link și le poate afișa în rezultatele căutării ca linkuri către conținutul din interiorul aplicației.

Compatibilitate: App Link funcționează pe Android 6.0+ (99% dintre dispozitive). Pentru Android 5.x (Lollipop) se folosește Deep Link obișnuit cu dialog de selecție. De aceea se recomandă suportarea ambelor mecanisme: App Link pentru dispozitive moderne și Custom URL Scheme ca fallback pentru versiunile vechi. Intent Filter cu autoVerify="true" nu strică compatibilitatea inversă — pe Android < 6 atributul este ignorat.

CaracteristicăDeep LinkApp Link
SchemaPersonalizată (myapp://)HTTPS (https://domeniu)
VerificareNuassetlinks.json
Dialog de selecțieSe afișeazăRedirecționare automată
Versiune AndroidAPI 1+API 23+ (6.0+)
Indexare GoogleNuDa (URL HTTPS)

Configurarea App Link necesită trei pași: configurarea Intent Filter în manifest, plasarea assetlinks.json pe server și verificarea verificării. Primul pas — adăugarea în AndroidManifest.xml a Intent Filter cu android:autoVerify="true". Este important să specificați schema HTTPS, hostul și căile pe care aplicația trebuie să le proceseze. Căile pot conține wildcard (*) pentru subdosare.

Al doilea pas — crearea assetlinks.json. Fișierul poate fi generat prin Android Studio (Tools → App Links Assistant). Asistentul ajută și la depanare și testare. Fișierul se plasează pe server la calea /.well-known/assetlinks.json. Serverul trebuie să returneze Content-Type: application/json și să fie accesibil prin HTTPS fără redirecționări. Google Play Console arată, de asemenea, starea verificării App Link în secțiunea Publishing.

  1. Adăugați Intent Filter cu android:autoVerify="true" în AndroidManifest.xml
  2. Obțineți amprenta SHA256 a certificatului (keytool sau App Links Assistant)
  3. Creați assetlinks.json cu package_name și sha256_cert_fingerprints
  4. Plasați fișierul la calea /.well-known/assetlinks.json pe serverul HTTPS
  5. Verificați verificarea prin adb: adb shell dumpsync domain_verification

Testarea — al treilea pas. Utilizați adb pentru verificare: comanda adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" deschide aplicația. Dacă în locul aplicației se deschide browserul — verificați assetlinks.json și autoVerify. Android Studio App Links Assistant conține un tester încorporat: afișează starea verificării pentru fiecare domeniu și cale. Pentru testare automată, utilizați Android Testing Library cu Intent Matcher.

Caracteristici de funcționare

Android 12 (API 31) a adus modificări în procesarea App Link. A fost adăugată o nouă verificare specifică domeniului: sistemul verifică fiecare link separat, nu întregul Intent Filter. Acest lucru crește securitatea, dar necesită actualizarea fișierului assetlinks.json la adăugarea de noi căi. Android 12 a introdus, de asemenea, Android App Links Assistant împreună cu ADB — comenzi pentru gestionarea verificării prin shell.

Mai multe domenii — scenariu tipic pentru producție. Aplicația poate procesa linkuri de pe example.com, m.example.com și example.org. Pentru fiecare domeniu este necesar un assetlinks.json separat pe serverul corespunzător. În manifest se adaugă mai multe Intent Filter — câte unul pentru fiecare domeniu. Toate domeniile trebuie să fie accesibile prin HTTPS și să treacă verificarea independent.

App Link și Jetpack Navigation — modul recomandat de procesare a App Link în aplicațiile Android moderne. Jetpack Navigation suportă deep link declarative în nav_graph.xml sau prin NavDeepLinkRequest. Acest lucru simplifică navigarea: dezvoltatorul descrie ce ecran se deschide la un anumit URL, iar componenta Navigation procesează ea însăși Intentul și restaurează stiva de navigare. Google recomandă utilizarea Jetpack Navigation pentru App Link.

kotlin
// Procesarea App Link prin 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 verifică App Link la publicare. Dacă în manifest este specificat Intent Filter cu autoVerify, dar assetlinks.json este inaccesibil sau incorect, Google Play poate respinge actualizarea cu un avertisment. În consola dezvoltatorului (Policy and Programs → App Links) se afișează starea verificării fiecărui domeniu. Înainte de publicare, verificați neapărat starea — remedierea după respingerea actualizării întârzie lansarea.

Întrebări frecvente

Cu ce se deosebește App Link de Deep Link pe Android?

App Link — este un Deep Link cu verificare prin Digital Asset Links. Principalele diferențe: App Link folosește schema HTTPS în locul celei personalizate, nu afișează dialogul de selecție și este indexat de Google. Deep Link obișnuit funcționează pe toate versiunile Android, dar necesită selectarea manuală a aplicației.

Unde se plasează assetlinks.json?

Fișierul se plasează în rădăcina serverului HTTPS la calea /.well-known/assetlinks.json. Serverul trebuie să returneze Content-Type: application/json. Fișierul trebuie actualizat la schimbarea certificatului de semnare sau la adăugarea de noi domenii.

De ce App Link nu deschide aplicația automat?

Cauze principale: lipsește android:autoVerify="true" în Intent Filter, assetlinks.json este inaccesibil prin HTTPS, amprenta SHA256 incorectă, certificat de semnare diferit (debug vs release). Verificați starea prin adb shell dumpsync domain_verification.

Se poate folosi App Link fără un domeniu propriu?

Nu — App Link necesită un server HTTPS cu assetlinks.json accesibil. Dacă nu aveți un domeniu, utilizați Firebase Hosting sau GitHub Pages pentru găzduirea fișierului. Alternativă: Custom URL Scheme (fără verificare) sau Firebase Dynamic Links.

App Link funcționează pe Android 5?

Nu — App Link este suportat pe Android 6.0 (API 23) și superior. Pe Android 5, Intent Filter cu android:autoVerify="true" ignoră atributul și funcționează ca un Deep Link obișnuit cu dialog de selecție. Se recomandă suportarea ambelor mecanisme pentru compatibilitate inversă.

Rezumat

  • App Link — evoluția Deep Link pentru Android: link HTTPS cu trecere automată în aplicație
  • Digital Asset Links — verificare criptografică prin assetlinks.json pe server
  • Amprenta SHA256 a certificatului de semnare — elementul cheie care leagă dezvoltatorul de domeniu
  • android:autoVerify="true" — atributul obligatoriu al Intent Filter pentru activarea App Link
  • Securitate — App Link exclude interceptarea linkurilor de către aplicații terțe
  • Google Play Store verifică App Link la publicare și respinge în caz de erori
  • Jetpack Navigation — modul recomandat de procesare a App Link cu deep link declarative

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și