Полное руководство по Universal Links
Все, что нужно знать о universal links, deep links и app links для iOS и Android
Без настройки: одна ссылка, которая открывает приложение или нужный магазин
- Бесплатный тариф, без банковской карты
- Запасной вариант: App Store и Google Play
- Открывает приложение на Pro
Содержание
Что такое Universal Links?
Universal links — это URL, которые бесшовно работают между вебом и мобильными приложениями. Когда пользователь нажимает universal link на iOS-устройстве, система проверяет, установлено ли приложение, которое умеет обрабатывать такую ссылку. Если приложение установлено, открывается нужный контент в приложении. Если нет — ссылка открывается в Safari.
На Android аналогичная технология называется App Links. Концепция та же: один URL умно направляет пользователя либо в приложение, либо на сайт.
Человек нажимает на https-ссылку
https://yourdomain.com/products/…
Установлено ли приложение, которое обрабатывает этот домен?
Установлено
Приложение открывается на том самом контенте
Не установлено
Тот же URL открывает ваш сайт
В Safari или в браузере
Ключевые преимущества
- Бесшовный UX без лишних промптов и редиректов
- Один URL работает на всех платформах
- Лучшая атрибуция и аналитика
- SEO-friendly формат (обычные HTTPS URL)
- Работают в email, SMS, соцсетях и любых других каналах
Как работают Universal Links
Процесс включает три ключевых компонента:
Файл Apple App Site Association (AASA)
JSON-файл на вашем домене по пути /.well-known/apple-app-site-association, который сообщает iOS, какие приложения могут обрабатывать ваш домен.
Конфигурация приложения
Приложение должно быть настроено на обработку определенных доменов и URL-шаблонов через entitlements (iOS) или intent filters (Android).
Код обработки URL
Приложение должно принимать deep link URL и открывать нужный экран или контент.
01 · Ваш домен
Файл привязки
Сообщает ОС, какие приложения могут обрабатывать домен
Обе стороны должны совпасть
ОС сверяет файл с приложением
02 · Ваше приложение
Конфигурация приложения
Entitlements на iOS, intent filters на Android: домены и пути, которые оно обрабатывает
03 · Ваше приложение
Код обработки URL
Принимает URL внутри приложения
Нужный экран
Реализация Universal Links на iOS
Шаг 1: Создайте AASA-файл
Создайте файл с именем apple-app-site-association (без расширения) со следующей структурой: apple-app-site-association
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.yourcompany.yourapp",
"paths": [
"/products/*",
"/articles/*",
"/user/*"
]
}
]
}
}Важно
Файл должен раздаваться по HTTPS с валидным SSL-сертификатом и возвращать заголовок Content-Type: application/json.
Шаг 2: Настройте iOS-приложение
В Xcode добавьте capability Associated Domains с вашим доменом:
applinks:yourdomain.com
applinks:www.yourdomain.comШаг 3: Обработайте URL в приложении
// AppDelegate.swift
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL else {
return false
}
// Handle the URL and navigate to appropriate screen
handleUniversalLink(url)
return true
}Реализация App Links на Android
Шаг 1: Создайте assetlinks.json
Разместите этот файл по адресу https://yourdomain.com/.well-known/assetlinks.json:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourcompany.yourapp",
"sha256_cert_fingerprints": [
"XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"
]
}
}]Шаг 2: Обновите AndroidManifest.xml
<activity android:name=".MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="yourdomain.com" />
<data android:pathPrefix="/products" />
</intent-filter>
</activity>Шаг 3: Обработайте Intent
// MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val action = intent.action
val data = intent.data
if (Intent.ACTION_VIEW == action && data != null) {
// Handle the deep link
handleDeepLink(data)
}
}Лучшие практики и частые ошибки
Что делать
- ✅ Всегда используйте HTTPS для домена
- ✅ Тестируйте на реальных устройствах, а не только в симуляторах
- ✅ Укажите адрес сайта для пользователей без приложения (fallback URL)
- ✅ Добавьте полноценную аналитику
- ✅ Корректно обрабатывайте edge cases
- ✅ Поддерживайте AASA/assetlinks файлы в актуальном состоянии
❌Чего не делать
- ❌ Не используйте редиректы для AASA/assetlinks файлов
- ❌ Не забывайте валидировать JSON-синтаксис
- ❌ Не хардкодьте логику навигации в приложении
- ❌ Не предполагаете, что приложение всегда установлено
- ❌ Не пропускайте тестирование на разных версиях ОС
Тестирование и отладка
Тестирование iOS
- 1. Используйте валидатор AASA
- 2. Тестируйте ссылки в Notes, Messages или Mail
- 3. Проверяйте логи в Xcode Console
- 4. Проверьте привязку домена в Settings → Developer
Тестирование Android
- 1. Используйте adb shell am start -a android.intent.action.VIEW -d "your-url"
- 2. Тестируйте в Chrome, Gmail и мессенджерах
- 3. Проверьте статус верификации через adb shell dumpsys package domain-preferred-apps
- 4. Мониторьте ошибки в logcat
Аналитика и атрибуция
Правильная аналитика критична для понимания эффективности universal links. Отслеживайте эти ключевые метрики:
- CTR из разных каналов
- Доля открытий приложения vs переходов на сайт
- Стоимость привлечения по каналам
- Конверсия deep-linked контента
- Время до первого действия после deep link
- Производительность по платформам (iOS vs Android)
Совет
Используйте smart link платформу вроде Appy для автоматической обработки universal links, аналитики и перенаправления пользователей без приложения в магазин приложений или на сайт. Это экономит недели разработки и дает enterprise-grade инфраструктуру.
Попробовать Appy бесплатноВывод
Universal links — важная часть современных мобильных приложений. Они дают бесшовный UX, улучшают атрибуцию и надежно работают на разных платформах. Хотя внедрение требует внимания к деталям, преимущества в UX и аналитике стоят усилий.
Начните с базовой реализации, тщательно протестируйте и улучшайте решение по данным реальной эксплуатации. А если хотите избежать сложности — используйте Appy, который берет это на себя автоматически.
Полезные ресурсы Appy
Изучите инструменты Appy для universal links, deep links и QR-кодов, чтобы ускорить рост мобильного приложения.
- Universal Link Validator для проверки iOS Universal Links и Android App Links.
- Branded QR Code Generator для кампаний на установки и офлайн-воронок.
- Функции smart-ссылок включая deep links, правила маршрутизации и аналитику.
Продолжить изучение
Как измерять установки приложения без фингерпринтинга
Apple не допускает фингерпринтинг, даже если пользователь согласился на отслеживание, а европейские регуляторы считают отслеживание по IP-адресу доступом к устройству. Разбираем, что по-прежнему измеряет установки с доказательством на iPhone и Android, и собираем план, который никогда не гадает.
Как встроенные браузеры обрабатывают диплинки: Instagram, TikTok, Facebook, Gmail, Telegram и другие
Из Safari ссылка открывает приложение, а внутри Instagram не работает. Разбираем, какой браузер использует каждое приложение, какие правила задают Apple, Google и Chrome и что с этим можно сделать.
Узнайте, какая ссылка принесла каждую установку: SDK Appy для iOS и Android
Appy теперь видит, что происходит с вашими ссылками после стора. Новый SDK показывает установки, события в приложении и выручку по каждой ссылке, QR-коду и кампании и открывает новым пользователям нужный экран.
Ищете другое? Посмотрите все темы в блоге.
Без лишней сложности. Используйте Appy.
Appy автоматически обрабатывает universal links, deep links, QR-коды и аналитику. Без кода.