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 секунд при первом переходе.

Автоматический переход (Automatic Redirect)

После успешной верификации 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
Диалог выбораПоказываетсяАвтоматический переход
Android версияAPI 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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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