Примеры использования методов

Запуск процесса сбора статистики

Чтобы запустить процесс сбора статистики непосредственно из кода приложения, передайте в метод [YMMYandexMetrica activateWithConfiguration:(YMMYandexMetricaConfiguration *)configuration;]; значение параметра apiKey.

+ (void)initialize
{
   if ([self class] == [MMSAppDelegate class]) {
       YMMYandexMetricaConfiguration *configuration = [[YMMYandexMetricaConfiguration alloc] initWithApiKey:API_key];
       [YMMYandexMetrica activateWithConfiguration:configuration];
   }
}

Инициализация библиотеки с расширенной конфигурацией

Данный способ инициализации позволяет задать параметры для отслеживания предустановленных приложений, а также передать другие параметры с помощью методов класса YMMYandexMetrica (например, отслеживание активности пользователей). Параметры расширенной конфигурации применяются с момента инициализации библиотеки. Параметры, заданные с помощью методов класса YMMYandexMetrica могут применяться с некоторой задержкой.

YMMYandexMetricaConfiguration *configuration = [[YMMYandexMetricaConfiguration alloc] initWithApiKey:@API_key];
//Задание необходимых параметров
...
//Инициализация AppMetrica SDK
[YMMYandexMetrica activateWithConfiguration:configuration];

Установка версии приложения

По умолчанию версия приложения задается в файле настроек приложения Info.plist (CFBundleShortVersionString). Если необходимо установить версию приложения непосредственно из кода приложения, передайте в метод [YMMYandexMetricaConfiguration setCustomAppVersion:(NSString *)appVersion]; версию приложения.

[YMMYandexMetrica setCustomAppVersion:@"1.13.2"];

где 1.13.2 — версия приложения.

Включение/отключение логирования

По умолчанию логирование не ведется. Чтобы включить логирование, используйте метод [YMMYandexMetrica setLoggingEnabled:(BOOL)enabled];.

Отслеживание аварийных остановок приложения

По умолчанию отчеты об аварийных остановках приложения отправляются.

Чтобы отключить отправку отчетов, используйте метод [YMMYandexMetrica setReportCrashesEnabled:(BOOL)enabled];.

[YMMYandexMetrica setReportCrashesEnabled:NO];

Отправка местоположения устройства библиотекой

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

Запрет отправки также отключает все другие способы определения локации в AppMetrica (в том числе и по IP-адресу). Пользователи с отключенной отправкой группируются и отображаются в отчете по географии со значением «Не определено» в качестве имени региона.

Отправка данных о местоположении включена по умолчанию. Для отключения используйте метод +(void)setTrackLocationEnabled:(BOOL)enabled;.

// Отключение отправки данных о местоположении пользователя в AppMetrica
[YMMYandexMetrica setTrackLocationEnabled:NO];

Установка местоположения устройства вручную

Если необходимо отправить собственные данные о местоположении устройства используйте метод [YMMYandexMetrica setLocation:(CLLocation *)location];.

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
   [YMMYandexMetrica setLocation:newLocation];
}

При этом разрешите определение местоположения с помощью метода setLocationTracking, указав в нем YES.

[YMMYandexMetrica setLocationTracking:YES];

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

Отправка сообщения о событии

Чтобы отправить произвольное сообщение о событии, передайте в метод [YMMYandexMetrica reportEvent:(NSString *)message onFailure:(void (^)(NSError *error))onFailure]; краткое имя или описание события (message) и блок, в который передается ошибка (onFailure).

Если вы не хотите отслеживать ошибку, то передайте в качестве блока nil.

[YMMYandexMetrica reportEvent:message
    onFailure:^(NSError *error) {
                 NSLog(@"DID FAIL REPORT EVENT: %@", message);
                 NSLog(@"REPORT ERROR: %@", [error localizedDescription]);
}];

Отправка сообщения о событии, включая дополнительные параметры

Чтобы отправить произвольное сообщение о событии, передайте в метод [YMMYandexMetrica reportEvent:(NSString *)message parameters:(NSDictionary *)params onFailure:(void (^)(NSError *error))onFailure]; краткое имя или описание события (message), пары ключ-значение (params) и блок, в который передается ошибка (onFailure).

Если вы не хотите отслеживать ошибку, то передайте в качестве блока значение nil.

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

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

Отправка сообщения об ошибке

Чтобы отправить произвольное сообщение об ошибке, передайте в метод 
[YMMYandexMetrica reportError:(NSString *)message exception:(NSException *)exception
                              failure:(NSError * __ autoreleasing *)onFailure];
следующие параметры:
  • message — краткое имя или описание ошибки;
  • exception — объект типа NSException, который требуется передать на сервер. Этот параметр может принимать значение nil;
  • onFailure — блок, в который передается ошибка. Он может принимать значение nil.
@try {
    [self doWork];
}
@catch (NSException *exception) {
    [YMMYandexMetrica reportError:@"doWork failed" exception:exception onFailure:nil];
}

Задание длительности тайм-аута сессии

По умолчанию сессия заканчивается, если активность приложения отсутствует в течение 10 секунд. Чтобы изменить лимит времени, в которое приложение считается неактивным, передайте в метод [YMMYandexMetrica setSessionTimeout:(NSUInteger)sessionTimeoutSeconds]; продолжительность сессии в секундах.

Минимально допустимое значение параметра sessionTimeoutSeconds составляет 10 секунд. При задании значения меньше 10, значение автоматически будет соответствовать 10 секундам.

[YMMYandexMetrica setSessionTimeout:15];

Отслеживание открытий приложения с помощью deeplink

Чтобы отслеживать открытия приложения с помощью deeplink, необходимо в UIApplicationDelegate добавить следующие изменения:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [YMMYandexMetrica handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    return [YMMYandexMetrica handleOpenURL:url];
}

// Делегат для трекинга Universal links.
- (BOOL)application:(UIApplication *)application
    continueUserActivity:(NSUserActivity *)userActivity
    restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        [YMMYandexMetrica handleOpenURL:userActivity.webpageURL];
    }
    return YES;
}

Учет новых пользователей

Если вы подключаете AppMetrica SDK к приложению, у которого уже есть активные пользователи, вы можете настроить учет новых пользователей. Для настройки необходимо инициализировать AppMetrica SDK, используя расширенную конфигурацию YMMYandexMetricaConfiguration:

+ (void)initialize
{
    if ([self class] == [MMSAppDelegate class]) {
        // Создание объекта конфигурации
        YMMYandexMetricaConfiguration *configuration = [[YMMYandexMetricaConfiguration alloc] initWithApiKey:@API_key];
        // Реализуйте логику определения того, является ли запуск приложения первым. В качестве критерия вы можете использовать проверку наличия каких-то файлов (настроек, баз данных и др.), которые приложение создает в свой первый запуск
        BOOL isFirstApplicationLaunch = NO;
        // Передайте значение YES, если не хотите, чтобы данный пользователь засчитывался как новый
        configuration.handleFirstActivationAsUpdateEnabled = isFirstApplicationLaunch == NO;
        // Инициализация AppMetrica SDK
        [YMMYandexMetrica activateWithConfiguration:configuration];
    }
}

Отправка статистики с использованием API key, отличного от API key приложения

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

Для применения API key, который отличается от API key приложения можно использовать т. н. репортеры. Это может быть удобно для сбора статистики других библиотек.

Репортеры, инициализированные для разных API key, не зависят друг от друга и являются равноправными по функциональности. Репортер может работать даже в том случае, если приложение не инициализировало библиотеку AppMetrica.

Чтобы использовать репортер, необходимо получить объект, реализующий протокол YMMYandexMetricaReporting с помощью вызова

-(nullable id<YMMYandexMetricaReporting>)reporterForApiKey:(NSString *)apiKey;

Этот вызов можно использовать многократно для получения объекта YMMYandexMetricaReporting. Первый вызов обеспечивает инициализацию объекта, последующие будут возвращать уже проинициализированный объект.

Полученный объект можно использовать для отправки событий, используя методы протокола YMMYandexMetricaReporting.

Пример:

YMMYandexMetricaReporting reporting = [YMMYandexMetrica reporterForApiKey:API_KEY];
[reporting reportEvent:message
  onFailure:^(NSError *error) {
    NSLog(@"DID FAIL REPORT EVENT: %@", message);
    NSLog(@"REPORT ERROR: %@", [error localizedDescription]);
}];

Если вы создаете репортер для дополнительного API key, вам необходимо вручную управлять сессиями, возобновляя и приостанавливая их:

YMMYandexMetricaReporting reporting = [YMMYandexMetrica reporterForApiKey:API_KEY];
[reporting resumeSession];
// ...
[reporting reportEvent:message
  onFailure:^(NSError *error) {
    NSLog(@"DID FAIL REPORT EVENT: %@", message);
    NSLog(@"REPORT ERROR: %@", [error localizedDescription]);
}];
// ...
[reporting pauseSession];
Примечание. При перезагрузке приложения сессия будет прервана.

Для активации репортера, необходимо выполнить следующее:

YMMMutableReporterConfiguration *configuration = [[YMMMutableReporterConfiguration alloc] initWithApiKey:reporter_API_key];
configuration.sessionTimeout = 32; // Таймаут сессий репортера
configuration.logs = YES; // Включение логов событий репортера
[YMMYandexMetrica activateReporterWithConfiguration:[configuration copy]];