QRkoder

Universal Link (iOS)

Universal Link — механизм Apple (iOS 9+), при котором обычный HTTPS-URL автоматически открывает установленное приложение вместо браузера, а при отсутствии приложения — переходит на сайт.

Определение Universal Link

Universal Link — механизм Apple, введённый в iOS 9 в 2015 году. Суть простая: обычный HTTPS-URL вроде https://example.com/product/42 при нажатии на iPhone открывает не Safari, а установленное приложение — прямо на нужном экране. Если приложения на устройстве нет — URL ведёт себя как обычная ссылка и открывает сайт в браузере. Никаких лишних диалогов «открыть в приложении», никаких переходов через кастомную схему.

До Universal Links разработчики использовали custom URL schemes вида myapp://product/42. Этот подход имел два принципиальных изъяна: если приложение не установлено, браузер показывал ошибку вместо сайта, а любое стороннее приложение могло зарегистрировать ту же схему и перехватить трафик. Universal Links решают обе проблемы — HTTPS-URL принадлежит домену, и подделать владельца нельзя.

Как настроить Universal Link

Настройка требует двух шагов.

Файл apple-app-site-association (AASA) на сервере. Размещается по пути https://example.com/.well-known/apple-app-site-association — без расширения, строго по HTTPS, без редиректов. Минимальная структура: JSON с полем applinks.details, где appID — это Team ID + bundle identifier приложения, а paths — список URL-паттернов, которые должны открываться в приложении. Остальные пути домена iOS не трогает и открывает в Safari.

Associated Domains в Xcode. В настройках target-а приложения включается capability Associated Domains, добавляется запись applinks:example.com. При установке iOS скачает AASA через CDN Apple и закэширует связь. Изменения в файле могут применяться с задержкой до 48 часов — CDN обновляется не мгновенно.

Universal Link vs Custom URL Scheme

Старый подход — custom URL scheme вида myapp://product/42 — работал, пока приложение установлено. Если нет — браузер показывал ошибку, пользователь застревал. Ещё хуже: любое стороннее приложение могло зарегистрировать ту же схему и перехватить трафик. HTTPS-ссылка в Universal Link принадлежит конкретному домену, поэтому подделать владельца невозможно.

Разница в поведении при отсутствии приложения критичная: custom scheme даёт ошибку, Universal Link тихо открывает сайт. Для пользователя это невидимо — он просто попадает на нужную страницу. Для маркетинга это означает, что один и тот же QR-код или ссылка работает и как мобильный deep link, и как веб-страница без двух версий материала.

Аналог на Android — App Links с файлом assetlinks.json. Принцип идентичный, синтаксис JSON отличается. Для кросс-платформенного deep linking один HTTPS-URL конфигурируется под обе платформы одновременно — один QR-код охватывает всех.

Частые вопросы

Почему Universal Link не открывает приложение, хотя оно установлено?

Три самые частые причины. Первая: AASA-файл недоступен или отдаётся с редиректом — iOS требует прямого 200 OK по HTTPS, редиректы блокируют загрузку. Вторая: путь в URL не совпадает ни с одним паттерном в поле paths — добавьте нужный путь или используйте "/*" для охвата всех. Третья: iOS кэшировал старую версию AASA — после изменения файла нужно переустановить приложение или подождать обновления кэша Apple CDN (до 48 часов).

Работает ли Universal Link в WKWebView внутри другого приложения?

По умолчанию — нет. WKWebView не обрабатывает Universal Links: ссылка откроется как обычный URL внутри вебвью. Чтобы обойти это, разработчик стороннего приложения должен перехватить навигацию в WKNavigationDelegate и самостоятельно открыть UIApplication.open с этим URL. Если у вас нет доступа к коду контейнерного приложения — единственный вариант это Custom URL Scheme или просьба к пользователю открыть ссылку в Safari.

Можно ли зашить Universal Link в QR-код?

Да, это один из самых надёжных сценариев. QR-код содержит обычный HTTPS-URL; iPhone сканирует его через камеру и сразу открывает приложение, если оно установлено. Если нет — пользователь попадает на страницу сайта, где можно предложить скачать приложение. Такой подход работает и на Android: тот же HTTPS-URL можно настроить как App Link через assetlinks.json, получив единый QR для обеих платформ без редиректов.

Чем Universal Link отличается от App Clip?

Universal Link открывает уже установленное полноценное приложение, а при его отсутствии просто переходит на сайт. App Clip — это другой сценарий: мини-версия приложения (до 10 МБ), которая запускается без установки через App Store. App Clip внутри всё равно использует Universal Link как транспорт URL, но конечный результат другой — пользователь получает мгновенно загруженный микро-интерфейс, а не веб-страницу. Обе технологии дополняют друг друга: Universal Link для текущих пользователей, App Clip — для новых.

Universal Link работает только на iPhone?

Нет. Apple добавила поддержку Universal Links в macOS Catalina (10.15) в 2019 году. Тот же AASA-файл и те же настройки Associated Domains работают для macOS-приложений. Это значит, что один HTTPS-URL может открывать нативное приложение как на iPhone, так и на Mac, если разработчик поддерживает обе платформы. На Apple Watch и Apple TV Universal Links также поддерживаются начиная с watchOS 6 и tvOS 9 соответственно.

Создавайте QR-коды бесплатно

Динамические QR-коды с аналитикой, дизайном и без ограничений по сканированиям.

Начать бесплатно