Мобильные приложения и deep links
Открывайте приложение по короткой ссылке, отправляйте посетителей в магазин, когда приложения нет, размещайте файлы привязки на своём домене и читайте контекст клика после установки.
Обновлено 14 августа 2026 г.
У короткой ссылки, ведущей в мобильное приложение, сразу три аудитории: те, у кого приложение уже есть, те, у кого его нет, и те, чей браузер живёт внутри другого приложения. Эта страница закрывает все три, плюс две части настройки, которые решают дело: файлы привязки на вашем домене и отложенный контекст клика, который ваше приложение может прочитать при первом запуске.
Что делает раздел «Мобильные»
Откройте ссылку, перейдите на вкладку Мобильные и включите мобильные назначения. Для каждой платформы можно задать три адреса:
- Ссылка в приложение — адрес внутри вашего приложения: ваша собственная схема с путём (
myapp://product/42), Android-интент или универсальнаяhttps-ссылка. - Адрес магазина — страница в App Store или Google Play, используется, когда приложение не открылось.
- Запасной веб-адрес — страница для посетителей, которых вы вообще предпочли бы не отправлять в магазин.
Всё необязательно. Ссылка с одним лишь адресом магазина — это простой редирект в магазин. Ссылка, у которой есть и ссылка в приложение, и адрес магазина, получает полное поведение: страница сначала пробует приложение и переходит в магазин, когда ничего не произошло.
Ещё две настройки решают, что происходит за пределами обычного браузера на телефоне:
- Планшеты — считать их телефонами (по умолчанию) или компьютерами.
- Встроенные браузеры — что делать, когда ссылка открывается внутри Instagram, TikTok, Facebook или похожего приложения.
Посетители с компьютеров идут по Назначению для компьютеров, если вы его задали, и по основному адресу назначения ссылки, если не задали. Ничто в мобильном разделе не меняет того, что видят посетители с компьютеров, пока вы сами об этом не попросите.
Почему встроенным браузерам нужно отдельное правило
Большинство кликов по ссылкам в ленте соцсети никогда не доходит до Safari или Chrome. Они открываются в веб-вью внутри самого приложения, и часть таких веб-вью оставляет любую навигацию себе: универсальная ссылка остаётся в веб-вью, а собственная схема молча ничего не делает. Это не дефект, который можно починить со стороны ссылки, — это решение того приложения, которому веб-вью принадлежит.
Поэтому настройка даёт три честных варианта:
| Выбор | Что получит посетитель | | --- | --- | | Пробовать открыть приложение | Промежуточная страница пробует ссылку в приложение; когда известно, что это веб-вью её блокирует, страница не ждёт и показывает, как открыть ссылку в браузере телефона. | | Сразу вести в магазин | Никаких попыток открыть приложение — полезно для установочных кампаний, где цель и есть страница магазина. | | Вести на запасной веб-адрес | Посетитель остаётся в вебе, и для контентных ссылок это часто лучший ответ. |
Файлы привязки: настройка, благодаря которой ссылки открывают приложение молча
Чтобы ссылка открывала ваше приложение без остановки в браузере, операционная система должна знать, что ваш домен и ваше приложение принадлежат друг другу. Обе платформы проверяют это файлом, который отдаёт сам домен:
https://go.brand.com/.well-known/apple-app-site-association
https://go.brand.com/.well-known/assetlinks.json
Эти файлы пишете не вы. В разделе Домены откройте домен и добавьте свои приложения в блоке Мобильные приложения:
- для iOS — App ID в виде
TEAMID.com.company.appи пути, которые приложение должно обрабатывать (*покрывает все короткие ссылки); - для Android — имя пакета и отпечатки подписи SHA-256 из Play Console.
Платформа собирает и отдаёт оба файла с вашего домена ровно с тем ответом, которого требуют обе платформы: статус 200, без редиректов, application/json, без транспортного сжатия. Последнее важнее, чем кажется: прокси, сжимающий файл на лету, — одна из самых частых причин, по которым ссылки в приложение молча перестают работать.
Проверка настройки
Кнопка Проверить файлы забирает оба файла с вашего живого домена и сообщает, что увидела бы платформа. Каждый результат сопоставлен с конкретным исправлением:
| Результат | Что делать |
| --- | --- |
| Домен не ответил | Домен ещё не обслуживает трафик, или DNS всё ещё распространяется. |
| Файла нет | Для этого домена не настроено ни одного приложения, или запрос вообще не доходит до платформы. |
| Домен отправляет этот адрес редиректом | Что-то перед доменом переписывает /.well-known/. Редиректы здесь платформы не проходят. |
| Отдаётся с неверным типом | Ответ — HTML, обычно страница 404 от другого сервиса. |
| Ответ приходит сжатым | Файл сжимает прокси. Проверки обеих платформ на этом падают. |
| Приложение не заявлено | Файл корректен, но для этой платформы пуст — добавьте приложение в панели. |
После того как файлы на месте, обе платформы кешируют их на собственных CDN, поэтому свежая установка приложения может подхватить изменение не сразу. Переустановка приложения — надёжный способ заставить перечитать файлы при тестировании.
Отложенный контекст клика после установки
Посетитель без вашего приложения нажимает ссылку, попадает в магазин, ставит приложение и открывает его. В этот момент приложение ничего не знает о том, откуда человек пришёл: сессия браузера и приложение — два не связанных между собой мира.
Включите Передавать контекст клика после установки, и платформа сохранит на пару часов короткий отпечаток устройства: платформа, старшая версия ОС, язык, страна, размер экрана, часовой пояс и оператор сети. IP-адреса в нём нет, рекламного идентификатора нет, и нет ничего, что можно было бы возвести к конкретному человеку.
При первом запуске ваше приложение спрашивает платформу, был ли клик:
curl -X POST https://go.brand.com/__dl/claim \
-H 'content-type: application/json' \
-d '{
"platform": "ios",
"os_version": "17.4",
"language": "de",
"timezone_offset": 120,
"screen_width": 1170,
"screen_height": 2532,
"pixel_ratio": 3
}'
При совпадении в ответе приходят исходная ссылка и её метки кампании:
{
"matched": true,
"confidence": "high",
"score": 100,
"matched_on": ["screen", "timezone_offset", "language", "os_version"],
"url": "myapp://product/42",
"domain": "go.brand.com",
"slug": "promo",
"link_id": "lnk_...",
"utm": { "utm_source": "newsletter" },
"click_id": "...",
"clicked_at": "2026-08-14T10:00:00.000Z"
}
Без совпадения ответ — {"matched": false}, и таким же будет второй запрос по тому же клику, потому что запись отдаётся ровно один раз.
Ограничения, названные прямо
- Сопоставление вероятностное. Два устройства одной модели, в одной сети, в одном часовом поясе и с одним языком для этого метода выглядят одинаково. Именно поэтому каждый ответ несёт
confidenceи список признаков, по которым принято решение:highозначает, что на свежем клике совпали и размер экрана, и часовой пояс,low— что это подсказка, а не факт. - Окно измеряется часами, а не днями. Отпечаток истекает через два часа после клика, а уверенность падает уже после первых пятнадцати минут.
- Отправляйте запрос один раз, при первом запуске. Запись расходуется первым удачным совпадением; второй вызов не вернёт ничего.
- Редирект прямо в магазин, без промежуточной страницы, собирает меньше. Размер экрана и часовой пояс знает только страница, которая выполняется в браузере, поэтому ссылка, ведущая сразу в магазин, сопоставляется лишь по языку и версии ОС — и честно сообщает об этом более низкой уверенностью.
Чек-лист тестирования
- Откройте ссылку на телефоне, где приложение установлено: она должна привести внутрь приложения.
- Откройте её без приложения: страница мелькает, и открывается магазин.
- Откройте её из ленты соцсети: проверьте, что ваш выбор для встроенных браузеров совпадает с ожидаемым.
- Откройте её в браузере на компьютере: назначение для компьютеров или основной адрес назначения.
- Запустите Проверить файлы на домене и убедитесь, что оба файла возвращаются чистыми.