darkcore docs
PWA

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

App Routing передаёт посетителя нативному приложению вместо веб-версии. Каталог платформы, три состояния click id и почему на Android покрытие шире, чем на iOS.

Когда назначение ведёт в мобильное приложение — бот в Telegram, профиль в Instagram, трек в Spotify — посетителя можно передать самому приложению, а не его веб-странице. Это важнее всего для трафика из in-app браузеров Meta: там веб-версия открывается внутри чужого WebView, где нет ни пушей, ни установки.

Функция отключена, пока её явно не включить на конкретном сплите. Ничего не меняется для трафика, который вы не трогали.

App Routing не заменяет ни клоакинг, ни фильтры, ни трек-ссылки. Он меняет ровно одно — куда ведёт последний шаг.

Где это включается

Контрол появляется в редакторе сплита только тогда, когда URL назначения распознан по домену. Нераспознанный URL не показывает ничего — не пустую форму «выберите приложение», а именно ничего.

  1. Откройте поток → Трек-ссылки → сплит с URL назначения.
  2. Если домен распознан, появится тумблер Открыть в <приложение>.
  3. Выберите, что делать, если приложения нет: веб-страница или страница стора.

Что показывает редактор

Включив это, вы видите четыре строки. Каждая берётся из каталога, ни одна не угадана.

СтрокаО чём
Охват платформоткроется ли приложение на Android, на iOS, или только на одной из них
Судьба click idдоходит / не доходит / неизвестно
Сертификацияна каких парах «приложение-источник × ОС» это проверено на живом устройстве
Фолбекчто произойдёт, если приложение не установлено

Три состояния click id

Это не «да или нет». Состояний три, и два из них не «нет».

СостояниеЧто означает
Доходитвендор задокументировал механизм, которым payload попадает на бэкенд назначения
Не доходитвендор либо прямо это говорит, либо его полный опубликованный перечень API такого пути не содержит
Неизвестномы не нашли ни механизма, ни доказательства его отсутствия

«Не доходит» — это ответ, а не пробел. Путать его с «неизвестно» нельзя: первое означает, что конверсии из этого перехода не свяжутся автоматически, и решение ваше с открытыми глазами.

Формы ссылок, которые несут click id

https://t.me/<бот>?start=<payload>       payload в /start, до 64 символов
https://m.me/<страница>?ref=<payload>    доходит в вебхук страницы
https://ig.me/m/<юзер>?ref=<payload>     то же самое для Instagram

Обе формы Meta условны, и условия разные. m.me требует, чтобы посетитель нажал кнопку в чате, и сама Meta не гарантирует доставку. ig.me дополнительно требует настроенных Icebreakers и опубликованного аккаунта.

Когда каталог знает, что форма ссылки умеет нести click id, редактор предлагает вставить его одним тапом. Предложение сужено до правильного семейства ссылок: ?ref= предлагается на ig.me/m/<юзер> и не предлагается на instagram.com/<юзер>, потому что там этот параметр не делает ничего.

Почему на Android покрытие шире

Android требует только имени пакета: сохранённый https-URL передаётся приложению как есть. Поэтому Android-путь покрывает весь каталог сразу.

iOS требует собственной схемы и правила преобразования URL под конкретный тип ссылки. Таких правил существует немного — и часто не из-за нехватки наших усилий: многие вендоры сознательно убрали кастомные схемы в пользу Universal Links. LINE депрекейтнул line:// собственной документацией ради защиты от takeover-атак. Pinterest в хелпе пишет, что шаблонов третьим сторонам не публикует. X официально схемы не поддерживает.

Для таких приложений правильный ответ — отсутствие правила, а iOS-путь честно вырождается в веб-страницу. Строка охвата в редакторе говорит об этом прямо.

Объявленная iOS-схема сама по себе маршрут не даёт. Нужно правило преобразования URL для конкретной формы ссылки — без него каждый посетитель с iOS пойдёт на веб-страницу.

В основных настройках Direct Link есть выбор: пробовать открыть приложение или всегда вести в браузер. Второй вариант решается на сервере — рантайм вообще не получает конфигурацию маршрута.

Выбора произвольного приложения здесь нет намеренно. Приложение выводится из URL назначения, который живёт на сплите, а один Direct Link достаётся нескольким потокам с разными назначениями — единственно правильного ответа там не существует.

Каталог приложений

Список приложений — платформенный, редактируется только суперадмином. Названия пакетов и URL-схемы — это факты о платформе, а не настройки воркспейса; произвольный ввод здесь был бы дырой прямо сквозь проверку назначений.

Единица каталога — пара приложение × тип ссылки, не приложение. https://t.me/<бот>?start=<id> и https://t.me/<канал> — одно и то же приложение и противоположные ответы на каждый вопрос, который задаёт система.

Границы, о которых стоит знать

  • Приложение может отдать посетителя назад. Переход срабатывает, приложение получает ссылку — и само решает вернуть человека в веб. Разлогиненное приложение делает это регулярно. Это вне нашего контроля.
  • Каталог не равен покрытию. Запись в каталоге означает, что факты о пакете и схеме правдоподобны, а не что переход проверен на устройстве. Колонка сертификации — единственное, что это доказывает.
  • Фолбек «стор» доступен не везде. Если для приложения не настроена страница стора на нужной платформе, используется веб-страница. Редактор показывает это до сохранения.

На этой странице