Отслеживание доставки сообщений в iOS
В Wavesend есть метод API, который отслеживает доставку push-уведомлений. iOS-приложения не поддерживают этот метод по умолчанию, поскольку push-уведомления в iOS обрабатываются операционной системой, а не Wavesend SDK. Однако вы можете реализовать отслеживание доставки, добавив в свой проект Wavesend Notification Service Extension для отслеживания доставки push-уведомлений. Здесь вы найдете шаги по внедрению отслеживания доставки сообщений для iOS-приложений.
Добавление Notification Service Extension
Section titled “Добавление Notification Service Extension”-
В Xcode выберите File > New > Target…
-
Выберите Notification Service Extension и нажмите Next.
- Введите название продукта и нажмите Finish.
- Нажмите Cancel в появившемся диалоговом окне Activate scheme.
Отменив действие, вы оставите Xcode в режиме отладки вашего приложения, а не только что созданного расширения. Если вы случайно активировали его, вы можете переключиться обратно на отладку вашего приложения в Xcode.
Зависимости для Notification Service Extension (только для CocoaPods)
Section titled “Зависимости для Notification Service Extension (только для CocoaPods)”Примечание: Если вы используете Swift Package Manager для управления зависимостями, вы можете пропустить этот шаг, так как зависимости добавляются автоматически.
Откройте ваш Podfile и добавьте зависимость для target:
target 'NotificationServiceExtension' do use_frameworks! pod 'PushwooshXCFramework'endВыполните следующие команды в терминале, чтобы установить зависимости:
rm -rf Podfile.lockpod deintegratepod setuppod repo updatepod installДобавление кода для отслеживания событий доставки сообщений
Section titled “Добавление кода для отслеживания событий доставки сообщений”- Добавьте следующий код в ваш файл NotificationService.m:
import UserNotificationsimport PushwooshFramework
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)? var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { PWNotificationExtensionManager.shared().handle(request, contentHandler: contentHandler) }}#import "PWNotificationExtensionManager.h"
@interface NotificationService : UNNotificationServiceExtension
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { [[PWNotificationExtensionManager sharedManager] handleNotificationRequest:request contentHandler:contentHandler];}
- (void)serviceExtensionTimeWillExpire { // Called just before the extension is terminated by the system. // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.}
@end- Добавьте Pushwoosh_APPID в info.plist вашего Notification Service Extension.
<key>Pushwoosh_APPID</key> <string>XXXXX-XXXXX</string>Поделитесь с нами своим мнением
Section titled “Поделитесь с нами своим мнением”Ваши отзывы помогают нам улучшать продукт, поэтому мы будем рады, если вы сообщите нам о любых проблемах, возникших в процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, поделитесь своими мыслями, заполнив эту форму.