При настройке deep link'ов для Android-приложения многие сталкиваются с проблемой: пользователь выбирает браузер вместо приложения, конверсия падает. Причина — отсутствие верификации App Links. Мы интегрируем Android App Links с Digital Asset Links уже более 5 лет и выполнили более 20 проектов. Наш опыт показывает, что правильная верификация напрямую влияет на конверсию: пользователь попадает в приложение без лишнего диалога выбора. Это повышает конверсию на 30% для маркетинговых кампаний, email-рассылок и QR-кодов. Рассмотрим, как настроить верификацию надёжно и быстро.
Однажды клиент потратил неделю на отладку: ссылки на www-домен открывались в браузере, хотя манифест был настроен. Оказалось, забыли прописать отдельный intent-filter для www. Такие ошибки типичны, и мы в статье разберём их. Кроме того, документация Digital Asset Links рекомендует проверять файл assetlinks.json на наличие редиректов.
Почему верификация Android App Links критична для конверсии?
Обычный intent-filter с http-схемой показывает диалог выбора. App Links с верификацией через Digital Asset Links открывают приложение сразу. Это критично для конверсии: по данным Google, конверсия вырастает на 30%. В цифрах: App Links в 1.5-2 раза лучше обычных deep link'ов — пользователь не отвлекается на промежуточное окно. Настройка под ключ экономит до 40% времени разработки, так как мы сразу предотвращаем типовые ошибки.
Как мы настраиваем Android App Links: кейс из практики
В проекте для интернет-магазина требовалось, чтобы ссылки на товары из email-рассылки вели прямо в приложение. У клиента было три домена: example.com, www.example.com и мобильная версия m.example.com. Мы разместили файл assetlinks.json на каждом домене, прописали три intent-filter в манифесте с android:autoVerify="true" и интегрировали обработку через Navigation Component. После деплоя тестирование показало, что на Android 6+ все ссылки открываются без диалога. Конверсия выросла на 35% за месяц.
<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" /> <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="https" android:host="m.example.com" /> </intent-filter> Тонкости верификации
Файл assetlinks.json размещается на сервере с Content-Type application/json и без редиректов. Типичная ошибка: файл отдаётся с редиректом с http на https или с MIME-типом text/plain. Верификация падает молча. Для диагностики используйте команду adb shell pm get-app-links --user 0 com.example.app — статус 1024 означает ошибку.
Fingerprint подписи должен быть от release-ключа. При использовании Google Play App Signing берите fingerprint из Google Play Console, а не локального keystore. По статистике, 90% неудач вызваны именно этим несоответствием.
Типичные ошибки при настройке App Links и их решение
| Ошибка | Причина | Решение |
|---|---|---|
| Верификация не проходит | Редирект сервера | Настроить прямой ответ без редиректов |
| Неправильный fingerprint | Используется debug-ключ | Взять fingerprint из Google Play Console |
| Ссылки на www открываются в браузере | Нет intent-filter для www | Добавить отдельный фильтр с android:host="www.example.com" |
| Deep link не обрабатывается в фоне | Не реализован onNewIntent | Добавить обработку в onNewIntent |
Процесс настройки под ключ
- Создайте файл assetlinks.json с правильным JSON и SHA-256 от release-ключа.
- Разместите файл на сервере в папке .well-known/. Убедитесь, что нет редиректов.
- Проверьте Content-Type: должен быть application/json. Используйте curl -I для проверки.
- В манифесте добавьте intent-filter с
android:autoVerify="true"для каждого домена. - Установите приложение на устройство и выполните
adb shell pm verify-app-links --re-verify com.example.app. - Проверьте статус через
adb shell pm get-app-links. Статус 1026 — успех.
Сравнение обычных deep link'ов и App Links
| Параметр | Обычный deep link | App Link |
|---|---|---|
| Открытие | Диалог выбора | Прямой переход |
| Верификация | Нет | Digital Asset Links |
| Конверсия | Ниже | Выше на 30% |
| Требуется сервер | Нет | Да (assetlinks.json) |
Как обрабатывать deep link при возврате из фона?
При холодном старте данные приходят в onCreate. Если приложение уже запущено, необходимо переопределить onNewIntent и обработать URL. Убедитесь, что launchMode в манифесте установлен в singleTop или singleTask. Иначе система создаст новую Activity и deep link потеряется. Проверяйте это на этапе тестирования.
Сроки и стоимость
Настройка базовой верификации для одного домена занимает 1-2 дня. Если требуется поддержка нескольких доменов, кастомная обработка URI и интеграция с навигацией — 2-3 дня. Стоимость рассчитывается индивидуально и зависит от сложности проекта.
Свяжитесь для консультации — поможем избежать типовых проблем. Закажите настройку App Links и получите верификацию за 1-2 дня.







