当应用程序终止或终止时,如何在核心数据中存储推送通知



当应用程序终止或终止时,我正试图将推送通知(FCM(存储在coredata中。它不起作用。但当应用程序处于后台时,它的存储状态是完美的。当我点击通知时,它也被完美地存储了。但我不能存储在coredata被杀状态。

我正在使用FCM通知

  1. 当应用程序处于终止状态时,是否可能在iOS中存储coredata通知
  2. 应用程序被终止时存储核心数据的任何解决方案

您可以使用UNNotificationServiceExtension。这是用来作为一个拦截器,在呈现给用户之前修改传入通知的内容。但是,您可以使用此拦截器将通知保存到CoreData。请确保在通知数据负载上将mutable-content设置为1。只有这些才会被拦截。

FCM支持这个mutable-content,我在我的一个项目中做了一些非常类似的事情,以确认我的后端用户收到了通知,它工作得很完美。

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

// TODO
// Save the notification to core data

contentHandler(request.content)
}

override func serviceExtensionTimeWillExpire() {
if let contentHandler = contentHandler,
let bestAttemptContent =  bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}

您可以更改有效负载的工作状态。在我这边,我已经改变了有效载荷,工作得很好。

背景模式。检查您的背景模式。

更改有效载荷:

{
"to": "Device GCM Id",
"content_available": true,
"mutable_content": true,
"notification":
{
"body":"Your Notification message",
"sound": "default",
"title":"Your App tittle"
}
}

Appdelegate:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
{
// Save pushnotification data to core data
}

当你的应用程序被杀时,这个方法应该保存在核心数据中。我这边100%工作。

相关内容

  • 没有找到相关文章

最新更新