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

Операции

Данные операции позволяют настроить работу библиотеки и отправлять события по желанию разработчика.

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

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

+ (void)initialize
{
   if ([self class] == [MMSAppDelegate class]) {
       [YMMYandexMetrica activateWithApiKey:@API_key
[no-highlight[

API key — это уникальный идентификатор приложения, который выдается в веб-интерфейсе AppMetrica при добавлении приложения.

]no-highlight]
]; } }

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

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

YMMYandexMetricaConfiguration *configuration = [[YMMYandexMetricaConfiguration alloc] initWithApiKey:@API_key
[no-highlight[

API key — это уникальный идентификатор приложения, который выдается в веб-интерфейсе AppMetrica при добавлении приложения.

]no-highlight]
]; //Задание необходимых параметров ... //Инициализация AppMetrica SDK [YMMYandexMetrica activateWithConfiguration:configuration];

Подробно о методах расширенной конфигурации

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

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

[YMMYandexMetrica setCustomAppVersion:@"1.13.2"];

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

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

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

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

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

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

[YMMYandexMetrica setReportCrashesEnabled:NO];

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

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

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

[YMMYandexMetrica setTrackLocationEnabled:NO];

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

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

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

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

[YMMYandexMetrica setTrackLocationEnabled: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];
}

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

Если вы подключаете 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
[no-highlight[

Описание

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

Примечание. После активации параметра все последующие установки приложения будут определены AppMetrica как обновления приложения. Данные установки не будут отображены в отчетах как установки а также не будут атрибутированы партнерам.

]no-highlight]
= isFirstApplicationLaunch == NO; // Инициализация AppMetrica SDK [YMMYandexMetrica activateWithConfiguration:configuration]; } }

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

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

Для применения API key, который отличается от API key приложения
[no-highlight[

API key — это уникальный идентификатор приложения, который выдается в веб-интерфейсе AppMetrica при добавлении приложения.

]no-highlight]
можно использовать т. н. репортеры. Это может быть удобно для сбора статистики других библиотек.

Репортеры, инициализированные для разных 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]);
}];