Зачем нужны Universal Links
До появления Universal Links (iOS 9, 2015) для открытия приложения через ссылку использовались кастомные URI-схемы: myshop://product/12345. У этого подхода три проблемы: нет верификации (другое приложение может перехватить схему), нет фолбека (если приложение не установлено — ошибка), и на iOS 9+ Safari стал показывать диалог «Open in…» для URI-схем, что ухудшало UX.
Universal Links решают все три проблемы: ссылка выглядит как обычный URL (https://myshop.ru/product/12345), система верифицирует связь домена с приложением, а при отсутствии приложения — просто открывает браузер.
Как это работает технически
iOS (Universal Links):
1. Разработчик размещает apple-app-site-association (AASA) по адресу https://yourdomain.com/.well-known/apple-app-site-association — JSON-файл с App ID и путями.
2. В Xcode приложение получает entitlement Associated Domains → applinks:yourdomain.com.
3. При установке приложения iOS скачивает AASA и строит карту «этот домен + пути → это приложение».
4. При клике на ссылку iOS проверяет карту и открывает приложение, передавая URL.
Android (App Links):
Аналогично — через digital-asset-links.json на домене и autoVerify="true" в манифесте приложения.
E-commerce сценарии
| Сценарий | Без Universal Links | С Universal Links |
|---|---|---|
| Email с товаром | Открывается в браузере | Открывается в приложении на карточке товара |
| QR-код в офлайн-магазине | Браузер (приложение игнорируется) | Приложение с контекстом товара |
| Push-уведомление по тапу | URI-схема или браузер | Прямо в нужный экран приложения |
| Реферальная ссылка | Браузер | Приложение + Attribution |
Важно: Universal Links не работают при длинном нажатии (Long Press → Copy Link) и при переходе из JavaScript (
window.location). Для надёжного роутинга используйте специализированные SDK (Branch, AppsFlyer, Firebase Dynamic Links).