Класс YMPYandexMetricaPush

Основной класс для обработки Push-уведомлений.

Методы экземпляра

+downloadAttachmentsForNotificationRequest:

Загружает прикрепленные файлы в push-уведомлениях. Метод доступен для iOS 10.0 и выше.

+handleApplicationDidFinishLaunchingWithOptions:

Обрабатывает открытие push-уведомления из метода application(_:didFinishLaunchingWithOptions:).

+handleDidReceiveNotificationRequest:

Обрабатывает получение push-уведомления из расширения Notification Service Extension.

+handleRemoteNotification:

Обрабатывает открытие push-уведомления из метода application(_:didReceiveRemoteNotification:fetchCompletionHandler:).

+handleSceneWillConnectToSession:

Обрабатывает открытие push-уведомления из метода scene(_:willConnectTo:options:).

+isNotificationRelatedToSDK:

Возвращает YES, если push-уведомление относится к AppMetrica.

+setDeviceTokenFromData:

Регистрирует device token приложения с production-окружением.

+setDeviceTokenFromData:pushEnvironment:

Регистрирует device token приложения с указанным окружением.

+setExtensionAppGroup:

Регистрирует общую группу App Groups приложения и Notification Service Extension.

+userDataForNotification:

Возвращает произвольную строку данных, которая передается в push-уведомлении.

+userNotificationCenterDelegate:

Возвращает делегат YMPUserNotificationCenterDelegate, который обрабатывает foreground push-уведомления на iOS 10 и выше.

Описание методов

downloadAttachmentsForNotificationRequest:

class func downloadAttachments(request: UNNotificationRequest, callback: YMPAttachmentsDownloadCallback)

Загружает прикрепленные файлы в push-уведомлениях. Метод доступен для iOS 10.0 и выше.

Параметры:

request

Объект класса UNNotificationRequest.

callback

Callback-блок загрузки содержимого уведомлений. Формат:

public typealias YMPAttachmentsDownloadCallback = ([UNNotificationAttachment]?, Error?) -> Void`

Включает в себя массив вложений attachments и ошибку error, если во время загрузки произошла ошибка.

handleApplicationDidFinishLaunching(withOptions:)

class func handleApplicationDidFinishLaunching(withOptions launchOptions: [AnyHashable : Any]?)

Обрабатывает открытие push-уведомления из метода application(_:didFinishLaunchingWithOptions:). Метод должен быть вызван после инициализации AppMetrica SDK.

Параметры:

launchOptions

Параметры в виде пар «ключ-значение», которые содержат информацию о запуске приложения.

handleDidReceive(_:)

class func handleDidReceive(_ request: UNNotificationRequest?)

Обрабатывает получение push-уведомления из расширения Notification Service Extension.

Метод должен быть вызван в реализации метода didReceive(_:withContentHandler:).

Параметры:

request

Объект класса UNNotificationRequest.

handleRemoteNotification(_:)

class func handleRemoteNotification(_ userInfo: [AnyHashable : Any]?)

Обрабатывает открытие push-уведомления из метода application(_:didReceiveRemoteNotification:fetchCompletionHandler:). Метод должен быть вызван после инициализации AppMetrica SDK.

Параметры:

userInfo

Параметры push-уведомлений в виде пар «ключ-значение», которые передаются системой.

handleSceneWillConnectToSession(with: connectionOptions)

class func handleSceneWillConnectToSession(with: connectionOptions)

Обрабатывает открытие push-уведомления из метода scene(_:willConnectTo:options:). Метод должен быть вызван после инициализации AppMetrica SDK.

Параметры:

connectionOptions

Объект класса UIScene.ConnectionOptions с параметрами подключения, которые передаются системой.

isNotificationRelated(toSDK:)

class func isNotificationRelated(toSDK userInfo: [AnyHashable : Any]?) -> Bool

Возвращает YES, если push-уведомление относится к AppMetrica.

Параметры:

userInfo

Параметры push-уведомлений в виде пар «ключ-значение», которые передаются системой.

Возвращает:

  • YES — если push-уведомление относится к AppMetrica.
  • NO — если push-уведомление не относится к AppMetrica.

setDeviceTokenFrom(_:)

class func setDeviceTokenFrom(_ data: Data?)

Регистрирует device token приложения с production-окружением. Метод должен быть вызван после инициализации AppMetrica SDK.

Параметры:

data

Device token приложения.

Если передается значение nil, предыдущий device token отзывается.

setDeviceTokenFrom(_:pushEnvironment:)

class func setDeviceTokenFrom(_ data: Data?, pushEnvironment: YMPYandexMetricaPushEnvironment)

Регистрирует device token приложения с указанным окружением. Метод должен быть вызван после инициализации AppMetrica SDK.

Внимание

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

Параметры:

data

Device token приложения.

Если передается значение nil, предыдущий device token отзывается.

pushEnvironment

APNs окружение приложения.

setExtensionAppGroup(_:)

class func setExtensionAppGroup(_ appGroup: String?)

Регистрирует общую группу App Groups приложения и Notification Service Extension.

Регистрация необходима для отслеживания доставки push-уведомлений. Подробнее в разделе Настройка сбора статистики push-уведомлений.

Параметры:

appGroup

Название общей группы App Groups.

userData(forNotification:)

class func userData(forNotification userInfo: [AnyHashable : Any]?) -> String?

Возвращает произвольную строку данных, которая передается в push-уведомлении:

  • В поле Дополнительные данные при отправке из интерфейса AppMetrica.
  • В поле data при отправке с помощью Push API.

Параметры:

userInfo

Параметры push-уведомлений в виде пар «ключ-значение», которые передаются системой.

Возвращает:

Произвольная строка данных.

userNotificationCenterDelegate()

class func userNotificationCenterDelegate() -> YMPUserNotificationCenterDelegate?

Возвращает делегат YMPUserNotificationCenterDelegate, который обрабатывает foreground push-уведомления на iOS 10 и выше.

Для обработки foreground push-уведомлений, добавьте этот код в методе application(_:didFinishLaunchingWithOptions:):

let delegate = YMPYandexMetricaPush.userNotificationCenterDelegate()
UNUserNotificationCenter.current().delegate = delegate

Для ручной обработки push-уведомлений используйте userNotificationCenterHandler().

Возвращает:

Делегат, который реализует протокол YMPUserNotificationCenterDelegate.

userNotificationCenterHandler()

class func userNotificationCenterHandler() -> YMPUserNotificationCenterHandling?

Возвращает делегат YMPUserNotificationCenterHandling, который позволяет вручную обрабатывать foreground push-уведомления на iOS 10 и выше.

Используйте этот делегат, если вы реализуете протокол UNUserNotificationCenterDelegate с собственной логикой. При этом необходимо реализовать каждый метод из делегата UNUserNotificationCenterDelegate и вызывать соответствующие методы в YMPUserNotificationCenterHandling.

Для упрощенной обработки push-уведомлений используйте userNotificationCenterDelegate()

Возвращает:

Делегат, который реализует протокол YMPUserNotificationCenterHandling.