当应用程序处于未运行或后台状态时,如何处理推送通知有效负载而不点击它

Posted

技术标签:

【中文标题】当应用程序处于未运行或后台状态时,如何处理推送通知有效负载而不点击它【英文标题】:How to handle push notification payload without tapping it when the app is in not running or background state 【发布时间】:2018-12-19 11:56:42 【问题描述】:

我必须在本地存储来自我的 ios 应用程序的所有通知的标题和正文,并将它们显示在通知屏幕中。我可以使用这些存储所有点击的通知-

当应用程序处于非运行状态或点击推送通知时被终止-

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) ...

当应用程序在前台或后台运行并点击推送通知时调用此方法-

    func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) ...

我的问题是如何在不点击通知的情况下存储通知。 即使通知被用户拒绝/清除,我也想存储通知。

我知道当应用程序处于活动状态并在前台并推送通知时调用此方法-

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) ..

当应用程序处于后台或未运行状态时,如何处理推送通知数据而不点击它?

【问题讨论】:

AFAIK 无法在您的应用程序未处于运行状态时处理通知 - 至少在您不使用 VOIP 的情况下是这样。我有一个非常相似的问题,在这里写了一个问题(没有成功)***.com/questions/51055491/… @Teetz 有没有办法在用户下次打开应用时处理通知数据? 我不是 100% 确定,但我不这么认为。这样做的 AFAIK 应用程序将其推送通知存储在其后端服务器上,并在应用程序启动时要求后端获取所有远程通知数据。 【参考方案1】:

1- 如果应用未运行,则无法仅使用 (VOIP) 唤醒应用

2- 如果在后台,则将此密钥添加到发送的有效负载中

“content_available”:真

并从应用功能启用 RemoteNotifications

【讨论】:

1- 我不想在收到通知时唤醒未运行的应用程序。有没有办法在用户下次打开应用程序时获取通知数据? 2-当“content_available”时我可以通过哪种方法获取通知数据:有效载荷中有没有? 1 - 如果您将 content_available 设置为 1 或 true 并且您的应用程序处于后台,则 func application(_: didReceiveRemoteNotification: fetchCompletionHandler:) 将在无需用户操作的情况下立即调用,但您必须在 30 内调用 completionHandler自调用该方法以来的秒数。如果您没有content_available,那么当用户点击警报或将应用程序置于前台时,将调用上述方法。

以上是关于当应用程序处于未运行或后台状态时,如何处理推送通知有效负载而不点击它的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序不在后台运行时如何处理推送通知

当 iOS 应用程序被暂停/杀死并且用户点击通知时如何处理 Firebase 推送通知?

如何处理收到推送通知后恢复应用程序的情况

应用未运行时如何处理远程通知

当应用程序处于活动状态时,iOS 处理推送通知点击

当应用程序在 iOS 中关闭且应用程序未在后台运行时从推送通知中获取数据