Перейти к содержимому
LinkProfit

Мобильные приложения и 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 — что это подсказка, а не факт.
  • Окно измеряется часами, а не днями. Отпечаток истекает через два часа после клика, а уверенность падает уже после первых пятнадцати минут.
  • Отправляйте запрос один раз, при первом запуске. Запись расходуется первым удачным совпадением; второй вызов не вернёт ничего.
  • Редирект прямо в магазин, без промежуточной страницы, собирает меньше. Размер экрана и часовой пояс знает только страница, которая выполняется в браузере, поэтому ссылка, ведущая сразу в магазин, сопоставляется лишь по языку и версии ОС — и честно сообщает об этом более низкой уверенностью.

Чек-лист тестирования

  1. Откройте ссылку на телефоне, где приложение установлено: она должна привести внутрь приложения.
  2. Откройте её без приложения: страница мелькает, и открывается магазин.
  3. Откройте её из ленты соцсети: проверьте, что ваш выбор для встроенных браузеров совпадает с ожидаемым.
  4. Откройте её в браузере на компьютере: назначение для компьютеров или основной адрес назначения.
  5. Запустите Проверить файлы на домене и убедитесь, что оба файла возвращаются чистыми.