Добавление собственных событий

AppMetrica позволяет собирать статистическую информацию о ваших собственных событиях приложения и просматривать ее в веб-интерфейсе, в отчете События.

Отчет дополнен информацией о количестве пользователей и устройств, для которых было зафиксировано событие. Иногда данные об устройствах и пользователях могут не совпадать. Например, это происходит, если приложение запущено в фоновом режиме. При этом устройство будет отражено в отчете, а его пользователь нет.

Если вы работаете с событиями, которые имеют иерархическую структуру, в отчете они могут отображаться по-разному, в зависимости от типа передачи данных.

Android

Если событие передано с помощью метода YandexMetrica.reportEvent(String eventName, String jsonValue)

String eventParameters = "{\"name\":\"Alice\", \"age\":\"18\"}";

YandexMetrica.reportEvent("New person", eventParameters);

в веб-интерфейсе отчет будет содержать следующее:

iOS

Если событие передано с помощью метода [YMMYandexMetrica reportEvent:(NSString *)message parameters:(NSDictionary *)params onFailure:(void (^)(NSError *error))onFailure];

NSDictionary *params = @{@"key1": @"value1", @"key2": @"value2"};
[YMMYandexMetrica reportEvent:@"EVENT"
                   parameters:params
                    onFailure:^(NSError *error) {
                        NSLog(@"error: %@", [error localizedDescription]);
                    }];

в веб-интерфейсе отчет будет содержать следующее:

Ниже описаны рекомендации по передаче событий в AppMetrica, которые помогут формировать отчеты удобные для просмотра (в том числе с помощью API отчетов).

  1. Уровни вложенности событий
  2. Трактовка числовых и строковых значений
  3. Частично совпадающие вложенные события

Уровни вложенности событий

Веб-интерфейс AppMetrica отображает до пяти уровней вложенности события. Таким образом, если событие содержит шесть уровней и более, в отчете отобразятся пять верхних. С помощью API отчетов можно выгрузить до десяти уровней.

При отправке многоуровневых событий, помимо имени самого события, необходимо передать вложенную пару key:value (key и value считаются уровнями вложенности).

Трактовка числовых и строковых значений

Параметры, передаваемые в событии, могут принимать числовое и строковое значения. Числовое значение, при попадании на сервер, будет приведено к строковому. При этом на сервере сохранится числовое значение параметра, которое не будет отображаться в веб-интерфейсе (но будет доступно при выгрузке с помощью API).

Таким образом, значения вида {"count" : 3} и {"count" : "3"} будут трактоваться одинаково. Если передаются параметры с разными числовыми значениями, в веб-интерфейсе эти значения не суммируются. Каждое из них записывается и считается отдельно. Однако с помощью API отчетов вы можете выгрузить дополнительные поля: сумму и среднее всех числовых значений.

Частично совпадающие вложенные события

Если сервер получает схожие сообщения о событии, имеющие разные уровни вложенности, их значения аккумулируются по этим уровням.

Рассмотрим пример отправки событий в формате JSON. Предположим, что сервер получил два сообщения о событии.

Первое сообщение о событии имеет два уровня вложенности:

String eventParameters = "{\"param1\":\"param2\"}";
YandexMetrica.reportEvent("EVENT", eventParameters);

Второе — три уровня вложенности:

String eventParameters = "{\"param1\":{\"param2\":\"value\"}}";
YandexMetrica.reportEvent("EVENT", eventParameters);

В этом случае подсчет производится по следующему алгоритму:

  1. Записывается событие и два его подуровня: прибавляем 1 к каждому счетчику.
  2. Прибавляем 1 к нулевому уровню (само событие) и двум его подуровням, при этом оставляем без изменений третий уровень.

В веб-интерфейсе эти события отобразятся в древовидном списке: