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

Перед началом работы с AppMetrica Push SDK версии 2.2.1 необходимо подключить и инициализировать AppMetrica SDK не ниже версии 5.0.0.

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

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

Чтобы подключить библиотеку Push SDK, добавьте в Podfile проекта зависимости:

pod 'AppMetricaPush', '~> 2.2.1' # Основной модуль для работы с Push SDK, обязателен для подключения
pod 'AppMetricaPushLazy', '~> 2.2.1' # Дополнительный модуль для Lazy пушей

Интеграция через интерфейс Xcode

Чтобы подключить библиотеку, выполните следующее:

  1. В окне Xcode навигатора проектов (Project Navigator) выберите свой проект (если у вас используется Workspace). Затем в верхнем меню нажмите File и выберите Add Package Dependencies....

  2. Укажите URL репозитория https://github.com/appmetrica/push-sdk-ios.

  3. Оставьте только нужные модули (чтобы выключить модуль в Add to Target выберите значение None):

    • AppMetricaPush — обязательный основной модуль Push SDK. Должен быть подключен для работы.
    • AppMetricaPushLazy — дополнительный модуль для Lazy пушей.

Интеграция через Package.swift манифест

Для начала добавьте следующую зависимость в массив dependencies: вашего пакета:

dependencies: [
   .package(
      url: "https://github.com/appmetrica/push-sdk-ios",
      from: "2.2.1"
   )
],

Модули AppMetrica Push SDK, которые вы можете подключить в зависимости от потребностей вашего проекта:

  • AppMetricaPush — обязательный основной модуль Push SDK. Должен быть подключен для работы.
  • AppMetricaPushLazy — дополнительный модуль для Lazy пушей.

Пример подключения модулей в массиве dependencies: таргета:

.target(
   name: "MyTargetName",
   dependencies: [
      .product(name: "AppMetricaPush", package: "push-sdk-ios"),
      // .product(name: "AppMetricaPushLazy", package: "push-sdk-ios"), // Этот модуль отлючен
   ]
),

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

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

let center = UNUserNotificationCenter.current()
center.requestAuthorization(options:\[.badge, .alert, .sound\]) { (granted, error) in
  // Enable or disable features based on authorization.
}
application.registerForRemoteNotifications()

Как правило, эти данные передаются в следующем методе:

func application(_ application: UIApplication, didFinishLaunchingWithOptions
                 launchOptions: [UIApplicationLaunchOptionsKey :Any]? = nil) -> Bool

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

UNAuthorizationOptions options =
  UNAuthorizationOptionAlert |
    UNAuthorizationOptionBadge |
    UNAuthorizationOptionSound;
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center requestAuthorizationWithOptions:options completionHandler:^(BOOL granted, NSError *error) {
  // Enable or disable features based on authorization.
}];
[application registerForRemoteNotifications];

Как правило, эти данные передаются в следующем методе:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

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

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

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

Добавьте следующий код в AppDelegate:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
    // If the AppMetrica SDK library was not initialized before this step,
    // calling the method causes the app to crash.
    AppMetricaPush.setDeviceTokenFrom(deviceToken)
}

Добавьте следующий код в вашу реализацию UIApplicationDelegate:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    // If the AppMetrica SDK library was not initialized before this step,
    // calling the method causes the app to crash.
    [AMPAppMetricaPush setDeviceTokenFromData:deviceToken];
}

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

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
    // If the AppMetrica SDK library was not initialized before this step,
    // calling the method causes the app to crash.
    #if DEBUG
        let pushEnvironment = AppMetricaPushEnvironment.development
    #else
        let pushEnvironment = AppMetricaPushEnvironment.production
    #endif
    AppMetricaPush.setDeviceTokenFrom(deviceToken, pushEnvironment: pushEnvironment)
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    // If the AppMetrica SDK library was not initialized before this step,
    // calling the method causes the app to crash.
    #ifdef DEBUG
        AMPAppMetricaPushEnvironment pushEnvironment = AMPAppMetricaPushEnvironmentDevelopment;
    #else
        AMPAppMetricaPushEnvironment pushEnvironment = AMPAppMetricaPushEnvironmentProduction;
    #endif
    [AMPAppMetricaPush setDeviceTokenFromData:deviceToken pushEnvironment:pushEnvironment];
}

Внимание

AppMetrica позволяет отправлять push-уведомления в Sandbox APNs. Но обработка push-уведомлений может работать некорректно, если на устройстве запускались версии приложения с разным окружением (development и production). Чтобы избежать этого, можно использовать отдельный тестовый API key для development окружения.

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

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

  1. Воспользуйтесь делегатом UserNotificationCenterDelegate/AMPUserNotificationCenterDelegate. Он обрабатывает получение push-уведомлений автоматически, при их открытии.

    Внесите следующие изменения в код:

    import UserNotifications
    
    // In the "func application(_ application: UIApplication, didFinishLaunchingWithOptions 
    //                          launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool" method:
    let delegate = AppMetricaPush.userNotificationCenterDelegate
    UNUserNotificationCenter.current().delegate = delegate
    
    #import <UserNotifications/UserNotifications.h>
        
    // In the   "- (BOOL)application:(UIApplication *)application 
    // didFinishLaunchingWithOptions:(NSDictionary *)launchOptions" method:
    [UNUserNotificationCenter currentNotificationCenter].delegate =
            [AppMetricaPush userNotificationCenterDelegate];
    

    Чтобы отслеживать открытие и другие действия с push-уведомлениями, создайте собственный делегат UNUserNotificationCenterDelegate и добавьте его в nextDelegate:

    AppMetricaPush.userNotificationCenterDelegate.nextDelegate = yourDelegate
    
    [AMPAppMetricaPush userNotificationCenterDelegate].nextDelegate = yourDelegate;
    

    После этого можно использовать соответствующие методы своего делегата.

  2. Если вы дополнительно используете UISceneDelegate, добавьте следующий код в метод scene(_:willConnectTo:options:):

    func scene(_ scene: UIScene, willConnectTo
               session: UISceneSession, options
               connectionOptions: UIScene.ConnectionOptions) {
         AppMetricaPush.handleSceneWillConnectToSession(with: connectionOptions)
    }
    
    - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session
          options:(UISceneConnectionOptions *)connectionOptions
    {
        [AMPAppMetricaPush handleSceneWillConnectToSessionWithOptions:connectionOptions];
    }
    

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

Если push-токен устройства стал неактуальным (например, пользователь удалил приложение), сервис APNS может вернуть ошибку 410 «The device token is no longer active for the topic». AppMetrica может поддерживать список актуальных токенов с помощью отправки silent push-уведомлений. Это поможет вам иметь представление об количестве устройств до начала пуш-компании.

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

Использование silent push повышает точность оценки аудитории пуш-компании и отчетов по пушам и может повлиять на успешность доставки push-уведомлений приложения.

Шаг 6. (Опционально) Настройте загрузку прикрепленных файлов

Примечание

В веб-интерфейсе push-кампаний функциональность недоступна.

Вы можете настроить загрузку прикрепленных файлов в push-уведомлениях:

  1. Настройте загрузку прикрепленных файлов с помощью метода downloadAttachmentsForNotificationRequest Push SDK. С примером интеграции можно ознакомиться в статье Загрузка прикрепленных файлов.
  2. Прикрепите вложения (параметр attachments) с помощью операции Отправка push-сообщений Push API.

Шаг 7. (Опционально) Настройте сбор статистики push-уведомлений

Для сбора информации о доставке push-уведомлений настройте сбор статистики по инструкции.

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

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

let userData = AppMetricaPush.userData(forNotification: userInfo)
NSString *userData = [AMPAppMetricaPush userDataForNotification:userInfo];

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

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

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

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

let isRelatedToAppMetricaSDK = AppMetricaPush.isNotificationRelated(toSDK: userInfo)
BOOL isRelatedToAppMetricaSDK = [AMPAppMetricaPush isNotificationRelatedToSDK:userInfo];

См. также

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

Написать в службу поддержки
Предыдущая