Глубокие ссылки. Open the app. Fall back gracefully.
Манифесты Universal Links и App Links, обслуживаемые вашим пользовательским доменом. iOS открывает ваше приложение по нажатию; Android делает то же самое. Резервное перенаправление в браузер на настольных компьютерах.
- Universal Links (iOS) and App Links (Android) served from your domain
- Deferred deep links — context survives app install
- Smart platform detection with graceful fallbacks
- No SDK required — works with standard OS mechanisms
Universal Links & App Links
Manifest files, auto-served from your domain
iOS Universal Links require an apple-app-site-association file. Android App Links require assetlinks.json. Elido generates and serves both from your custom domain automatically — no separate hosting, no manual file management.
- iOS Universal LinksBundle ID + Team ID → AASA served at /.well-known/ automatically
- Android App LinksPackage name + SHA-256 fingerprint → assetlinks.json, HTTPS enforced
- Smart-link fallbackApp not installed → App Store / Play Store via rule-based routing
- UTM passthroughUTM parameters preserved to store URL — attribution doesn't break
- No SDK in your appOS-level interception only; intent-filter and continueUserActivity
{ "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.yours.app", "paths": [ "/product/*", "/referral/*", "/invite/*" ] } ] } }
[{ "relation": [ "delegate_permission/ common.handle_all_urls" ], "target": { "namespace": "android_app", "package_name": "com.yourcompany.app", "sha256_cert_fingerprints": [ "AB:12:CD:34:EF:56:..." ] } }]
Served from your custom domain automatically. Configure bundle ID + Team ID (iOS) or package name + SHA-256 fingerprint (Android) in domain settings — Elido generates and hosts both files.
Deferred deep links
Context that survives the install
When the app isn’t installed, the user goes to the store, installs, and opens the app. Deferred deep-linking passes the original deep-link context through that journey so the app can land the user on exactly the right screen after first launch.
- 01
Clicks link
User taps an Elido short link — from email, social, QR.
go.yourcompany.com/p/12345 - 02
No app → Store
App not installed. OS detects from AASA / assetlinks check. Falls back to App Store or Play Store.
iOS → App Store · Android → Play Store - 03
Installs app
User installs from the store. The install referrer carries the click context as a query parameter.
click_id + UTM preserved in referrer URL - 04
Opens app
App opens for the first time. MMP reads install referrer; maps click_id to the install event.
Appsflyer / Adjust / Branch picks it up - 05
Lands on exact page
App routes to the originally linked screen — product/12345 — as if the user had the app already.
product/12345 — context preserved through install
The click_id and UTM parameters from the original short link are passed as query parameters to the store URL. Mobile Measurement Platforms (MMPs) that capture the install referrer — Appsflyer, Adjust, Branch — can match the install to the originating click. Full deferred deep-linking (passing in-app context through install) requires the MMP SDK in your app; Elido covers the link layer.
Smart platform detection
One link. Three redirect paths.
The edge reads User-Agent and platform signals at the redirect layer — before any JS runs. iPhone gets Universal Links, Android gets App Links, desktop gets your web fallback. No JavaScript redirect delay; no client-side platform detection.
- UA parsing at the edge, sub-millisecond
- iOS → Universal Link interception by the OS
- Android → App Link interception via intent-filter
- Desktop → web URL, no store detour
- In-app browsers detected and redirected to system browser
- Composes with smart-link rules — geo + device + deep-link
What you can do
- Apple App Site Association
- Android Asset Links
- Правила умных ссылок для резервного перенаправления в магазин
- Протестировано с adb и xcrun
Как на самом деле работают диплинки — и где они ломаются
Universal Links и App Links — это механизмы на уровне ОС. Настройка проста, но пограничные случаи — нет. Здесь описана вся картина.
apple-app-site-association раздается автоматически с вашего кастомного домена
Universal Links требуют наличия файла apple-app-site-association (AASA) по пути /.well-known/apple-app-site-association на вашем кастомном домене. iOS скачивает этот файл при установке приложения; он связывает ваш домен с bundle ID и team ID приложения. Если привязка верна, нажатие на HTTPS-ссылку вашего домена в любом приложении iOS (Safari, Почта, Twitter, Instagram) откроет ваше приложение напрямую вместо браузера. Elido автоматически генерирует и раздает файл AASA с вашего домена на основе данных, указанных в настройках. Вам не нужно хостить файл отдельно. iOS кэширует AASA и периодически обновляет его; изменения в Elido вступают в силу мгновенно, но устройства подхватят их при следующем обновлении кэша (обычно 24-48 часов или при переустановке). Проверено валидатором Apple AASA в каждом релизе Elido.
assetlinks.json раздается автоматически — SHA-256 отпечаток вашего ключа подписи
Android App Links требуют наличия файла Digital Asset Links по пути /.well-known/assetlinks.json на вашем домене. Файл связывает домен с именем пакета приложения и SHA-256 отпечатком вашего сертификата подписи. Android проверяет этот файл при установке и периодически после неё. Elido раздает его автоматически на основе настроенных вами данных. Для верификации Android требуется HTTPS (обеспечивается TLS от Elido) и быстрый ответ сервера. Распространенная ошибка: разные ключи для debug и release сборок имеют разные SHA-256. Укажите оба отпечатка в настройках Elido для тестирования; для продакшена нужен только release. Проверено через adb shell pm get-app-links.
Приложение установлено → диплинк. Не установлено → магазин. Десктоп → веб. UTM сохраняются везде.
Цепочка отката настраивается для каждой ссылки или домена. Для короткой ссылки с диплинком: если ОС перехватывает нажатие (приложение установлено, домен подтвержден), открывается приложение. Если нет, ссылка открывается в браузере, который перенаправляет в App Store / Play Store или на веб-страницу. Правила смарт-ссылок управляют этим: настройте правило iOS → App Store, Android → Play Store и дефолтный веб-адрес. Параметры UTM сохраняются в URL отката, поэтому атрибуция не прерывается при переходе в магазин. Отложенные диплинки (передача пути внутрь приложения после установки) требуют SDK — Elido этого не делает. Для этого по-прежнему нужны Appsflyer, Adjust или Firebase App Distribution.
Пост-установочный ретаргетинг: click ID передается для атрибуции
При редиректе через диплинк Elido передает click_id как параметр запроса в URL отката. Если пользователь попадает в магазин и устанавливает приложение, click_id присутствует в реферальном URL, но не пробрасывается в приложение автоматически — для этого нужны SKAdNetwork на iOS или SDK для отложенных диплинков на Android. Elido передает click_id и UTM в URL магазина, чтобы платформа мобильной атрибуции (MMP), фиксирующая источник установки, могла их считать. Это работает с Appsflyer и Adjust, если передать click_id в параметре кампании. Без использования MMP click_id в ссылке на магазин будет фактически утерян после установки.
Миграция с Firebase Dynamic Links (закрытие в 2025 году)
Google закрывает Firebase Dynamic Links в 2025 году. Elido поддерживает основной паттерн: единая HTTPS-ссылка, которая открывает нужный экран в приложении, ведет в магазин или на веб-сайт. Настройте AASA и assetlinks.json в Elido (вместо хостинга Firebase), обновите ссылки на домен Elido и настройте цепочку отката через смарт-ссылки. Что Elido не заменяет: отложенные диплинки Firebase (контекст после установки через SDK) и диплинки App Distribution. Если ваше приложение сильно зависит от передачи контекста через установку, вам понадобятся Branch или Adjust вместе с Elido. Для кейсов 'открыть экран, если установлено, иначе — в магазин' Elido полностью заменяет Firebase Dynamic Links.
Мобильные команды, использующие диплинки Elido
Имена являются временными заглушками — реальные названия появятся по мере публикации кейсов.
“Мы перешли с Firebase Dynamic Links сразу после анонса их закрытия. Настройка AASA и assetlinks.json в Elido заняла полдня. Смарт-ссылки заменили логику SDK Firebase для маршрутизации в магазины приложений.”
“Аналитика кликов по диплинкам показала, что 35% переходов были с десктопа, где у нас не было отката. Добавление fallback заняло 10 минут; конверсия выросла, так как пользователи с компьютеров теперь могут завершить целевое действие.”
“Мы используем короткие ссылки Elido с диплинками для реферальных программ. Передача UTM в URL магазина означает, что наша MMP корректно определяет источник установки — атрибуция работает без внедрения кастомных SDK.”
Диплинки Elido против Branch.io, Adjust и Firebase Dynamic Links (закрыт)
Branch и Adjust — это полноценные платформы атрибуции, более мощные для отложенных диплинков. Elido — правильный выбор, когда диплинки являются частью общей системы сокращения ссылок, а не основным продуктом.
| Feature | Elido | Branch.io | Adjust |
|---|---|---|---|
| Universal Links (iOS) | Авто-раздача AASA с вашего домена | Полное управление при масштабировании | Нет — только MMP, не хостинг диплинков |
| App Links (Android) | Авто-раздача assetlinks.json с вашего домена | Полное управление | Нет |
| Нужен SDK в приложении | Нет — перехват на уровне ОС | Да — Branch SDK | Да — Adjust SDK |
| Отложенные диплинки | Нет — требуется SDK в приложении | Да — основная функция | Да — через Adjust SDK |
| Мобильная атрибуция (MMP) | Передача click ID; ручная настройка MMP | Нативная MMP — интеграции с Appsflyer, Kochava | Полноценная MMP-платформа |
| Передача UTM в магазин | Да — через параметры в URL отката | Да, с контекстом атрибуции | Да |
| Аналитика кликов | ClickHouse — гео, устройства, по каждой ссылке | Глубокая мобильная атрибуция | Данные по установкам и событиям |
| Замена Firebase Dynamic Links | Да для базовых сценариев; нет для отложенных | Полная замена, включая отложенные | Частичная — только со стороны MMP |
Вопросы по диплинкам
Нужен ли мне Branch SDK или любой другой SDK для работы диплинков Elido?
Нет. Диплинки Elido используют механизмы iOS Universal Links и Android App Links на уровне ОС. Вашему приложению достаточно обрабатывать входящий URL стандартными методами iOS (scene:openURLContexts или application:continueUserActivity) или Android (intent-filter в манифесте). Никакие сторонние SDK не требуются; ОС сама перехватывает ссылку на основе файлов AASA и assetlinks.json, которые Elido раздает с вашего домена.
Как выглядит процесс настройки AASA?
В настройках домена Elido → Диплинки: введите bundle ID вашего iOS-приложения (например, com.company.app) и Apple Team ID (10-значная строка из аккаунта разработчика Apple). Elido сгенерирует AASA JSON и будет раздавать его по пути /.well-known/apple-app-site-association. Проверьте доступность через curl перед отправкой приложения в TestFlight или App Store. iOS скачивает этот файл при установке приложения.
Можно ли привязать несколько приложений к одному домену?
Да, файл AASA поддерживает несколько записей. Настройте bundle ID и Team ID для каждого приложения; Elido создаст комбинированный файл со списком всех приложений. Android assetlinks.json также поддерживает несколько комбинаций имени пакета и отпечатка ключа. Типичный случай: основное приложение и App Clip или виджет.
Firebase Dynamic Links закрывается — каков путь миграции?
Замените короткие ссылки page.link на ссылки Elido (ваш кастомный домен или общий домен Elido). Настройте AASA и assetlinks.json в настройках домена Elido. Установите цепочку отката через смарт-ссылки (iOS → App Store, Android → Play Store, иначе → веб). Обновите генерацию ссылок в приложении на вызов API create_link Elido. Что не переносится: если вы используете отложенные диплинки Firebase (передача данных после установки), для этой части понадобятся Branch или Adjust.
Как протестировать Universal Links до публикации в App Store?
Используйте команду xcrun simctl openurl booted 'https://go.yourcompany.com/test-slug' в симуляторе с установленным приложением. На реальном устройстве с debug-сборкой зажмите ссылку в Safari и проверьте, появилось ли меню 'Открыть в приложении'. Apple также предоставляет App Association File Validator — вставьте туда URL вашего AASA, и он проверит доступность, Content-Type и валидность JSON. AASA от Elido проходит все проверки.
Что такое отложенные диплинки и почему Elido их не делает?
Отложенные диплинки передают контекст (например, ID просматриваемого товара) через процесс установки приложения. Это требует наличия SDK для фингерпринтинга или атрибуции (Branch, Appsflyer, Adjust), который сопоставляет установку с кликом. Elido не внедряет код в ваше приложение и только раздает файлы конфигурации. Без SDK нет механизма передачи контекста через установку. Для сценария 'открыть экран, если установлено' возможностей Elido достаточно. Для передачи данных через установку нужна MMP.
Можно ли использовать диплинки на общем домене Elido (s.elido.me)?
Нет. Universal Links и App Links требуют владения доменом — вы не можете заявить права на *.elido.me для своего приложения. Для диплинков нужен кастомный домен на тарифах Pro или Business. Elido будет раздавать файлы AASA и assetlinks.json именно с вашего настроенного домена.
Что делать, если браузер блокирует перехват ссылки приложением?
Некоторые браузеры (например, старые версии Chrome на Android или встроенные браузеры Instagram) могут блокировать App Links или Universal Links. В этом случае пользователь увидит URL отката. Для встроенных браузеров можно сначала перенаправлять в системный браузер через intent URL (Android) или подсказку пользователю. Elido не внедряет такие подсказки автоматически — вы сами контролируете контент страницы назначения.
Keep reading
Настройка домена — необходима для диплинков; AASA и assetlinks.json раздаются с вашего хоста.
iOS → App Store, Android → Play Store, десктоп → веб — цепочка отката через правила смарт-ссылок.
Как продакт-менеджеры используют диплинки вместе с A/B тестами и смарт-правилами.
Интеграции с MMP — Appsflyer, Adjust и Branch для отложенных диплинков в связке с Elido.
Готовы попробовать?
Начните с бесплатного тарифа, перейдите на платный, когда вам понадобится пользовательский домен.