Аналитика мобильных приложений для iOS, Android и Flutter
Установите публичный SDK, передайте ему решение каждого пользователя о согласии и отправляйте события. WebmasterID показывает события, сессии, установки, удержание и конверсии ваших приложений iOS и Android в том же рабочем пространстве, что и ваши сайты, а отчёты прямо говорят, на какие вопросы ответить не могут.
Нативные SDK для iOS и Android и плагин для Flutter
Они устанавливаются из публичного канала пакетов каждой платформы: без приватного репозитория, без токена доступа и без учётных данных, которые пришлось бы добавлять на сервер сборки.
iOS
Swift Package Manager. WebmasterID iOS SDK 1.3.0 для iOS 15.0 и новее, из публичного Swift-пакета на GitHub.
Android
Gradle, с Kotlin или Java. WebmasterID Android SDK 0.3.0 для API 24 и новее, из публичного Maven-репозитория webmasterid.com/sdk/maven.
Flutter
pub.dev: webmasterid_flutter 0.4.0 для Flutter 3.47.0 и новее, в приложениях iOS и Android. Работает поверх нативных SDK.
React Native, Unity и .NET не поддерживаются. Плагин для Flutter охватывает приложения iOS и Android, но не Flutter для веба или настольных систем.
Пять отчётов на основе событий, которые отправляет ваше приложение
Каждый отчёт считает по моменту, когда WebmasterID получил событие, а не по часам устройства, и определения ключевых метрик приведены прямо на странице.
Обзор
События, сессии, активные установки, впервые замеченные установки и идентифицированные пользователи, с событиями по дням, самыми частыми событиями и состоянием сбора данных: когда пришло последнее событие.
События
Каждое имя события с количеством и сессиями, самые частые экраны и страны, а также 50 последних событий с сокращёнными псевдонимными идентификаторами.
Конверсии
События воронки, о которых сообщает ваше приложение, — в одной таблице; покупки, подтверждённые Apple или Google, — в другой. Эти данные никогда не суммируются.
Удержание (бета)
Когорты 1, 7 и 30 дня по установкам, в вашем часовом поясе отчётов. День, который ещё не прошёл, показывается как пока не наблюдаемый, а не как нулевое удержание.
Атрибуция
Что известно об источнике активности в приложении, а что нет. SDK не отправляют ни источник, ни кампанию, ни реферер, поэтому источник установок показывается как неизвестный, а не как органический.
Фиксированный словарь событий, общий для всех приложений, чтобы их отчёты означали одно и то же: app_open, session_start, screen_view, cta_tap, search_performed, filter_applied, signup, login, checkout_started, booking_started, payment_started, booking_completed, cancellation, refund_requested.
События фиксируют экран, на котором они произошли, если он есть. Собственные имена событий и свойства не поддерживаются, а версия приложения, версия ОС и состояние согласия проверяются при получении события, но не сохраняются, поэтому разбивки по ним нет.
Ваши сайты и приложения в одном рабочем пространстве, рядом
Команды, у которых есть и сайт, и приложение, видят их в одном месте и по одному тарифу. Отчёты при этом остаются раздельными: WebmasterID не объединяет посетителя сайта и пользователя приложения в одного человека.
Общее
Один аккаунт, одно рабочее пространство и один тариф. Одна панель с разделами «Сайты» и «Приложения» в боковом меню. Выбранный период сохраняется при переходе между ними, часовой пояс отчётов один.
Раздельное
Нет общего отчёта по сайту и приложению, нет пути от визита на сайт к приложению и нет сопоставления одного человека между устройствами: ключ аккаунта хранится в виде отдельного хеша для каждого приложения, поэтому один и тот же пользователь учитывается один раз в приложении iOS и ещё раз в приложении Android.
От установки до первого события
Регистрация приложения сама по себе ничего не собирает. События появляются, когда SDK установлен, запущен с решением пользователя о согласии, отправляет события и доставляет их.
Прежде чем начать
Активный тариф Pro, Agency или Business в рабочем пространстве; роль «Владелец», «Администратор» или «Редактор», чтобы зарегистрировать приложение; iOS 15.0 и новее со сборкой в Xcode 26.0 и новее, Android API 24 и новее с Gradle или Flutter 3.47.0 и новее; и место в приложении, где пользователь принимает решение об аналитике, а приложение передаёт ответ в SDK. Аккаунт GitHub, токен доступа и приватный репозиторий не нужны.
- 1. Выберите тарифСоздайте аккаунт и выберите Pro или Agency при оплате. Аналитика приложений входит в оба тарифа.
- 2. Зарегистрируйте приложениеВ разделе «Приложения iOS» или «Приложения Android» панели. Вы получите публичный ID свойства: его можно встраивать в приложение, он не секретный и сам по себе ничего не собирает.
- 3. Добавьте SDKЧерез Swift Package Manager, Maven-репозиторий WebmasterID или pub.dev.
- 4. Запустите его с решением о согласииИнициализируйте SDK с ID свойства и передайте ему решение пользователя. Пока решения нет, ничего не ставится в очередь и не отправляется.
- 5. Отправляйте событияПросмотры экранов, нажатия и важные для вас шаги воронки. Во Flutter наблюдатели жизненного цикла и навигации из плагина сами записывают app_open и screen_view.
- 6. Доставьте ихSDK делает это сам, в iOS и в Android: примерно через 5 секунд после события, когда приложение уходит в фон, и после следующего запуска — всё, что осталось. flush() нужен только для момента, который выбирает само приложение.
- 7. Проверьте первое событиеВ разделе «Приложения → Обзор приложений» состояние сбора данных показывает последнее полученное событие. Если ничего не пришло, шаги проверки в руководстве и диагностика SDK объясняют почему.
Согласие и идентификация простыми словами
WebmasterID записывает то, что отправляет ваше приложение, вместе с решением, которое приложение передаёт. Нужно ли согласие и на каком правовом основании, решаете вы; SDK сам по себе не делает приложение соответствующим требованиям.
Нет решения — нет данных
Пока приложение не передаст решение пользователя, SDK ничего не ставит в очередь и ничего не отправляет.
Разрешено
События несут идентификатор сессии, идентификатор установки и, если приложение вызывает identify(), ключ аккаунта. Идентификаторы установки и ключи аккаунта хранятся как хеши с секретным ключом: это псевдонимные, а не анонимные данные.
Ограничено
События несут только идентификатор сессии: ни идентификатора установки, ни ключа аккаунта. Это сокращённая идентификация, а не анонимность: идентификатор сессии, точное время и страна сохраняются.
Отказано
Ничего не отправляется.
Без рекламных идентификаторов
Сервер отклоняет IDFA, IDFV, рекламный идентификатор Android и другие идентификаторы устройства. Запрос App Tracking Transparency не показывается, а ответ на ATT не является согласием на аналитику.
IP-адрес не хранится
Страна определяется на границе сети при получении события. Ни IP-адрес, ни user-agent не сохраняются.
Руководство по установке (на английском) подробно описывает состояния согласия, идентификаторы и то, что отправляют SDK, — для сведений о конфиденциальности в App Store и раздела «Безопасность данных» в Google Play.
Заявленные конверсии и подтверждённые покупки — разные факты
Приложение может сообщить о начатой оплате. Подтвердить покупку могут только Apple или Google. Отчёт о конверсиях держит их в разных таблицах и никогда не суммирует.
Конверсии, о которых сообщает приложение
События воронки, которые отправляет приложение, учитываются как утверждения самого приложения: signup, login, checkout_started, booking_started, payment_started, booking_completed, cancellation и refund_requested.
Покупки, подтверждённые магазином
В iOS — транзакции StoreKit 2, подписанные Apple и проверенные по сертификатам Apple, и App Store Server Notifications. В Android — токены покупок Google Play, проверенные в Google, и уведомления для разработчиков в реальном времени. Для каждого варианта нужно подключение к магазину, настроенное на странице приложения в панели. Учитываются только транзакции рабочей среды, приносящие выручку, — валовые, до возвратов и отдельно по каждой валюте. Покупки в песочнице и тестовые покупки не учитываются никогда.
Состояние проверки покупок
Доставка уведомлений App Store проверена в рабочей среде. Часть для Google Play развёрнута, но ещё не подтверждена от начала до конца тестовой покупкой, и ни одна покупка пока не прошла через песочницу какого-либо из магазинов до подтверждения. RevenueCat и другие фреймворки покупок не поддерживаются.
Для чего это подходит, а для чего нет
Подходит
Командам, которые уже измеряют сайт с WebmasterID и выпускают приложение для iOS или Android. Приложениям, ключевые моменты которых укладываются в 14 событий: экраны, нажатия, поиск, фильтры, регистрация и вход, а также шаги бронирования, оплаты и покупки. Командам, которым нужна псевдонимная аналитика приложений с согласием и без рекламных идентификаторов. Агентствам, которые ведут сайты и приложения нескольких клиентов (тариф Agency добавляет рабочие пространства и участников команды).
Не подходит
Для атрибуции установок: постбэков рекламных сетей, SKAdNetwork, Apple AdServices, Google Play Install Referrer, кампаний с диплинками, стоимости или ROAS; WebmasterID не является партнёром по мобильным измерениям (MMP). Для собственных имён и свойств событий или единого пути, по которому человека можно проследить с сайта в приложение или между устройствами. Для загрузок из App Store или Google Play: впервые замеченная установка — это первое событие идентификатора установки, а не загрузка. Для отчётов о сбоях, записи сессий, push-уведомлений или A/B-тестов. Для приложений на React Native, Unity или .NET. Для данных приложений в просмотре событий, экспорте или инструментах MCP и агента, которые работают с веб-данными.
Входит в Pro и Agency
Пакеты SDK доступны для скачивания публично. Чтобы отправлять события и смотреть отчёты по приложениям, нужен активный тариф. Бесплатного тарифа для новых аккаунтов нет.
Pro стоит 499 USD в месяц, Agency — 1 199 USD в месяц; условия Business согласуются индивидуально. Все три тарифа включают аналитику приложений. Ежемесячная оплата в USD, отменить можно в любой момент.
Частые вопросы
- Начинается ли сбор данных после регистрации приложения?
- Нет. Регистрация создаёт публичный ID свойства приложения, и больше ничего. События появляются, когда в приложении установлен SDK, он запущен с решением пользователя о согласии, отправляет события и доставляет их.
- Когда события покидают устройство?
- Примерно через 5 секунд после записи, одинаково в iOS и Android, без вызовов со стороны приложения; а также когда приложение уходит в фон (без гарантии: система может приостановить его раньше) и после следующего запуска — всё, что ещё в очереди. Пока приложение работает, неудачные запросы повторяются автоматически; приостановленное или закрытое приложение ничего не отправляет, пока снова не запустится. До iOS SDK 1.3.0 и webmasterid_flutter 0.4.0 iOS отправлял события, только когда приложение вызывало flush() или уходило в фон; обновление включает автоматическую доставку.
- Нужен ли сайт, чтобы пользоваться аналитикой приложений?
- Нет. После оплаты откройте «Приложения iOS» или «Приложения Android» в панели и зарегистрируйте приложение. Отчёты по приложениям не зависят от сайта.
- Заменяет ли WebmasterID AppsFlyer или Adjust?
- Нет. Это партнёры по мобильным измерениям: они атрибутируют установки рекламным сетям и кампаниям. SDK WebmasterID не отправляют ни источник, ни кампанию, ни реферер, а WebmasterID не подключается ни к рекламным сетям, ни к SKAdNetwork, ни к AdServices, ни к Install Referrer.
- Данные анонимны?
- Нет. Идентификаторы установки и ключи аккаунта хранятся как хеши с секретным ключом, поэтому это псевдонимные, а не анонимные данные. При ограниченном согласии события несут только идентификатор сессии: это сокращённая идентификация, но всё равно не анонимность.
- Используется ли IDFA и запрашивается ли App Tracking Transparency?
- Нет. Сервер отклоняет рекламные идентификаторы и идентификаторы устройства, а WebmasterID не запрашивает ATT. Ответ на ATT не является согласием на аналитику: приложение передаёт SDK собственное решение об аналитике.
- Можно ли увидеть активность одного человека на сайте и в приложении?
- Нет. Сайты и приложения отображаются рядом в одном рабочем пространстве, но идентификаторы хешируются отдельно для каждого сайта и приложения, поэтому посетитель сайта и пользователь приложения никогда не связываются — как и один и тот же пользователь в приложениях iOS и Android.
- Какие покупки учитываются как выручка?
- Только покупки, подтверждённые Apple или Google: транзакции рабочей среды, приносящие выручку, — валовые, до возвратов и отдельно по каждой валюте. Покупки в песочнице и тестовые покупки не учитываются никогда. События оплаты, о которых сообщает приложение, показываются как утверждения самого приложения, отдельно от выручки.
- Работает ли это с RevenueCat?
- Нет. Проверка покупок работает со StoreKit 2 в iOS и Google Play Billing в Android. RevenueCat и другие фреймворки покупок не поддерживаются.
- Работает ли это с React Native или Unity?
- Нет. Есть нативные SDK для iOS (Swift) и Android (Kotlin или Java) и плагин для Flutter для приложений iOS и Android. React Native, Unity и .NET не поддерживаются.
- Сколько это стоит?
- Аналитика приложений входит в Pro (499 USD в месяц) и Agency (1 199 USD в месяц), а также в тарифы Business с индивидуальными условиями. Пакеты SDK доступны для скачивания публично; чтобы отправлять события и смотреть отчёты, нужен активный тариф. Бесплатного тарифа для новых аккаунтов нет.
Похожее
- Руководство по установке мобильного SDKEN
От пустого проекта до первого события в iOS и Android.
- Цены
Pro, Agency и Business и что входит в каждый тариф.
- Аналитика с уважением к приватности
Как веб-аналитика работает без cookies и отпечатка браузера.
- Аналитика атрибуции (сайты)
Атрибуция веб-трафика по источникам там, где есть рефереры и UTM-параметры.