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

Подключение AppMetrica Push SDK

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

Шаг 1. Библиотека адаптирована для работы с системой управления зависимостями CocoaPods. Для подключения библиотеки добавьте в Podfile проекта зависимость:

 pod 'YandexMobileMetricaPush', '0.4.0'
Если вы не используете CocoaPods
  1. Загрузите библиотеку AppMetrica Push.
  2. Добавьте YandexMobileMetricaPush.framework в проект.
Примечание. Библиотеки AppMetrica SDK и AppMetrica Push SDK должны быть подключены одним из этих способов.

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

// Register for push notifications
if #available(iOS 8.0, *) {
  if #available(iOS 10.0, *) {
    // iOS 10.0 and above
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
      // Enable or disable features based on authorization.
    }
  } else {
    // iOS 8 and iOS 9
    let settings = UIUserNotificationSettings(types: [.badge, .alert, .sound], categories: nil)
    application.registerUserNotificationSettings(settings)
  }
  application.registerForRemoteNotifications()
} else {
  // iOS 7
  application.registerForRemoteNotifications(matching: [.badge, .alert, .sound])
}

Как правило, эти данные передаются в методе func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool .

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

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

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
  // Send device token to AppMetrica Push server.
  // Method YMMYandexMetrica.activate has to be called before using this method.
  YMPYandexMetricaPush.setDeviceTokenFrom(deviceToken)
}

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

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any])
{
  self.handlePushNotification(userInfo)
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
{
  self.handlePushNotification(userInfo)
  completionHandler(.newData)
}

func handlePushNotification(_ userInfo: [AnyHashable : Any])
{
  // Track received remote notification.
  // Method [YMMYandexMetrica activateWithApiKey:] should be called before using this method.
  YMPYandexMetricaPush.handleRemoteNotification(userInfo)
}

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

let userData = YMPYandexMetricaPush.userData(forNotification: userInfo)

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