UNNotificationContentExtension не обновляет нижний колонтитул содержимого по умолчанию при получении нового уведомления - PullRequest
0 голосов
/ 28 января 2019

У меня есть реализация расширения содержимого уведомлений, которое использует содержимое уведомлений по умолчанию (две текстовые строки внизу), предоставляемые iOS при открытии:

UNNotificationContentExtension with default content enabled

Проблема в том, что при поступлении нового уведомления при открытом UNNotificationContentExtension строки заголовка и тела нижнего колонтитула не обновляются.Я проверил, что метод didReceive() снова корректно вызывается и что переданный UNNotification имеет правильную обновленную информацию (параметры notification.request.content.body и notification.request.content.title).Однако ОС, похоже, просто игнорирует их, оставляя текст в нижней части неизменным, даже если мы можем без проблем обновить само содержимое.

Можно ли принудительно обновить содержимое по умолчанию?Кажется, что нет никакого параметра и / или метода, который мы могли бы использовать для этого ...

Заранее благодарен за любой ответ.

РЕДАКТИРОВАТЬ: Я должен также добавить, чтоуведомления генерируются локально (APN еще не активен).Код выглядит примерно так:

UNMutableNotificationContent *notificationContent = [UNMutableNotificationContent new];
notificationContent.categoryIdentifier = @"my.notification.category";
notificationContent.title = @"My notification title";
notificationContent.body = @"My notification body";

UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:notificationUUID
                                                                      content:notificationContent
                                                                      trigger:notificationTrigger];

UNUserNotificationCenter *notificationCenter = [UNUserNotificationCenter currentNotificationCenter];
[notificationCenter addNotificationRequest:request withCompletionHandler:nil];

1 Ответ

0 голосов
/ 28 января 2019

Вам необходимо реализовать расширение UNNotificationServiceExtension , такое же как UNNotificationContentExtension .Затем в методе didReceive вы можете получить доступ к вашей полезной нагрузке и обновить ее.

didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) будет вызываться перед методом расширения содержимого уведомления.

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]"

            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)
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...