Notificaton服务扩展无法正常工作

时间:2017-03-09 12:35:35

标签: ios notifications apple-push-notifications ios10 serviceextension

当我发送mutable-content时没有显示通知:1使用推送有效负载,它既没有到达Notification服务扩展内的断点,虽然没有显示可变内容推送,但Notification内容扩展也正常工作。我没有修改Notification服务扩展中的代码,它是xcode生成的默认代码。在创建通知服务扩展时我是否遗漏了某些内容,或者可能是设备设置的问题。我几天前在同一台设备上进行了测试,通知服务扩展工作正常。

以下是我的服务扩展代码

import UserNotifications

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

编辑1:下面是我的推送有效载荷

{  
   "aps":{  
      "sound":"default",
      "mutable-content": 1,
      "category": "myCategory",
      "alert":{  
         "body":"this is a custom push",
         "subtitle":"subtitle of the push",
         "title":"Push Test"
      }

   }
}

edit1:问题出现在10.2.1上运行的特定设备上,我检查了运行在10.2上的其他设备,它触发了Notification服务扩展。

2 个答案:

答案 0 :(得分:12)

最后我能够解决这个问题。我不确定是什么导致了这个问题,但经过一些实验后,我意识到不仅我的服务扩展,而且所有其他安装的应用程序的服务扩展都无法正常工作,并且在发送带有“mutable-content:1”的推送有效负载时,未显示通知。重新启动设备后,它开始正常工作。我使用的是iPhone 6s。

答案 1 :(得分:4)

您的 NotificationServiceExtension 的部署目标也可能是一个原因。

就我而言,我正在测试运行在 iOS 12.4 上的设备,而目标 我的 NotificationServiceExtension 的版本是 14.1。我只是改变了我的 NotificationServiceExtension 的目标版本为 12.4 有效。