App Links (Android)
App Links — механизм Android, при котором обычная https-ссылка открывается сразу в приложении без диалога выбора, потому что приложение заранее подтвердило владение доменом.
Как приложение доказывает права на домен
Механизм появился в Android 6.0 Marshmallow. Приложение заявляет права на ссылки конкретного домена, система заявку проверяет и при совпадении отдаёт такие ссылки приложению сразу — без вопроса «чем открыть».
Заявка — в манифесте: intent-filter со схемой https, нужным host и атрибутом android:autoVerify="true". Ответная половина лежит на сайте — файл /.well-known/assetlinks.json. В нём перечислены имя пакета и отпечаток SHA-256 сертификата, которым подписано приложение. Файл отдаётся по https, с типом application/json и без редиректов; редирект — частая причина, по которой проверка молча не проходит.
Сверка идёт при установке и обновлении приложения. Совпало — домен закреплён за приложением. Не совпало (в файле ключ отладочной сборки, а магазинная подписана другим) — ссылка откроется в браузере. На Android 12 и новее статус проверки видно командой adb shell pm get-app-links для нужного пакета.
Отличие от myapp:// и от iOS
Кастомная схема вида myapp://product/42 — просто строка, которую приложение зарегистрировало за собой. Права на неё никто не проверяет, ту же схему способно занять второе приложение. Хуже другое: без установленного приложения открывать ссылку нечем — браузер покажет ошибку, а мессенджер нередко даже не сделает её кликабельной. Внутри приложения схемы работают, для внешних точек входа ненадёжны; общая механика — в термине диплинк.
В iOS ту же задачу решают Universal Links: тоже обычная https-ссылка и подтверждение через файл на сайте, только файл другой и правила свои. Адрес для обеих платформ общий, а файлов подтверждения на сайте два.
QR-коды и короткие ссылки
В QR-код кладут обычный https-адрес, а не myapp://. У человека с приложением откроется нужный экран, у остальных — веб-страница, где уместно предложить установку. Запасной сценарий получается сам собой, страница-прокладка не нужна: сгенерировать QR-код на такую ссылку можно за минуту.
С сокращателями тоньше. Решение принимается по домену, на который пришёл переход, поэтому цепочка «короткий домен → редирект → верифицированный домен» способна оставить пользователя в браузере. Если в печати и рассылках короткие адреса, верифицируйте и короткий домен: тот же assetlinks.json на нём, тот же host в манифесте. Параметры не теряются — utm-метки доезжают до приложения вместе с адресом.