Валидатор Universal Links и App Links
Вставьте apple-app-site-association или assetlinks.json и найдите ошибки раньше, чем Apple или Google.
Перед выпуском
- Отдавайте файл по HTTPS в /.well-known/ на каждом домене ссылок, без редиректа.
- Тип — application/json (у apple-app-site-association без расширения .json).
- Берите сертификат той сборки, которую ставят люди: у Google Play App Signing он свой.
- После изменения файла переустановите приложение — устройства его кэшируют.
Как это работает
- Файл проверяется в браузере: структура, ID приложений, пути и отпечатки сертификатов.
- Браузер не может загрузить файл с чужого сайта, поэтому вставьте содержимое, а не адрес.
- Правильный файл — половина дела, вторая половина — в чек-листе ниже.
Почему Universal Links открывают Safari, а не приложение
iOS загружает apple-app-site-association через CDN Apple при установке приложения, а не при нажатии на ссылку. Если в этот момент файла не было, он отдавался с редиректом или был с ошибкой, ссылки будут открываться в Safari, пока приложение не переустановят или не обновится кэш.
Частые причины: в appIDs указан bundle ID без 10-символьного Team ID впереди; paths или components не совпадают со ссылкой; файл отдаётся с редиректом или с другого хоста (www вместо голого домена); или в entitlement Associated Domains приложения нет «applinks:» с точным хостом.
И ещё одна: ссылка, нажатая на том же домене, что и открытая страница, намеренно остаётся в Safari. Проверяйте из «Заметок», «Сообщений» или с другого сайта.
Почему Android App Links открывают браузер
Android проверяет assetlinks.json для каждого хоста в intent-фильтре с android:autoVerify="true". Если проверка не прошла хотя бы для одного из них, ни одна из ссылок не будет открывать приложение автоматически.
Чаще всего виноваты отпечатки: в файле указан debug-ключ или ключ загрузки, а люди ставят сборку, подписанную Google Play App Signing. Скопируйте SHA-256 из Play Console в разделе «Целостность приложения» и перечислите все ключи, которыми подписаны сборки, которые ставят люди.
На Android 12 и новее состояние можно проверить командой adb shell pm get-app-links с именем вашего пакета и перезапустить проверку после исправления файла.
Частые вопросы
Где должен лежать apple-app-site-association?
По адресу https://your-domain/.well-known/apple-app-site-association, по HTTPS, без редиректа, с типом application/json и без расширения .json.
Где должен лежать assetlinks.json?
По адресу https://your-domain/.well-known/assetlinks.json, по HTTPS, без редиректа, с типом application/json.
Почему нельзя проверить файл по адресу?
Браузеры не дают странице читать файлы с другого сайта, если тот это не разрешил, а для этих файлов обычно не разрешено. Откройте адрес, скопируйте содержимое и вставьте его сюда.
Какой отпечаток SHA-256 нужен?
Сертификата, которым подписана сборка, которую ставят люди. При Google Play App Signing это ключ подписи приложения из Play Console, а не ваш ключ загрузки. Добавьте оба, если вы также распространяете сборки, подписанные своим ключом.
Я исправил файл, а ссылки всё равно открывают браузер. Почему?
Устройства кэшируют результат. На iOS переустановите приложение, на Android перезапустите проверку или переустановите приложение. Также убедитесь, что в Associated Domains или intent-фильтрах приложения указан точный хост.
Другие бесплатные инструменты
- Генератор QR-кодов для App Store и Google Play
- Генератор ссылок на App Store и Google Play
- Тестер редиректа умной ссылки
- Генератор apple-app-site-association и assetlinks.json
Одна ссылка и QR-код на все магазины
SetLinks отправляет каждого посетителя в его магазин и считает каждый клик. Бесплатный старт.
Создать умную ссылку