App Link: що це, принцип роботи та налаштування

Автор: IT Sectr Опубліковано: 2026-05-14 Час читання: 9 хв

App Link — це механізм Android (Android 6.0+), який автоматично відкриває веб-посилання у встановленому застосунку, минаючи діалог вибору. Термін запровадив Google у 2015 році разом з Android 6.0 Marshmallow. За даними Android Developers, App Link використовує Digital Asset Links — криптографічну верифікацію через файл на сервері, яка підтверджує, що домен належить розробнику застосунку.

Головне

  • App Link — https-посилання, яке автоматично відкриває застосунок без діалогу вибору
  • Digital Asset Links — JSON-файл assetlinks.json на сервері, який верифікує зв'язок домену із застосунком
  • SHA256 відбиток сертифіката — ключовий елемент верифікації, що пов'язує розробника з доменом
  • Intent Filter — Android-компонент, який декларує, які посилання обробляє застосунок
  • Безпека — App Link усуває діалог «Відкрити в застосунку чи браузері», підвищуючи конверсію

App Link (Android App Link) — це стандартне HTTPS-посилання, яке при переході з Android-пристрою автоматично відкриває встановлений застосунок без показу стандартного діалогу вибору між браузером і застосунком. Google представив App Link в Android 6.0 (API 23) як рішення проблеми «chooser dialog», який знижував конверсію deep link через додатковий клік і плутанину користувача.

Ключове нововведення: верифікація. Android перевіряє, що домен дійсно належить розробнику застосунку, через Digital Asset Links API. Google Play Store перевіряє App Link при публікації та може відхилити оновлення, якщо верифікація не пройдена. Це робить App Link безпечнішим за Custom URL Scheme: жоден інший застосунок не може перехопити посилання на ваш домен.

Digital Asset Links — це відкритий протокол, який Google використовує не тільки для App Link, але й для зв'язування веб-сайтів із застосунками в пошуковій видачі, Google Assistant і Smart Lock for Passwords. Протокол заснований на криптографічній верифікації: в assetlinks.json вказується SHA256 відбиток сертифіката підпису застосунку, що виключає підробку.

Процес роботи App Link складається з трьох етапів: верифікація Digital Asset Links, обробка через Intent Filter та автоматичний перехід. Кожен етап обов'язковий. Якщо верифікація не пройдена, Android показує діалог вибору — такий deep link працює як звичайний, але без переваги автоматичного переходу.

Digital Asset Links (assetlinks.json)

Asset Links — JSON-файл, що розміщується на сервері за адресою https://domain/.well-known/assetlinks.json. Файл містить масив об'єктів з полями: relation (масив рядків, що описують тип зв'язку), target (об'єкт з namespace і package_name застосунку, а також sha256_cert_fingerprints — масив SHA256 відбитків сертифіката підпису).

json
// assetlinks.json — мінімальна конфігурація 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 відбиток отримується із сертифіката, яким підписано застосунок. Для debug-збірки використовується стандартний Android debug сертифікат, для release — сертифікат з Google Play Console або ваш власний. Важливо: при зміні сертифіката підпису (наприклад, при переході на App Signing by Google Play) необхідно оновити assetlinks.json на сервері, інакше App Link перестане працювати.

Intent Filter та верифікація

Android перевіряє App Link при першому переході за посиланням. Система завантажує assetlinks.json з сервера, звіряє package_name та SHA256 відбиток із сертифікатом встановленого застосунку. Якщо дані збігаються, Android позначає Intent Filter як верифікований, і всі наступні посилання на цей домен відкриваються автоматично, без діалогу.

xml
// AndroidManifest.xml — Intent Filter для 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" — обов'язковий атрибут, який вказує Android перевірити assetlinks.json. Без цього атрибута Intent Filter не буде верифіковано, і App Link не активується. Android підтримує кілька Intent Filter в одній Activity — для різних хостів. Система перевіряє кожен хост окремо. Верифікація виконується асинхронно і може займати до 20 секунд при першому переході.

Автоматичний перехід

Після успішної верифікації Android автоматично відкриває застосунок при переході за будь-яким посиланням, що підходить під верифікований Intent Filter. Користувач не бачить діалог вибору — застосунок відкривається миттєво. Якщо застосунок не встановлено, посилання відкривається в браузері (як звичайна веб-сторінка). Це ідеальний користувацький досвід: безшовний перехід без зайвих дій.

Важливо: автоматичний перехід працює тільки для https-схеми. App Link не підтримує http (незахищений протокол). Якщо користувач вручну відкриває http-посилання (наприклад, з SMS), Android не виконує верифікацію і показує діалог вибору. Рекомендується використовувати https для всіх посилань, що ведуть у застосунок, і налаштувати HTTP → HTTPS редирект на сервері.

App Link — це еволюція Deep Link на Android, а не заміна. Різниця між ними фундаментальна. Звичайний Deep Link (Custom URL Scheme) працює через Intent Filter з кастомною схемою (myapp://) і без autoVerify. Android не перевіряє, чи дійсно застосунок пов'язаний з цією схемою — будь-який застосунок може зареєструвати myapp:// і перехоплювати посилання.

App Link вирішує три проблеми Deep Link. Перша: безпека — верифікація через Digital Asset Links виключає перехоплення посилань. Друга: користувацький досвід — відсутність діалогу вибору підвищує конверсію в цільову дію на 20–40%. Третя: індексація — Google індексує https-посилання App Link і може показувати їх у пошуковій видачі як посилання на контент всередині застосунку.

Сумісність: App Link працює на Android 6.0+ (99% пристроїв). Для Android 5.x (Lollipop) використовується звичайний Deep Link з діалогом вибору. Тому рекомендується підтримувати обидва механізми: App Link для сучасних пристроїв і Custom URL Scheme як fallback для старих версій. Intent Filter з autoVerify="true" не ламає зворотну сумісність — на Android < 6 атрибут ігнорується.

ХарактеристикаDeep LinkApp Link
СхемаКастомна (myapp://)HTTPS (https://domain)
ВерифікаціяНемаєassetlinks.json
Діалог виборуПоказуєтьсяАвтоматичний перехід
Версія AndroidAPI 1+API 23+ (6.0+)
Індексація GoogleНемаєТак (https URL)

Налаштування App Link вимагає трьох кроків: конфігурація Intent Filter в маніфесті, розміщення assetlinks.json на сервері та перевірка верифікації. Перший крок — додати в AndroidManifest.xml Intent Filter з android:autoVerify="true". Важливо вказати https-схему, хост і шляхи, які повинен обробляти застосунок. Шляхи можуть містити wildcard (*) для підпапок.

Другий крок — створення assetlinks.json. Файл можна згенерувати через Android Studio (Tools → App Links Assistant). Асистент також допомагає з налагодженням і тестуванням. Файл розміщується на сервері за шляхом /.well-known/assetlinks.json. Сервер повинен віддавати Content-Type: application/json і бути доступним по HTTPS без редиректів. Google Play Console також показує статус верифікації App Link в розділі Publishing.

  1. Додати Intent Filter з android:autoVerify="true" в AndroidManifest.xml
  2. Отримати SHA256 відбиток сертифіката (keytool або App Links Assistant)
  3. Створити assetlinks.json з package_name та sha256_cert_fingerprints
  4. Розмістити файл за шляхом /.well-known/assetlinks.json на HTTPS-сервері
  5. Перевірити верифікацію через adb: adb shell dumpsync domain_verification

Тестування — третій крок. Використовуйте adb для перевірки: команда adb shell am start -W -a android.intent.action.VIEW -d «https://example.com/product/42» відкриває застосунок. Якщо замість застосунку відкривається браузер — перевірте assetlinks.json та autoVerify. Android Studio App Links Assistant містить вбудований тестер: він показує статус верифікації для кожного домену та шляху. Для автоматичного тестування використовуйте Android Testing Library з Intent Matcher.

Особливості роботи

Android 12 (API 31) вніс зміни в обробку App Link. Додано нову домен-специфічну верифікацію: система перевіряє кожне посилання окремо, а не весь Intent Filter. Це підвищує безпеку, але потребує оновлення файлу assetlinks.json при додаванні нових шляхів. Android 12 також ввів Android App Links Assistant в комплекті з ADB — команди для керування верифікацією через shell.

Кілька доменів — типовий сценарій для продакшену. Застосунок може обробляти посилання з example.com, m.example.com та example.org. Для кожного домену потрібен окремий assetlinks.json на відповідному сервері. В маніфесті додається кілька Intent Filter — по одному на домен. Всі домени повинні бути доступні по HTTPS і проходити верифікацію незалежно.

App Link і Jetpack Navigation — рекомендований спосіб обробки App Link в сучасних Android-застосунках. Jetpack Navigation підтримує декларативні deep link в nav_graph.xml або через NavDeepLinkRequest. Це спрощує навігацію: розробник описує, який екран відкривається за певним URL, а Navigation компонент сам обробляє Intent та відновлює стек навігації. Google рекомендує використовувати саме Jetpack Navigation для App Link.

kotlin
// Обробка App Link через 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 перевіряє App Link при публікації. Якщо в маніфесті вказано Intent Filter з autoVerify, але assetlinks.json недоступний або невірний, Google Play може відхилити оновлення з попередженням. В консолі розробника (Policy and Programs → App Links) відображається статус верифікації кожного домену. Перед публікацією обов'язково перевіряйте статус — виправлення після відхилення оновлення затримує реліз.

Поширені запитання

Чим App Link відрізняється від Deep Link на Android?

App Link — це Deep Link з верифікацією через Digital Asset Links. Основні відмінності: App Link використовує https-схему замість кастомної, не показує діалог вибору та індексується Google. Звичайний Deep Link працює на всіх версіях Android, але потребує ручного вибору застосунку.

Де розміщувати assetlinks.json?

Файл розміщується в корені HTTPS-сервера за шляхом /.well-known/assetlinks.json. Сервер повинен віддавати Content-Type: application/json. Файл потрібно оновлювати при зміні сертифіката підпису або додаванні нових доменів.

Чому App Link не відкриває застосунок автоматично?

Основні причини: відсутній android:autoVerify="true" в Intent Filter, assetlinks.json недоступний по HTTPS, невірний SHA256 відбиток, інший сертифікат підпису (debug vs release). Перевірте через adb shell dumpsync domain_verification статус верифікації.

Чи можна використовувати App Link без власного домену?

Ні — для App Link потрібен HTTPS-сервер з доступним assetlinks.json. Якщо у вас немає домену, використовуйте Firebase Hosting або GitHub Pages для хостингу файлу. Альтернатива: Custom URL Scheme (без верифікації) або Firebase Dynamic Links.

Чи працює App Link на Android 5?

Ні — App Link підтримується на Android 6.0 (API 23) і вище. На Android 5 Intent Filter з android:autoVerify="true" ігнорує атрибут і працює як звичайний Deep Link з діалогом вибору. Рекомендується підтримувати обидва механізми для зворотної сумісності.

Підсумки

  • App Link — еволюція Deep Link для Android: https-посилання з автоматичним переходом у застосунок
  • Digital Asset Links — криптографічна верифікація через assetlinks.json на сервері
  • SHA256 відбиток сертифіката підпису — ключовий елемент, що пов'язує розробника з доменом
  • android:autoVerify="true" — обов'язковий атрибут Intent Filter для активації App Link
  • Безпека — App Link виключає перехоплення посилань сторонніми застосунками
  • Google Play Store перевіряє верифікацію App Link при публікації та відхиляє при помилках
  • Jetpack Navigation — рекомендований спосіб обробки App Link з декларативними deep link

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також