Elido
Все, что делает Elido
Pro и Business

Глубокие ссылки. Открывайте приложение. Изящно откатывайтесь.

Манифесты Universal Links и App Links, обслуживаемые вашим пользовательским доменом. iOS открывает ваше приложение по нажатию; Android делает то же самое. Резервное перенаправление в браузер на настольных компьютерах.

  • Universal Links (iOS) и App Links (Android), обслуживаемые с вашего домена
  • Отложенные диплинки - контекст переживает установку приложения
  • Умное определение платформы с изящными фолбэками
  • Без SDK - работает со стандартными механизмами ОС
go.yourcompany.com/product/12345
Пользователь нажимает ссылкуgo.yourcompany.com/product/12345Приложение установлено?ОС проверяет AASA / assetlinksДАНЕТОткрыть в приложенииproduct/12345deep path сохранёнОС?Определение UAiOSApp Storeapps.apple.comAndroidPlay Storeplay.google.comДесктопМобильный вебфолбэк браузераUTM passthrough
Перехват на уровне ОС, без SDKAASA + assetlinks.json
Авто-раздача
AASA + assetlinks.json
0
Установок SDK в приложении
iOS + Android
Покрытие платформ
UTM
Передача при откате (fallback)

Universal Links и App Links

Манифест-файлы, автоматически обслуживаемые с вашего домена

iOS Universal Links требуют файл apple-app-site-association . Android App Links требуют assetlinks.json. Elido автоматически генерирует и обслуживает оба с вашего кастомного домена - без отдельного хостинга, без ручного управления файлами.

  • iOS Universal Links
    Bundle ID + Team ID → AASA автоматически обслуживается по пути /.well-known/
  • Android App Links
    Имя пакета + SHA-256 fingerprint → assetlinks.json, HTTPS обязателен
  • Smart-link фолбэк
    Приложение не установлено → App Store / Play Store через rule-based маршрутизацию
  • UTM passthrough
    UTM-параметры сохраняются в URL магазина - атрибуция не ломается
  • Без SDK в вашем приложении
    Только OS-level перехват; intent-filter и continueUserActivity
Apple Universal Links
/.well-known/apple-app-site-association
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.com.yours.app",
        "paths": [
          "/product/*",
          "/referral/*",
          "/invite/*"
        ]
      }
    ]
  }
}
Android App Links
/.well-known/assetlinks.json
[{
  "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:..."
    ]
  }
}]

Обслуживается с вашего кастомного домена автоматически. Настройте bundle ID + Team ID (iOS) или имя пакета + SHA-256 fingerprint (Android) в настройках домена - Elido генерирует и хостит оба файла.

xcrun simctl openurl booted '…'
adb shell pm get-app-links

Отложенные диплинки

Контекст, переживающий установку

Когда приложение не установлено, пользователь идёт в магазин, устанавливает и открывает приложение. Отложенный диплинкинг передаёт оригинальный deep-link контекст через этот путь, чтобы приложение могло привести пользователя ровно на тот экран, где надо, после первого запуска.

  1. 01

    Нажимает на ссылку

    Пользователь нажимает короткую ссылку Elido - из email, соцсетей, QR.

    go.yourcompany.com/p/12345
  2. 02

    Нет приложения → Магазин

    Приложение не установлено. ОС определяет по проверке AASA / assetlinks. Откатывается в App Store или Play Store.

    iOS → App Store · Android → Play Store
  3. 03

    Устанавливает приложение

    Пользователь устанавливает из магазина. Install referrer несёт контекст клика как query-параметр.

    click_id + UTM сохранены в URL referrer'а
  4. 04

    Открывает приложение

    Приложение запускается впервые. MMP читает install referrer; связывает click_id с событием установки.

    Appsflyer / Adjust / Branch подхватывают
  5. 05

    Попадает на нужный экран

    Приложение маршрутизирует на оригинально привязанный экран - product/12345 - как если бы приложение уже было.

    product/12345 - контекст сохранён через установку
Контекст сохранён через установку

Параметр click_id и UTM из оригинальной короткой ссылки передаются как query-параметры в URL магазина. Mobile Measurement Platforms (MMP), которые захватывают install referrer - Appsflyer, Adjust, Branch - могут сматчить установку с исходным кликом. Полный отложенный диплинкинг (передача in-app контекста через установку) требует SDK MMP в вашем приложении; Elido покрывает слой ссылок.

Определение платформы
go.yourcompany.com/p/12345
Live
iPhone 15 Pro
iOS 17.4
iOS Universal Links
Mozilla/5.0 (iPhone; CPU iPhone OS 17_4…)
ОС перехватывает HTTPS-нажатие → открывает приложение
yourapp://product/12345
Pixel 8 Pro
Android 14
Android App Links
Mozilla/5.0 (Linux; Android 14; Pixel 8…)
Intent сматчен с assetlinks.json → приложение открыто
yourapp://product/12345
MacBook / Десктоп
macOS / Windows / Linux
Веб-фолбэк
Mozilla/5.0 (Macintosh; Intel Mac OS X…)
Без проверки AASA → 302 на веб-URL
yourcompany.com/product/12345
Парсинг UA работает внутри процесса edge-редиректа - p50 менее 0.5 мс. Внутри-приложенческие браузеры (Instagram, TikTok) определяются отдельно и могут быть направлены на подсказку редиректа в системный браузер.

Умное определение платформы

Одна ссылка. Три пути редиректа.

Edge читает User-Agent и сигналы платформы на уровне редиректа - до того, как запустится любой JS. iPhone получает Universal Links, Android получает App Links, десктоп получает ваш веб-фолбэк. Без задержки JavaScript-редиректа; без клиентского определения платформы.

  • Парсинг UA на edge, субмиллисекунды
  • iOS → перехват Universal Link операционной системой
  • Android → перехват App Link через intent-filter
  • Десктоп → веб-URL, без объезда через магазин
  • Внутри-приложенческие браузеры определяются и редиректятся в системный браузер
  • Сочетается со smart-link правилами - гео + устройство + диплинк

Что вы можете делать

  • Apple App Site Association
  • Android Asset Links
  • Правила умных ссылок для резервного перенаправления в магазин
  • Протестировано с adb и xcrun

Как на самом деле работают диплинки - и где они ломаются

Universal Links и App Links - это механизмы на уровне ОС. Настройка проста, но пограничные случаи - нет. Здесь описана вся картина.

iOS Universal Links
01

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.

Android App Links
02

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.

Цепочка отката (fallback)
03

Приложение установлено → диплинк. Не установлено → магазин. Десктоп → веб. UTM сохраняются везде.

Цепочка отката настраивается для каждой ссылки или домена. Для короткой ссылки с диплинком: если ОС перехватывает нажатие (приложение установлено, домен подтвержден), открывается приложение. Если нет, ссылка открывается в браузере, который перенаправляет в App Store / Play Store или на веб-страницу. Правила смарт-ссылок управляют этим: настройте правило iOS → App Store, Android → Play Store и дефолтный веб-адрес. Параметры UTM сохраняются в URL отката, поэтому атрибуция не прерывается при переходе в магазин. Отложенные диплинки (передача пути внутрь приложения после установки) требуют SDK - Elido этого не делает. Для этого по-прежнему нужны Appsflyer, Adjust или Firebase App Distribution.

Ретаргетинг после установки
04

Пост-установочный ретаргетинг: 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
05

Миграция с 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 для маршрутизации в магазины приложений.

М
Мобильная команда, потребительское приложение, 200к пользователей, Рига
Mobile Engineer

Аналитика кликов по диплинкам показала, что 35% переходов были с десктопа, где у нас не было отката. Добавление fallback заняло 10 минут; конверсия выросла, так как пользователи с компьютеров теперь могут завершить целевое действие.

П
Продуктовая команда, B2C маркетплейс, Брюссель
Product Manager

Мы используем короткие ссылки Elido с диплинками для реферальных программ. Передача UTM в URL магазина означает, что наша MMP корректно определяет источник установки - атрибуция работает без внедрения кастомных SDK.

К
Команда роста, фитнес-приложение, 80к пользователей, Амстердам
Head of Growth

Диплинки Elido против Branch.io, Adjust и Firebase Dynamic Links (закрыт)

Branch и Adjust - это полноценные платформы атрибуции, более мощные для отложенных диплинков. Elido - правильный выбор, когда диплинки являются частью общей системы сокращения ссылок, а не основным продуктом.

FeatureElidoBranch.ioAdjust
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 откатаДа, с контекстом атрибуцииДа
Аналитика кликовАналитическое хранилище - гео, устройства, по каждой ссылкеГлубокая мобильная атрибуцияДанные по установкам и событиям
Замена 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 не внедряет такие подсказки автоматически - вы сами контролируете контент страницы назначения.

Готовы попробовать?

Начните с бесплатного тарифа, перейдите на платный, когда вам понадобится пользовательский домен.