Подключение и инициализация AppMetrica Push SDK

Шаг 1. Подключите библиотеку

Библиотека может работать со следующими системами управления зависимостями:

Библиотека поддерживает статический и динамический фреймворки для CocoaPods. Для подключения библиотеки добавьте в Podfile проекта зависимость:

  • Статический фреймворк

    pod 'YandexMobileMetricaPush', '0.8.0'
    Скопировано
  • Динамический фреймворк

    pod 'YandexMobileMetricaPush/Dynamic', '0.8.0'
    Скопировано
Если вы не используете указанные системы управления зависимостями

Для подключения библиотеки выполните следующее:

  1. Добавьте YandexMobileMetricaPush.framework в проект.
Примечание. Библиотеки AppMetrica SDK и AppMetrica Push SDK должны быть подключены одним из этих способов.

Шаг 2. Зарегистрируйте приложение в Apple Push Notification Service (APNs)

Регистрация необходима для подготовки приложения к работе с push-уведомлениями. Для отправки уведомлений на устройства с iOS версии 7 и выше добавьте следующие изменения в код приложения:

if ([application respondsToSelector:@selector(registerForRemoteNotifications)]) {
    if (NSClassFromString(@"UNUserNotificationCenter") != Nil) {
        // iOS 10.0 and above
        UNAuthorizationOptions options =
            UNAuthorizationOptionAlert |
            UNAuthorizationOptionBadge |
            UNAuthorizationOptionSound;
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        [center requestAuthorizationWithOptions:options completionHandler:^(BOOL granted, NSError *error) {
            // Enable or disable features based on authorization.
        }];
    }
    else {
        // iOS 8 and iOS 9
        UIUserNotificationType userNotificationTypes =
            UIUserNotificationTypeAlert |
            UIUserNotificationTypeBadge |
            UIUserNotificationTypeSound;
        UIUserNotificationSettings *settings =
            [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil];
        [application registerUserNotificationSettings:settings];
    }
    [application registerForRemoteNotifications];
}
Скопировано
Как правило, эти данные передаются в следующем методе:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Подробно об используемых методах в документации на developer.apple.com:

Шаг 3. Зарегистрируйте device token вашего приложения

Для отправки push-уведомления с помощью AppMetrica необходим device token вашего приложения. Чтобы зарегистрировать его, добавьте следующий код в вашу реализацию UIApplicationDelegate:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    // If the library AppMetrica the SDK was not initialized before this step,
    // the method call will result in emergency stop applications.
    [YMPYandexMetricaPush setDeviceTokenFromData:deviceToken];
}
Скопировано

Чтобы зарегистрировать device token и отправить окружение APNs, используйте следующий код:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    // If the library AppMetrica the SDK was not initialized before this step,
    // the method call will result in emergency stop applications.
    #ifdef DEBUG
        YMPYandexMetricaPushEnvironment pushEnvironment = YMPYandexMetricaPushEnvironmentDevelopment;
    #else
        YMPYandexMetricaPushEnvironment pushEnvironment = YMPYandexMetricaPushEnvironmentProduction;
    #endif
    [YMPYandexMetricaPush setDeviceTokenFromData:deviceToken pushEnvironment:pushEnvironment];
}
Скопировано
Внимание. AppMetrica позволяет отправлять push-уведомления в Sandbox APNs. Но обработка push-уведомлений может работать некорректно, если на устройстве запускались версии приложения с разным окружением (development и production). Чтобы избежать этого, можно использовать отдельный тестовый API key для development окружения.

Шаг 4. Настройте обработку открытия push-уведомления

Настройте обработку открытия push-уведомления, добавив следующий код в соответствующие методы UIApplicationDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [YMPYandexMetricaPush handleApplicationDidFinishLaunchingWithOptions:launchOptions];
    return YES;
}
- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [YMPYandexMetricaPush handleRemoteNotification:userInfo];
}
- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo
    fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
    [YMPYandexMetricaPush handleRemoteNotification:userInfo];
}
Скопировано

Для интеграции в iOS версии 10 и выше внесите следующие изменения в код:

#import <UserNotifications/UserNotifications.h>
    
//  In the  "- (BOOL)application:(UIApplication *)application 
//         didFinishLaunchingWithOptions:(NSDictionary *)launchOptions" method:
if ([UNUserNotificationCenter class] != Nil) {
    [UNUserNotificationCenter currentNotificationCenter].delegate =
        [YMPYandexMetricaPush userNotificationCenterDelegate];
}
Скопировано

Если у вас уже установлен другой делегат в [UNUserNotificationCenter currentNotificationCenter].delegate, укажите делегат в качестве проксируемого следующим образом:

[YMPYandexMetricaPush userNotificationCenterDelegate].nextDelegate = yourDelegate;
Скопировано

Шаг 5. (Опционально) Включите актуализацию push-токенов

Сервис APNS может отозвать push-токен устройства, например, если пользователь долго не запускал приложение. AppMetrica хранит push-токены на сервере и не может отправить push-уведомление на устройство с устаревшим токеном.

Чтобы автоматически собирать актуальные push-токены, перейдите в настройки приложения в веб-интерфейса AppMetrica и выберите опцию Актуализировать токены с помощью Silent Push-уведомлений во вкладке Push-уведомления.

Отправка дополнительной информации

При необходимости вы можете передавать вместе с push-уведомлением дополнительную информацию. Эти данные указываются в веб-интерфейсе AppMetrica при настройке push-кампании. Чтобы получать эту информацию, используйте метод:

NSString *userData = [YMPYandexMetricaPush userDataForNotification:userInfo];
Скопировано

где userInfo содержит данные о push-уведомлении.

Определение получателя уведомления

AppMetrica позволяет определить "свои" push-уведомления, если в приложение были встроены несколько Push SDK.

Чтобы определить, является ли AppMetrica получателем сообщения, используйте следующий метод:

BOOL isRelatedToAppMetricaSDK = [YMPYandexMetricaPush isNotificationRelatedToSDK:userInfo];
Скопировано