eCommerce, web-view и идентификатор пользователя в SDK Статистики от SberAds

В SDK eCommerce-событие отправляют методом trackEcom (Android) или trackEcomm (iOS, React Native): имя события плюс объект из полей currencyCode, action, products, impressions, promotions. Для связи с JS-счётчиком в web-view на Android и iOS подключают код из справки. Параметры publisherId, publisherScope, phone, email обновляют методом updateOptions, id авторизованного пользователя — syncUserId (при выходе передают null или nil).

Цифры

Формат eCommerce-события

ПолеЧто передаютНа React Native
currencyCodeтрёхбуквенный код валюты ISO 4217; иная валюта даёт нулевые значения вместо валюты и суммыобязателен
actionданные о действии, объект действиянеобязательно
productsсписок описаний товаров, с которыми произведено действиенеобязательно
impressionsсписок товаров, относящихся к показу (impressions)необязательно
promotionsданные о рекламной акциинеобязательно

Названия классов объекта разные: ECommerceEvent на Android, TrackerTop100ECommerce на iOS, TrackerTop100EcommParams на React Native.

Поля вложенных объектов (по примерам)

Отдельных таблиц с описанием полей на страницах SDK нет, набор виден из примеров.

ОбъектПоля из примеровОбязательное
Товарid, name, list, brand, category, coupon, position, price, quantity, variantid (первый параметр конструктора)
Действиеid, coupon, revenue, affiliation, tax, shipping, list, step, optionid (первый параметр)
Акцияid, name, creative, positionid (первый параметр)

В Android-примерах у name и list товара стоит комментарий «Optional».

Типы значений в примерах

ПолеAndroidiOSReact Native
priceчисло (BigDecimal в Kotlin)строкастрока
positionчислострокастрока
quantityчислов примерах Swift не передаётсячисло
stepчислострокастрока

Примеры названий событий

ПлатформаНазвания в примерах
Androidimpressions, promoClick, click, add, detail
iOSimpressions, promoClick, click, add, purchase
React Nativepurchase

Методы обновления и идентификатор пользователя

ЗадачаAndroidiOSReact Native
Отправить eCommerceKraken.trackEcomTrackerTop100.trackEcommNativeTrackerTop100.trackEcomm
Связать SDK и JS-счётчик в web-viewJavaScript-интерфейс «kraken» с getDataWKUserScript с getDataToWebViewв справке не нашли
Обновить параметрыKraken.updateOptions: телефон, email, publisherId, publisherScope, projectIdTrackerTop100.updateOptions с объектом TrackerTop100Settings.Paramsв справке не нашли
Передать id пользователяKraken.syncUserId: userId и projectId; null при выходеTrackerTop100.syncUserId: userId и projectId; nil при выходев справке не нашли

Подробности

eCommerce-данные в приложении

Чтобы передать действие пользователя, собирают объект в формате eCommerce и отправляют вместе с названием события. Объекты товара, действия и акции создают конструкторами SDK. Первым параметром товара, действия и акции указывают идентификатор.

  • Android: товары, действие и акции собирают в ECommerceEvent (методы setParams и setPromoParams для акции), затем вызывают Kraken.trackEcom с названием и результатом.
  • iOS: собирают TrackerTop100ECommerce из товаров, действия и акций и вызывают TrackerTop100.trackEcomm с названием события (обязательно) и данными (опционально).
  • React Native: данные собирают построителями (action, product, promo и параметры), затем вызывают NativeTrackerTop100.trackEcomm. Название события обязательно, данные опциональны.

В примерах на Android показаны показ товара (impressions), клик по акции (promoClick), клик по товару, добавление в корзину и показ информации о товаре (detail). На iOS — те же показ, клик по акции, клик по товару и добавление в корзину, плюс покупка (purchase); для покупки в действии указан id и этап оформления с выбором. В React Native один общий пример покупки: действие, товар, показанный товар, акция и параметры с валютой USD. В примерах Android и iOS валюта RUB.

Данные в web-view

Нужны, если события SDK и JS-счётчика надо связать.

  • Android: в Activity создают WebView, включают JavaScript и добавляют JavaScript-интерфейс с именем «kraken», который отдаёт строку из getData.
  • iOS: при создании web-view в конфигурацию добавляют скрипт WKUserScript, источником которого служит результат getDataToWebView; скрипт выполняется после загрузки HTML (в конце документа), только для главного фрейма.
  • React Native: страницы в справке нет.

Как именно JS-счётчик использует эти данные, на страницах не описано.

Обновление параметров счётчика

Метод updateOptions обновляет параметры, относящиеся к projectId: publisherId, publisherScope, phone, email.

  • Android: метод принимает телефон, email, publisherId, publisherScope и projectId; аргумент, который менять не нужно, передают как null.
  • iOS: метод принимает объект TrackerTop100Settings.Params с обновлёнными параметрами; в примере указаны projectId, publisherId, publisherScope, phone и email.

Идентификатор авторизованного пользователя

Метод syncUserId принимает идентификатор пользователя и идентификатор проекта и отправляет их в счётчик. Так можно переопределить user_id, заданный в настройках счётчика при инициализации. Если пользователь разлогинился, userId передают как null (Android) или nil (iOS).

Чтобы смотреть статистику в разрезе пользователей, им присваивают уникальные идентификаторы и включают их в данные, которые уходят в счётчик: так активности в приложении соотносятся с пользователями.

Важно знать

  • В React Native первым аргументом построителя действия стоит 'purchase' (то же, что название события), а в Android и iOS первый параметр действия — идентификатор покупки (пример: TRX#54321 и b52314). Что именно означает первый аргумент для React Native, справка не поясняет.
  • Типы значений различаются по платформам (число или строка) для price, position и step. Какой тип принимает счётчик в каждом случае, справка не говорит: это видно только из примеров.
  • Полного перечня допустимых названий событий на страницах SDK нет, есть только названия из примеров. Описания полей товара, действия и акции даны лишь на веб-странице eCommerce (в соседней статье); для SDK таблиц нет.
  • Android: в начале примера impressions в тексте страницы строка с вызовом Kraken.trackEcom содержит лишнюю скобку; в примере detail создана переменная action, которая в вызов не попадает. Ориентироваться стоит на смысл, не на копирование.
  • На странице Android-метода обновления параметров после слов «Пример использования метода» кода нет. Остальное про метод есть.
  • Для iOS-метода обновления в справке не сказано, обязателен ли projectId и что будет с незаполненными полями; для Android сказано: ненужный аргумент передают как null.
  • Хешируются ли телефон и email при обновлении через updateOptions, в справке не нашли (при активации SDK хеши считаются автоматически).
  • Для React Native страниц про web-view, updateOptions и syncUserId в справке не нашли. В параметрах настроек React Native есть setAuthUserId (подробнее в статье про параметры SDK).