Подключение и инициализация
- Шаг 1. Подключите библиотеку
- Шаг 2. Зарегистрируйте приложение в Apple Push Notification Service (APNs)
- Шаг 3. Зарегистрируйте device token вашего приложения
- Шаг 4. Настройте обработку открытия push-уведомления
- Шаг 5. (Опционально) Включите актуализацию push-токенов
- Шаг 6. (Опционально) Настройте загрузку прикрепленных файлов
- Шаг 7. (Опционально) Настройте сбор статистики push-уведомлений
- Отправка дополнительной информации
- Определение получателя уведомления
Перед началом работы с 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
Чтобы подключить библиотеку, выполните следующее:
-
В окне Xcode навигатора проектов (Project Navigator) выберите свой проект (если у вас используется Workspace). Затем в верхнем меню нажмите File и выберите Add Package Dependencies....
-
Укажите URL репозитория
https://github.com/appmetrica/push-sdk-ios
. -
Оставьте только нужные модули (чтобы выключить модуль в
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-уведомления:
-
Воспользуйтесь делегатом
UserNotificationCenterDelegate
/AMPUserNotificationCenterDelegate
. Он обрабатывает получение push-уведомлений автоматически, при их открытии.Внесите следующие изменения в код:
SwiftObjective-Cimport 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
:SwiftObjective-CAppMetricaPush.userNotificationCenterDelegate.nextDelegate = yourDelegate
[AMPAppMetricaPush userNotificationCenterDelegate].nextDelegate = yourDelegate;
После этого можно использовать соответствующие методы своего делегата.
-
Если вы дополнительно используете UISceneDelegate, добавьте следующий код в метод
scene(_:willConnectTo:options:)
:SwiftObjective-Cfunc 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-уведомлениях:
- Настройте загрузку прикрепленных файлов с помощью метода downloadAttachmentsForNotificationRequest Push SDK. С примером интеграции можно ознакомиться в статье Загрузка прикрепленных файлов.
- Прикрепите вложения (параметр
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];
См. также
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.