Добавление собственных событий
AppMetrica позволяет собирать статистическую информацию о ваших собственных событиях приложения и просматривать ее в веб-интерфейсе, в отчете События.
Отчет дополнен информацией о количестве пользователей и устройств, для которых было зафиксировано событие. Иногда данные об устройствах и пользователях могут не совпадать. Например, это происходит, если приложение запущено в фоновом режиме. При этом устройство будет отражено в отчете, а его пользователь нет.
Если вы работаете с событиями, которые имеют иерархическую структуру, в отчете они могут отображаться по-разному, в зависимости от типа передачи данных.
Если событие передано с помощью метода YandexMetrica.reportEvent(String eventName, String jsonValue)
String eventParameters = "{\"name\":\"Alice\", \"age\":\"18\", \"favorite_games\":{\"strategies\":\"Age of Empires\"}}";
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);
Map<String, Object> nestedMap = new HashMap<String, Object>();
nestedMap.put("strategies", "Age of Empires");
eventAttributes.put("nested map", nestedMap);
YandexMetrica.reportEvent("Current app statistics", eventAttributes);
в веб-интерфейсе отчет будет содержать следующее:

Если событие передано с помощью метода [YMMYandexMetrica reportEvent:(NSString *)message parameters:(NSDictionary *)params onFailure:(void (^)(NSError *error))onFailure];
NSDictionary *params = @{@"key1": @"value1", @"key2": @"value2", @"key3": @{@"key4": @"value4"}};
[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 : [String : Any] = ["key1": "value1", "key2": "value2", "key3":["key4":"value4"]]
YMMYandexMetrica.reportEvent("EVENT", parameters: params, onFailure: { (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 к нулевому уровню (само событие) и двум его подуровням, при этом оставляем без изменений третий уровень.
В веб-интерфейсе эти события отобразятся в древовидном списке:
