Подключение и инициализация
- Шаг 1. Подключите библиотеку
- Шаг 2. Зарегистрируйте приложение в Apple Push Notification Service (APNs)
- Шаг 3. Зарегистрируйте device token вашего приложения
- Шаг 4. Настройте обработку открытия push-уведомления
- Шаг 5. (Опционально) Включите актуализацию push-токенов
- Шаг 6. (Опционально) Настройте загрузку прикрепленных файлов
- Шаг 7. (Опционально) Настройте сбор статистики push-уведомлений
- Отправка дополнительной информации
- Определение получателя уведомления
Перед началом работы с AppMetrica Push SDK версии 1.3.0 необходимо подключить и инициализировать AppMetrica SDK не ниже версии 3.4.1.
Шаг 1. Подключите библиотеку
Библиотека может работать со следующими системами управления зависимостями:
Библиотека поддерживает статический и динамический фреймворки для CocoaPods. Для подключения библиотеки добавьте в Podfile
проекта зависимость:
-
Статический фреймворк
pod 'YandexMobileMetricaPush', '1.3.0'
-
Динамический фреймворк
pod 'YandexMobileMetricaPush/Dynamic', '1.3.0'
Для подключения библиотеки добавьте в Cartfile
следующую зависимость и сохраните файл:
binary "https://raw.githubusercontent.com/yandexmobile/metrica-push-sdk-ios/master/YandexMobileMetricaPush.json" ~> 1.3.0
Чтобы подключить библиотеку, выполните следующее:
-
В Xcode, в своем проекте выберите вкладку Swift Packages.
-
Укажите URL репозитория
https://github.com/yandexmobile/metrica-push-sdk-ios
, в нем находится Swift-пакет. -
Настройте правило для выбора версии пакета.
Внимание
Подключение с помощью Swift Package Manager поддерживается, начиная с версии 1.0.0 AppMetrica Push SDK.
-
Выберите необходимые библиотеки.
Для подключения библиотеки выполните следующее:
- Загрузите библиотеку AppMetrica Push.
- Добавьте
YandexMobileMetricaPush.framework
в проект.
Примечание
Библиотеки AppMetrica SDK и AppMetrica Push SDK должны быть подключены одним из этих способов.
Шаг 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.
YMPYandexMetricaPush.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.
[YMPYandexMetricaPush 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 = YMPYandexMetricaPushEnvironment.development
#else
let pushEnvironment = YMPYandexMetricaPushEnvironment.production
#endif
YMPYandexMetricaPush.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
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-уведомления:
-
Воспользуйтесь делегатом
YMPUserNotificationCenterDelegate
. Он обрабатывает получение push-уведомлений автоматически, при их открытии.Внесите следующие изменения в код:
SwiftObjective-Cimport UserNotifications // In the "func application(_ application: UIApplication, didFinishLaunchingWithOptions // launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool" method: let delegate = YMPYandexMetricaPush.userNotificationCenterDelegate() UNUserNotificationCenter.current().delegate = delegate
#import <UserNotifications/UserNotifications.h> // In the "- (BOOL)application:(UIApplication *)application // didFinishLaunchingWithOptions:(NSDictionary *)launchOptions" method: [UNUserNotificationCenter currentNotificationCenter].delegate = [YMPYandexMetricaPush userNotificationCenterDelegate];
Чтобы отслеживать открытие и другие действия с push-уведомлениями, создайте собственный делегат
UNUserNotificationCenterDelegate
и добавьте его вnextDelegate
:SwiftObjective-CYMPYandexMetricaPush.userNotificationCenterDelegate().nextDelegate = yourDelegate
[YMPYandexMetricaPush userNotificationCenterDelegate].nextDelegate = yourDelegate;
После этого можно использовать соответствующие методы своего делегата.
-
Если вы дополнительно используете UISceneDelegate, добавьте следующий код в метод
scene(_:willConnectTo:options:)
:SwiftObjective-Cfunc scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { YMPYandexMetricaPush.handleSceneWillConnectToSession(with: connectionOptions) }
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { [YMPYandexMetricaPush handleSceneWillConnectToSessionWithOptions:connectionOptions]; }
Шаг 5. (Опционально) Включите актуализацию push-токенов
Сервис APNS может отозвать push-токен устройства, например, если пользователь долго не запускал приложение. AppMetrica хранит push-токены на сервере и не может отправить push-уведомление на устройство с устаревшим токеном.
Чтобы автоматически собирать актуальные push-токены, перейдите в настройки приложения в веб-интерфейса AppMetrica и выберите опцию Актуализировать токены с помощью Silent Push-уведомлений во вкладке Push-уведомления.
Шаг 6. (Опционально) Настройте загрузку прикрепленных файлов
Примечание
В веб-интерфейсе push-кампаний функциональность недоступна.
Вы можете настроить загрузку прикрепленных файлов в push-уведомлениях:
- Настройте загрузку прикрепленных файлов с помощью метода downloadAttachmentsForNotificationRequest Push SDK. С примером интеграции можно ознакомиться в статье Загрузка прикрепленных файлов.
- Прикрепите вложения (параметр
attachments
) с помощью операции Отправка push-сообщений Push API.
Шаг 7. (Опционально) Настройте сбор статистики push-уведомлений
Для сбора информации о доставке push-уведомлений настройте сбор статистики по инструкции.
Отправка дополнительной информации
При необходимости вы можете передавать вместе с push-уведомлением дополнительную информацию. Эти данные указываются в веб-интерфейсе AppMetrica при настройке push-кампании. Чтобы получать эту информацию, используйте метод:
let userData = YMPYandexMetricaPush.userData(forNotification: userInfo)
NSString *userData = [YMPYandexMetricaPush userDataForNotification:userInfo];
где userInfo
содержит данные о push-уведомлении.
Определение получателя уведомления
AppMetrica позволяет определить свои
push-уведомления, если в приложение были встроены несколько Push SDK.
Чтобы определить, является ли AppMetrica получателем сообщения, используйте следующий метод:
let isRelatedToAppMetricaSDK = YMPYandexMetricaPush.isNotificationRelated(toSDK: userInfo)
BOOL isRelatedToAppMetricaSDK = [YMPYandexMetricaPush isNotificationRelatedToSDK:userInfo];
См. также
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.
Была ли статья полезна?
- Шаг 1. Подключите библиотеку
- Шаг 2. Зарегистрируйте приложение в Apple Push Notification Service (APNs)
- Шаг 3. Зарегистрируйте device token вашего приложения
- Шаг 4. Настройте обработку открытия push-уведомления
- Шаг 5. (Опционально) Включите актуализацию push-токенов
- Шаг 6. (Опционально) Настройте загрузку прикрепленных файлов
- Шаг 7. (Опционально) Настройте сбор статистики push-уведомлений
- Отправка дополнительной информации
- Определение получателя уведомления
- См. также