Расширение уведомлений FCM iOS

#ios #firebase #firebase-cloud-messaging #push

#iOS #firebase #firebase-облако-обмен сообщениями #толкать

Вопрос:

Я внедряю Push-уведомления iOS с использованием FCM. Но я хочу показать изображение с моим уведомлением. Вот почему я склоняюсь к реализации UNNotificationServiceExtension

Что я сделал, так это следующее. Добавить новый target > notification service extension . Эта цель в настоящее время содержит

введите описание изображения здесь

 class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)

        if let bestAttemptContent = bestAttemptContent {
            // Modify the notification content here...
            bestAttemptContent.title = "(bestAttemptContent.title) [modified]"
            bestAttemptContent.subtitle = "Hey from extension"

            contentHandler(bestAttemptContent)
        }
    }

    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be 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.
        if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }

}
  

После этого я отправляю push-уведомление со следующей полезной нагрузкой:

введите описание изображения здесь

Получено push-уведомление и т.д. Однако оно не проходит через расширение, потому что оно не содержит моих измененных данных, которые я добавил в NotificationService

Чего мне не хватает, как мне убедиться, что мое измененное расширение вызывается при получении push

Комментарии:

1. решена ли ваша проблема?

2. да, это решено, я ответил на свой собственный вопрос

3. Сталкиваюсь с той же проблемой. Я не получаю никакого обратного вызова в didReceive функции. Где моя цель установлена одинаково для приложения и расширения!!

Ответ №1:

Оказалось, что мне нужно сопоставить цель развертывания моего приложения с целью развертывания Push-расширения

введите описание изображения здесь