App Link: co to jest, zasada działania i konfiguracja

Autor: IT Sectr Opublikowano: 2026-05-14 Czas czytania: 9 min

App Link to mechanizm Android (Android 6.0+), który automatycznie otwiera linki internetowe w zainstalowanej aplikacji, pomijając okno wyboru. Termin został wprowadzony przez Google w 2015 roku wraz z Android 6.0 Marshmallow. Według Android Developers, App Link wykorzystuje Digital Asset Links — kryptograficzną weryfikację poprzez plik na serwerze, potwierdzającą, że domena należy do developera aplikacji.

Najważniejsze

  • App Link — link HTTPS, który automatycznie otwiera aplikację bez okna wyboru
  • Digital Asset Links — plik JSON assetlinks.json na serwerze, weryfikujący połączenie domeny z aplikacją
  • Odcisk SHA256 certyfikatu — kluczowy element weryfikacji, łączący developera z domeną
  • Intent Filter — komponent Android deklarujący, które linki obsługuje aplikacja
  • Bezpieczeństwo — App Link eliminuje okno «Otwórz w aplikacji lub przeglądarce», zwiększając konwersję

App Link (Android App Link) — to standardowy link HTTPS, który po kliknięciu na urządzeniu z Androidem automatycznie otwiera zainstalowaną aplikację bez wyświetlania standardowego okna wyboru między przeglądarką a aplikacją. Google wprowadził App Link w Android 6.0 (API 23) jako rozwiązanie problemu «okna wyboru», które obniżało konwersję deep link z powodu dodatkowego kliknięcia i dezorientacji użytkownika.

Kluczowa innowacja: weryfikacja. Android sprawdza, czy domena rzeczywiście należy do developera aplikacji, poprzez Digital Asset Links API. Google Play Store weryfikuje App Link przy publikacji i może odrzucić aktualizację, jeśli weryfikacja nie zostanie przeprowadzona. To czyni App Link bezpieczniejszym niż Custom URL Scheme: żadna inna aplikacja nie może przechwycić linku do Twojej domeny.

Digital Asset Links — to otwarty protokół, którego Google używa nie tylko dla App Link, ale także do łączenia stron internetowych z aplikacjami w wynikach wyszukiwania, Google Assistant i Smart Lock for Passwords. Protokół opiera się na kryptograficznej weryfikacji: w assetlinks.json podawany jest odcisk SHA256 certyfikatu podpisu aplikacji, co uniemożliwia fałszerstwo.

Proces działania App Link składa się z trzech etapów: weryfikacja Digital Asset Links, przetwarzanie przez Intent Filter i automatyczne przekierowanie. Każdy etap jest obowiązkowy. Jeśli weryfikacja nie zostanie przeprowadzona, Android wyświetla okno wyboru — taki deep link działa jak zwykły, ale bez zalety automatycznego przekierowania.

Digital Asset Links (assetlinks.json)

Asset Links — plik JSON umieszczany na serwerze pod adresem https://domena/.well-known/assetlinks.json. Plik zawiera tablicę obiektów z polami: relation (tablica stringów opisujących typ połączenia), target (obiekt z namespace i package_name aplikacji, a także sha256_cert_fingerprints — tablica odcisków SHA256 certyfikatu podpisu).

json
// assetlinks.json — minimalna konfiguracja 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"
        ]
    }
}]

Odcisk SHA256 uzyskuje się z certyfikatu, którym podpisana jest aplikacja. Dla kompilacji debug używany jest standardowy certyfikat debug Androida, dla release — certyfikat z Google Play Console lub własny. Ważne: przy zmianie certyfikatu podpisu (np. przy przejściu na App Signing by Google Play) należy zaktualizować assetlinks.json na serwerze, w przeciwnym razie App Link przestanie działać.

Intent Filter i weryfikacja

Android sprawdza App Link przy pierwszym kliknięciu linku. System pobiera assetlinks.json z serwera, porównuje package_name i odcisk SHA256 z certyfikatem zainstalowanej aplikacji. Jeśli dane są zgodne, Android oznacza Intent Filter jako zweryfikowany, a wszystkie kolejne linki do tej domeny otwierają się automatycznie, bez okna wyboru.

xml
// AndroidManifest.xml — Intent Filter dla 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" — obowiązkowy atrybut, który nakazuje Androidowi sprawdzenie assetlinks.json. Bez tego atrybutu Intent Filter nie zostanie zweryfikowany, a App Link nie zostanie aktywowany. Android obsługuje wiele Intent Filter w jednej Activity — dla różnych hostów. System sprawdza każdy host osobno. Weryfikacja wykonywana jest asynchronicznie i może zająć do 20 sekund przy pierwszym przejściu.

Automatyczne przekierowanie (Automatic Redirect)

Po pomyślnej weryfikacji Android automatycznie otwiera aplikację przy kliknięciu dowolnego linku pasującego do zweryfikowanego Intent Filter. Użytkownik nie widzi okna wyboru — aplikacja otwiera się natychmiast. Jeśli aplikacja nie jest zainstalowana, link otwiera się w przeglądarce (jak zwykła strona internetowa). To idealne doświadczenie użytkownika: bezproblemowe przejście bez zbędnych działań.

Ważne: automatyczne przekierowanie działa tylko dla schematu HTTPS. App Link nie obsługuje HTTP (niezabezpieczony protokół). Jeśli użytkownik ręcznie otworzy link HTTP (np. z SMS), Android nie wykonuje weryfikacji i wyświetla okno wyboru. Zaleca się używanie HTTPS dla wszystkich linków prowadzących do aplikacji i skonfigurowanie przekierowania HTTP → HTTPS na serwerze.

App Link to ewolucja Deep Link na Androidzie, a nie zamiennik. Różnica między nimi jest fundamentalna. Zwykły Deep Link (Custom URL Scheme) działa przez Intent Filter z niestandardowym schematem (myapp://) i bez autoVerify. Android nie sprawdza, czy aplikacja rzeczywiście jest związana z tym schematem — każda aplikacja może zarejestrować myapp:// i przechwytywać linki.

App Link rozwiązuje trzy problemy Deep Link. Po pierwsze: bezpieczeństwo — weryfikacja przez Digital Asset Links wyklucza przechwytywanie linków. Po drugie: doświadczenie użytkownika — brak okna wyboru zwiększa konwersję do docelowej akcji o 20–40%. Po trzecie: indeksacja — Google indeksuje linki HTTPS App Link i może wyświetlać je w wynikach wyszukiwania jako linki do treści wewnątrz aplikacji.

Zgodność: App Link działa na Android 6.0+ (99% urządzeń). Dla Android 5.x (Lollipop) używany jest zwykły Deep Link z oknem wyboru. Dlatego zaleca się obsługę obu mechanizmów: App Link dla nowoczesnych urządzeń i Custom URL Scheme jako fallback dla starszych wersji. Intent Filter z autoVerify="true" nie psuje wstecznej kompatybilności — na Android < 6 atrybut jest ignorowany.

CechaDeep LinkApp Link
SchematNiestandardowy (myapp://)HTTPS (https://domena)
WeryfikacjaNieassetlinks.json
Okno wyboruWyświetlaneAutomatyczne przekierowanie
Wersja AndroidAPI 1+API 23+ (6.0+)
Indeksacja GoogleNieTak (URL HTTPS)

Konfiguracja App Link wymaga trzech kroków: konfiguracja Intent Filter w manifeście, umieszczenie assetlinks.json na serwerze i sprawdzenie weryfikacji. Pierwszy krok — dodać w AndroidManifest.xml Intent Filter z android:autoVerify="true". Ważne jest podanie schematu HTTPS, hosta i ścieżek, które aplikacja ma obsługiwać. Ścieżki mogą zawierać wildcard (*) dla podfolderów.

Drugi krok — utworzenie assetlinks.json. Plik można wygenerować przez Android Studio (Tools → App Links Assistant). Asystent pomaga również w debugowaniu i testowaniu. Plik umieszczany jest na serwerze pod ścieżką /.well-known/assetlinks.json. Serwer musi zwracać Content-Type: application/json i być dostępny przez HTTPS bez przekierowań. Google Play Console również pokazuje status weryfikacji App Link w sekcji Publishing.

  1. Dodać Intent Filter z android:autoVerify="true" w AndroidManifest.xml
  2. Uzyskać odcisk SHA256 certyfikatu (keytool lub App Links Assistant)
  3. Utworzyć assetlinks.json z package_name i sha256_cert_fingerprints
  4. Umieścić plik pod ścieżką /.well-known/assetlinks.json na serwerze HTTPS
  5. Sprawdzić weryfikację przez adb: adb shell dumpsync domain_verification

Testowanie — trzeci krok. Użyj adb do sprawdzenia: polecenie adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" otwiera aplikację. Jeśli zamiast aplikacji otwiera się przeglądarka — sprawdź assetlinks.json i autoVerify. Android Studio App Links Assistant zawiera wbudowany tester: pokazuje status weryfikacji dla każdej domeny i ścieżki. Do automatycznego testowania używaj Android Testing Library z Intent Matcher.

Cechy działania

Android 12 (API 31) wprowadził zmiany w obsłudze App Link. Dodano nową weryfikację specyficzną dla domeny: system sprawdza każdy link osobno, a nie cały Intent Filter. Zwiększa to bezpieczeństwo, ale wymaga aktualizacji pliku assetlinks.json przy dodawaniu nowych ścieżek. Android 12 wprowadził również Android App Links Assistant w zestawie z ADB — polecenia do zarządzania weryfikacją przez shell.

Wiele domen — typowy scenariusz produkcyjny. Aplikacja może obsługiwać linki z example.com, m.example.com i example.org. Dla każdej domeny potrzebny jest osobny assetlinks.json na odpowiednim serwerze. W manifeście dodaje się wiele Intent Filter — po jednym na domenę. Wszystkie domeny muszą być dostępne przez HTTPS i przechodzić weryfikację niezależnie.

App Link i Jetpack Navigation — zalecany sposób obsługi App Link w nowoczesnych aplikacjach Android. Jetpack Navigation obsługuje deklaratywne deep link w nav_graph.xml lub przez NavDeepLinkRequest. Upraszcza to nawigację: developer opisuje, który ekran otwiera się pod określonym URL, a komponent Navigation sam przetwarza Intent i przywraca stos nawigacji. Google zaleca używanie właśnie Jetpack Navigation dla App Link.

kotlin
// Obsługa App Link przez 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 sprawdza App Link przy publikacji. Jeśli w manifeście podano Intent Filter z autoVerify, ale assetlinks.json jest niedostępny lub nieprawidłowy, Google Play może odrzucić aktualizację z ostrzeżeniem. W konsoli developera (Policy and Programs → App Links) wyświetlany jest status weryfikacji każdej domeny. Przed publikacją koniecznie sprawdź status — naprawa po odrzuceniu aktualizacji opóźnia wydanie.

Często zadawane pytania

Czym App Link różni się od Deep Link na Androidzie?

App Link — to Deep Link z weryfikacją przez Digital Asset Links. Główne różnice: App Link używa schematu HTTPS zamiast niestandardowego, nie wyświetla okna wyboru i jest indeksowany przez Google. Zwykły Deep Link działa na wszystkich wersjach Androida, ale wymaga ręcznego wyboru aplikacji.

Gdzie umieścić assetlinks.json?

Plik umieszczany jest w katalogu głównym serwera HTTPS pod ścieżką /.well-known/assetlinks.json. Serwer musi zwracać Content-Type: application/json. Plik należy aktualizować przy zmianie certyfikatu podpisu lub dodawaniu nowych domen.

Dlaczego App Link nie otwiera aplikacji automatycznie?

Główne przyczyny: brak android:autoVerify="true" w Intent Filter, assetlinks.json niedostępny przez HTTPS, nieprawidłowy odcisk SHA256, inny certyfikat podpisu (debug vs release). Sprawdź przez adb shell dumpsync domain_verification status weryfikacji.

Czy można używać App Link bez własnej domeny?

Nie — App Link wymaga serwera HTTPS z dostępnym assetlinks.json. Jeśli nie masz domeny, użyj Firebase Hosting lub GitHub Pages do hostowania pliku. Alternatywa: Custom URL Scheme (bez weryfikacji) lub Firebase Dynamic Links.

Czy App Link działa na Android 5?

Nie — App Link jest obsługiwany na Android 6.0 (API 23) i nowszych. Na Android 5 Intent Filter z android:autoVerify="true" ignoruje ten atrybut i działa jak zwykły Deep Link z oknem wyboru. Zaleca się obsługę obu mechanizmów dla wstecznej kompatybilności.

Podsumowanie

  • App Link — ewolucja Deep Link dla Androida: link HTTPS z automatycznym przejściem do aplikacji
  • Digital Asset Links — kryptograficzna weryfikacja przez assetlinks.json na serwerze
  • Odcisk SHA256 certyfikatu podpisu — kluczowy element łączący developera z domeną
  • android:autoVerify="true" — obowiązkowy atrybut Intent Filter do aktywacji App Link
  • Bezpieczeństwo — App Link wyklucza przechwytywanie linków przez aplikacje innych firm
  • Google Play Store sprawdza weryfikację App Link przy publikacji i odrzuca przy błędach
  • Jetpack Navigation — zalecany sposób obsługi App Link z deklaratywnymi deep link

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również