В чем разница универсальных и обычных диплинков и почему универсальные работают на iOS и Android
Что проверяют
Понимаете ли вы, как ссылки устроены на уровне платформы, и сможете ли поэтому составить осмысленную матрицу проверок. Следом обычно просят перечислить, что именно вы проверите в задаче «ссылка из письма открывает карточку товара в приложении».
Как отвечать
- обычный диплинк (custom scheme): адрес вида
myshop://product/42. Схему может зарегистрировать любое приложение, система ничего не проверяет. Если приложения нет, ссылка просто не откроется; - Universal Links (iOS): обычный
https://shop.ru/product/42. Приложение объявляет домен в entitlementapplinks:shop.ru, а сайт подтверждает связь файломapple-app-site-associationв каталоге/.well-known/; - App Links (Android): тот же
https-адрес,intent-filterсandroid:autoVerify="true"и файлassetlinks.jsonс отпечатком SHA-256 ключа подписи в/.well-known/на сайте.
Почему универсальные работают на обеих платформах: это не одна технология, а одна ссылка. Каждая система проверяет связь домена с приложением своим механизмом, а если приложения нет, открывает тот же адрес в браузере. Схему без домена так не подтвердить, поэтому она и ненадёжна.
Матрица проверок: приложение установлено и нет, пользователь залогинен и нет, открытие из почты, заметок, мессенджеров и встроенных браузеров соцсетей, несуществующий путь. На Android статус проверки домена показывает adb shell pm get-app-links <package>, ссылку открывают через adb shell am start -a android.intent.action.VIEW -d <url>, на симуляторе iOS через xcrun simctl openurl booted <url>.
Где спотыкаются
Считают, что обычный диплинк сам уводит на сайт, если приложения нет. Такой фолбэк даёт только связка с доменом или отдельный редирект на сервере.
Проверяют Universal Link, вставляя адрес в строку Safari. Так iOS откроет сайт, а не приложение, и появится ложный баг. Проверять нужно тапом по ссылке из другого приложения.
Путают App Links с отложенными диплинками. Открыть нужный экран после установки из стора умеют сторонние SDK вроде AppsFlyer или Branch, а Firebase Dynamic Links закрыты в 2025 году.