Шаг 2. Создайте AppGroup и добавьте production-сертификат Apple
Авторизуйтесь в своём аккаунте Apple developer и выберите Certificates, Identifiers & Profiles.
Откройте вкладку Identifiers в левом меню и проверьте, зарегистрирована ли AppGroup для вашего приложения.
Идентификатор группы должен соответствовать идентификатору приложения. Например для приложения com.edna.push.demoapp группа должна называться group.com.edna.push.demoapp.
Если группы ещё нет, нажмите справа от заголовка Identifiers и зарегистрируйте новую AppGroup. Запомните идентификатор, он потребуется в дальнейшем.
Шаг 3. Создайте расширение Notification Service Extension
В проекте приложения в Xcode добавьте новый target (File → New → Target):
В окне Choose a template for your new target на вкладке iOS выберите тип расширения Notification Service Extension.
Для основного приложения на вкладке Signing & Capabilities подключите созданную на предыдущем шаге AppGroup: добавьте capability Push Notifications и Background Modes→ Remote notification.
Для расширения Notification Service Extension на вкладке Signing & Capabilities подключите AppGroup и добавьте capability Push Notifications.
В файлах Info.plist в параметре edna_app_group для приложения и расширения укажите имя AppGroup.
Шаг 4. Подключите библиотеки edna к проекту
Подключите библиотеки edna с помощью CocoaPods или SwiftPackageManager.
Подключение библиотеки для основного приложения:
Подключение через Swift Package Manager:
https://github.com/edna-ru/push-x-ios
Подключение через CocoaPods:
pod ednaPushX
Подключение библиотеки для расширения Notification Service Extension:
Подключение через Swift Package Manager:
https://github.com/edna-ru/push-x-ne-ios
Подключение через CocoaPods:
pod ednaPushXNE
Шаг 5. Интегрируйте библиотеку в коде приложения
В файле AppDelegate проекта добавьте следующую строку для подключения библиотеки:
import EDNAPushX
#import <EDNAPushX/EDNAPushX.h>
Вставьте уникальный ключ приложения appId и инициализируйте библиотеку в методе AppDelegate applicationDidFinishLaunchingWithOptions. Ваш ключ appId будет находиться в блоке кода на шаге 4.2 интерактивной инструкции по настройке приложения.
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// appId – Уникальный ключ приложения
let appId =
"Вставьте appId вашего приложения из edna Pulse"
// auto_register - Автоматически показывать диалог с запросом на показ пуш-уведомлений
let pushXSettings = ["auto_register": true]
EDNAPushX.initWithLaunchOptions(options: launchOptions, appId: appId, settings: pushXSettings)
return true
}
Если пользователь нажмёт на область или кнопки уведомления, будет запущено приложение. Чтобы получить от библиотеки информацию о том, что приложение было запущено по нажатию на уведомление, в метод EDNAPushX.setOnPushAction передайте замыкание:
EDNAPushX.setOnPushAction(block: { (action) in
...
})
Метод EDNAPushX.setOnPushAction нужно вызвать до инициализации библиотеки — до вызова метода EDNAPushX.initWithLaunchOptions.
Шаг 6. Поддержите регистрацию устройств пользователей в сервисе edna
Выберите тип регистрации устройства на платформе.
Устройство пользователя появится в сервисе edna после регистрации. Сейчас доступен только автоматический способ регистрации. Скоро к нему будет добавлен ручной способ.
При автоматической регистрации библиотека edna самостоятельно регистрирует устройство в сервисе edna. Этот способ проще, не требует от вас управлять регистрацией, но не рекомендуется для отправки конфиденциальных данных.
После появления ручного способа ваш бэкенд сможет самостоятельно регистрировать устройство в сервисе edna через специальный метод API.
Для регистрации пользователя в сервисе вызовите метод login библиотеки, укажите идентификатор пользователя и тип идентификатора SubscriberIdType.
Следует вызывать метод только после успешной авторизации пользователя в вашем приложении:
Внутренние идентификаторы пользователя (ExtUserId, CookieId)
UTM-метка (UTM)
В момент деавторизации пользователя в приложении, вызовите метод logout библиотеки, чтобы отключить устройство пользователя в сервисе edna:
EDNAPushX.logout()
[EDNAPushX logout];
* Деятельность компании Meta запрещена на территории Российской Федерации.
Шаг 7. Подключите Notification Content Extension
В Xcode-проекте добавьте новый target, как и для Notification Service Extension. Далее в окне Choose a template for your new target на вкладке iOS выберите тип расширения Notification Content Extension.
Подключите библиотеку для расширения Notification Content Extension с помощью Swift Package Manager или CocoaPods.
Подключение через Swift Package Manager:
https://github.com/edna-ru/push-x-ce-ios
Подключение через CocoaPods:
pod ednaPushXCE
Замените код основного класса Notification Content Extension на следующий:
Укажите название extension-категории ednaPushCategory в файле Info.plist расширения, в параметре NSExtension/NSExtensionAttributes/UNNotificationExtensionCategory. Уведомления, требующие расширенной вёрстки, будут отправлены с extension-категорией ednaPushCategory.
В файле Info.plist в параметре edna_app_group для расширения Notification Content Extension укажите то же имя AppGroup, что и для приложения и расширения Notification Service Extension.
Убедитесь, что для параметра NSExtension / NSExtensionAttributes / UNNotificationExtensionDefaultContentHidden указано значение YES (1). Данный параметр позволяет скрыть информацию из оригинального уведомления при отображении расширенного вида.
Для расширения Notification Content Extension на вкладке Signing & Capabilities подключите тот же AppGroup, что и для приложения и расширения Notification Service Extension.
Перед загрузкой обновленной версии в магазин приложений не забудьте обновить декларацию о сборе данных.