Документация
Интеграция SDK

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

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

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

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

Android

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

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

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

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

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

Map<String, Object> eventAttributes = new HashMap<String, Object> ();
eventAttributes.put("Application", "com.company.myapp.awesomeapp");
eventAttributes.put("Audience", 1000000000);
eventAttributes.put("Product price in $", 10000000.99);

YandexMetrica.reportEvent("Current app statistics", eventAttributes);

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

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]);
}];

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

Если событие передано с помощью метода YMMYandexMetrica.reportEvent(message: String!, parameters params: [NSObject : AnyObject]!, onFailure: ((NSError!) -> Void)!)

let params = ["key1": "value1", "key2": "value2"]
YMMYandexMetrica.reportEvent(message, parameters: params) { (error) in
    print("DID FAIL REPORT EVENT: %@", message)
    print("REPORT ERROR: %@", error?.localizedDescription)
}

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

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

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

Веб-интерфейс 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 к нулевому уровню (само событие) и двум его подуровням, при этом оставляем без изменений третий уровень.

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