Бесплатный dev-инструмент
Валидатор универсальных ссылок
Проверьте, что ссылки открывают приложение. Вставьте домен, чтобы проверить Universal Links для iOS и App Links для Android, и получите понятный отчет с шагами по исправлению.
Как это работает
Что происходит, когда нажимают на вашу ссылку
Ни одна из платформ не обращается к вашему домену в момент нажатия. Обе проверяют его при установке приложения, запоминают ответ и используют его, когда кто-то нажимает на ссылку. Поэтому сломанный файл может днями оставаться незамеченным, а исправленный начинает работать не сразу.
iPhone и iPad
apple-app-site-associationПри установке
Читает Associated Domains
iOS смотрит записи
applinks:в entitlement Associated Domains приложения.При установке
Забирает файл через CDN Apple
CDN Apple скачивает файл с вашего домена и отдаёт устройству свою кэшированную копию.
При нажатии
Сопоставляет ссылку
iOS сравнивает домен и путь ссылки с app ID и правилами
pathsилиcomponentsиз этого файла.Результат
Совпадение: открывается приложение
Нет совпадения или файла: страница открывается в Safari
Android
assetlinks.jsonПри установке
Читает intent filters
Android находит intent filters с
autoVerifyдля вашего домена.При установке
Скачивает assetlinks.json
Запрашивает файл из
/.well-known/на каждом объявленном хосте. Редирект считается ошибкой.При установке
Проверяет сертификат подписи
Имя пакета и отпечаток SHA-256 в файле должны совпадать с сертификатом, которым подписано установленное приложение.
Результат
Проверено: открывается приложение
Не проверено: открывается браузер, а в старых версиях Android — окно выбора приложения
Проверки
Что проверяет этот инструмент
Один запуск делает до десяти запросов: оба файла ассоциации на вашем домене и на его двойнике с www или без, копию в CDN Apple и Digital Asset Links API от Google. Вот на что он смотрит.
Два адреса, два хоста
Ищет
apple-app-site-associationв/.well-known/и в корне сайта, аassetlinks.json— в/.well-known/, на вашем домене и на его версии с www.HTTPS и ответ 200
Показывает HTTP-статус каждого запроса, а также тайм-ауты и ошибки соединения, из-за которых файл не загружается.
Редиректы
Проходит по редиректам, показывает, где закончился каждый запрос, и предупреждает, если итоговый адрес на другом хосте или на обычном HTTP.
HTML вместо JSON
Распознаёт страницу входа, шаблон ошибки или проверку на бота от Cloudflare, Akamai и похожих сервисов и показывает полученный заголовок Content-Type.
Корректный JSON
Разбирает каждый файл и при ошибке приводит сообщение парсера, чтобы было понятно, что исправлять.
applinks и app ID
Проверяет, что
applinks.detailsсуществует, и выводит все найденные app ID. Добавьте свой App ID в разделе «Дополнительно», чтобы убедиться, что он там есть. Подписанные файлы (PKCS7) распознаются, но не расшифровываются.Relation и имена пакетов
Проверяет, что assetlinks.json — это JSON-массив с relation
delegate_permission/common.handle_all_urls, и выводит имена пакетов. Добавьте свой пакет в разделе «Дополнительно», чтобы сверить его.Отпечаток SHA-256
Вставьте отпечаток сертификата подписи в разделе «Дополнительно», и валидатор найдёт его в файле, с двоеточиями или без.
Копия Apple и взгляд Google
Читает копию, которую CDN Apple отдаёт iPhone, и спрашивает у Digital Asset Links API от Google, что тот видит для вашего сайта, чтобы вы могли сравнить обе с вашим сервером.
Файла ещё нет или JSON не проходит проверку?Создайте его в генераторе AASA и assetlinks.json
Чего он не видит
Сторону приложения: entitlement Associated Domains, intent filters, попадает ли конкретный путь под ваши правила paths или components и как ведёт себя тот или иной встроенный браузер. Проверьте это на реальном устройстве до запуска.
Диагностика
Почему ссылки всё ещё открываются в браузере
Почти всегда причина — одна из этих восьми. Серверные видны в валидаторе, остальные проявляются только на настоящем телефоне.
- 01iOS + Android
Нажатие происходит внутри Instagram, Facebook или TikTok
Из Заметок или Сообщений работает, из био или рекламы открывается веб-страница.
Решение
Эти приложения открывают ссылки во встроенном браузере, который часто не передаёт адрес в iOS или Android. Проверяйте каждый канал отдельно и убедитесь, что ссылка ведёт в полезное место, даже если приложение не открылось: например, на страницу в магазине или на ваш сайт.
Проверьте на устройствеDeep links из Instagram и TikTok - 02iOS + Android
Файл ассоциации отдаёт редирект
В браузере файл открывается нормально, а проверка не проходит.
Решение
Apple и Android ждут прямой ответ 200 по точному адресу. Уберите на
/.well-known/редиректы с http на https, с голого домена на www и по языку.Видно в валидатореУниверсальные ссылки открывают Safari? - 03iOS + Android
Неверный Content-Type
Файл загружается, но платформа его игнорирует.
Решение
Отдавайте оба файла как
application/json. У файла AASA нет расширения, поэтому многие серверы отправляютapplication/octet-streamилиtext/plain.Видно в валидатореУниверсальные ссылки открывают Safari? - 04iOS
В CDN Apple всё ещё старый файл
Файл исправлен, а iPhone по-прежнему открывают Safari.
Решение
CDN Apple отдаёт кэшированную копию, которая отстаёт от вашего сервера; валидатор показывает обе. Во время тестов добавьте
?mode=developerк entitlement и включите Associated Domains Development в настройках разработчика на устройстве.Видно в валидатореПолное руководство по универсальным ссылкам - 05Android
Нет ключа Play App Signing
Ваши сборки открывают приложение, установки из Play Store — браузер.
Решение
С Play App Signing приложение, которое устанавливают пользователи, подписывает Google. Добавьте SHA-256 из Play Console, раздел «Целостность приложения», сертификат ключа подписи приложения. Если распространяете сборки вне Play, оставьте и ключ загрузки.
Видно в валидатореAndroid App Links не проходят проверку - 06iOS
Ссылка ведёт на домен самой страницы
Кнопки на вашем сайте открывают новые веб-страницы, а не приложение.
Решение
iOS оставляет человека в Safari, если он нажимает универсальную ссылку на тот же домен, на котором уже находится. Вынесите ссылки на приложение на отдельный поддомен или используйте на сайте Smart App Banner.
Проверьте на устройствеПолное руководство по универсальным ссылкам - 07iOS
Пользователь однажды выбрал Safari
На вашем телефоне ссылка работает, на телефоне коллеги — нет.
Решение
Нажатие на домен в правом верхнем углу после открытия приложения говорит iOS предпочитать Safari для этого домена. Чтобы вернуть всё назад, нажмите на ссылку и удерживайте, затем выберите открытие в приложении.
Проверьте на устройствеУниверсальные ссылки открывают Safari? - 08iOS
App ID не совпадает со сборкой
В staging-сборке работает, в релизной — нет.
Решение
Запись должна состоять из вашего Team ID и точного bundle ID опубликованного приложения, например
ABCDE12345.com.example.app. Введите его в разделе «Дополнительно», и валидатор проверит.Видно в валидатореПолное руководство по универсальным ссылкам
Без возни с настройкой
Ссылки, которые просто работают
Ссылка Appy смотрит на каждое нажатие и отправляет его куда нужно: в App Store на iPhone, в Google Play на Android, на ваш сайт с компьютера. Подключите deep links на Pro, и те, у кого приложение уже установлено, сразу попадут в него.
- Бесплатный тариф
- Без банковской карты
- Безлимитные клики на любом тарифе
- Ссылки работают и после отмены подписки
На Enterprise приложение получает собственный домен для ссылок, и Appy размещает на нём apple-app-site-association и assetlinks.json за вас. Как работает SDK
Частые вопросы
Что такое файл apple-app-site-association (AASA)?
JSON-файл на вашем домене, который сообщает iOS, какие приложения могут открывать какие ссылки. Он лежит по адресу https://ваш-домен/.well-known/apple-app-site-association, без расширения .json, и перечисляет ваши app ID (Team ID плюс bundle ID) с правилами paths или components, которые они обрабатывают.
Где должны лежать файлы ассоциации?
iOS читает /.well-known/apple-app-site-association, Android — /.well-known/assetlinks.json, на каждом хосте, который вы используете в ссылках. Оба должны загружаться по HTTPS с прямым ответом 200, без редиректов и с content type application/json.
Почему универсальные ссылки открывают Safari вместо приложения?
Либо проверка не прошла (файла нет, он отдаёт редирект или некорректен, либо app ID не совпадает со сборкой), либо iOS выбрала Safari намеренно: нажатие было во встроенном браузере или на странице того же домена, либо пользователь однажды выбрал Safari. Сначала запустите валидатор; если он ничего не нашёл, проверьте эти случаи на устройстве.
Почему ссылки в маркетинговых письмах открывают браузер, а не приложение?
Сервисы рассылок подменяют каждую ссылку трекинговым URL на своём домене. iOS и Android принимают решение только по этому первому домену, а редирект после него уже не может открыть приложение. Переключите валидатор в режим «Ссылка из письма» и вставьте ссылку из тестового письма: он пройдёт по редиректам, определит сервис рассылок и покажет, что нужно настроить на трекинговом домене.
Как проверить assetlinks.json?
Введите домен выше и откройте раздел «Дополнительно», чтобы добавить имя пакета и отпечаток SHA-256. На тестовом телефоне команда adb shell pm get-app-links com.example.app покажет, отметил ли Android каждый домен как проверенный.
Почему Android пишет, что проверка App Links не прошла?
Чаще всего отпечаток в assetlinks.json принадлежит ключу загрузки, а установки из Play Store подписаны ключом подписи Google. Дальше идут редиректы, неверный content type и защита от ботов на /.well-known/. Исправив файл, выполните adb shell pm verify-app-links --re-verify com.example.app.
Как быстро Apple подхватывает изменённый AASA?
Мгновенного обновления нет. Устройства получают файл из CDN Apple, который отдаёт кэшированную копию, поэтому исправление на сервере доходит не сразу. Валидатор показывает копию из CDN рядом с вашей. На этапе разработки ?mode=developer в entitlement позволяет устройству брать файл прямо с вашего сервера.
Работают ли универсальные ссылки внутри Instagram, Facebook или TikTok?
Часто нет. Эти приложения открывают ссылки во встроенном браузере, и дойдёт ли нажатие до вашего приложения, зависит от приложения и места размещения. Проверяйте каждый канал и убедитесь, что ваш сайт или карточка в магазине сами по себе хороши как точка назначения.
Проверяет ли валидатор моё приложение, entitlements или пути?
Он читает то, что возвращают ваш сервер, CDN Apple и Digital Asset Links API от Google. Для ссылки из письма он также проверяет, покрывают ли её правила в файле AASA. Сторона приложения — entitlement Associated Domains и intent filters — требует проверки на реальном устройстве.
Чем deep links отличаются от универсальных ссылок?
Deep link — любая ссылка, которая открывает определённый экран в приложении. Universal Links в iOS и App Links в Android — проверенная разновидность: обычные HTTPS-адреса, которые открывают приложение, если оно установлено, и веб-страницу, если нет.
Нужен ли аккаунт и можно ли поделиться результатом?
Аккаунт не нужен, валидатор бесплатный. У каждого запуска есть свой адрес, который можно скопировать и отправить разработчику. Эти страницы с результатами не индексируются поисковиками.
Что почитать дальше
Гайды для следующего шага
- Полное руководство по универсальным ссылкамПошаговая настройка файла AASA, assetlinks.json и стороны приложения.
- Универсальные ссылки открывают Safari?Повторяемый порядок диагностики для ссылок, которые уходят в браузер.
- Android App Links не проходят проверкуЧек-лист с adb, Play App Signing и исправления, после которых Android проверяет домен.
- Deep linking и универсальные ссылкиЧто делает каждый вариант и что происходит, если приложение не установлено.
- Deep links из Instagram и TikTokКак встроенные браузеры обращаются со ссылками и как вести трафик из соцсетей к установкам.
- Генератор QR-кодовПревратите ссылку в фирменный QR-код для печати, упаковки и презентаций.