\n
\n如标题所述,我目前无法从 UNNotificationServiceExtension 中安排任务。我想在调用以下函数并收到推送时安排任务:
func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void)
目前,只要我打电话:
\n\ntry BGTaskScheduler.shared.submit(request)
输入 catch 子句并返回以下错误:\'操作无法\xe2\x80\x99t 完成。(BGTaskSchedulerErrorDomain 错误 1。)\'
\n\n推送消息通过以下网址通过 Firebase 云消息传递发送,并在我的应用程序中完美接收: https: //fcm.googleapis.com/v1/ {项目路径}。我从 POSTMAN 中调用这个 url。我还指定了访问令牌和 json 正文。
\n\n推送消息中的 apns 标头设置为“apns-push-type”:“background”。Payload.aps 具有以下值:“apns-priority”:“5”,“content-available”:1,“mutable-content”:1。我认为这一切正常,因为我验证了这一点。
\n\n奇怪的是,我确实让后台任务在实际应用程序中工作,因此无需从 UNNotificationServiceExtension 中触发它。我尝试这样做是为了检查代码是否真的有效。
\n\n我已经完成了研究,到目前为止我已经尝试了以下操作:
\n 1.我确保 info.plist 中的“允许的后台任务调度程序标识符”填充了正确的任务标识符。我已三次检查该字符串是否在代码中也正确使用。\n
\n 2.在应用程序中启用以下功能:\'后台获取\'、\'远程通知\'、\'后台处理\' .\n
\n 3.在 info.plist 中,支持以下 UIBackgroundMode:\'audio\'、\'fetch\'、\'processing\'、\'remote-notification\' 和 \'voip\'。这些相同的 UIBackgroundMode 也被输入到 UNNotificationServiceExtension info.plist 中(我这样做只是为了确定)。\n
\n 4.我确保该任务在 AppDelegate 的 \'didFinishLaunchingWithOptions\'\n
\n 5中注册. …