在iOS系统中,是否有可能阅读所有的推送通知?

3
我想阅读与我的应用程序相关的所有通知,这些通知在打开应用程序时都显示在通知中心中。请给我提供任何想法。 我尝试过,
 UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

但它只返回一个已选择的通知。

2个回答

4
[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]将返回导致应用程序启动的通知。
因此,如果您收到推送通知,并从SpiringBoard打开应用程序,则[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]将为nil
这意味着如果用户不使用推送通知打开应用程序,则应用程序将不知道接收到的推送通知。所以答案是 - 没有办法。
编辑:
基本上,如果您正在使用本地通知,可以将已安排的通知([UIApplication scheduledLocalNotifications])保存到文件/服务器中,然后将已安排的通知与保存的文件进行比较。在这种情况下,您将知道哪些通知已被传递。

你对此百分之百确定吗?或者请告诉我处理此事的其他方法。 - Surfer
抱歉,我对[UIApplication scheduledLocalNotifications]很清楚。 - Surfer
[UIApplication scheduledLocalNotifications] 将会返回所有未被传递的挂起本地通知。这意味着,在安排本地通知后,您可以将它们保存到文件中,然后获取当前的 scheduledLocalNotifications 并将其与您的文件进行比较,以确定哪些通知尚未传递。 - l0gg3r
当应用程序处于后台状态时,是否有委托可在接收到远程通知时调用? - Surfer
当然 - application:didReceiveRemoteNotification:fetchCompletionHandler: - l0gg3r
显示剩余2条评论

1
你无法在iOS设备上本地阅读所有等待的通知。如果用户选择打开应用程序,则可以发送所选通知的信息。(使用您显示的代码)
一般来说,您想要做的是在服务器上维护与设备ID相关联的已发送通知列表(因为发送通知时需要此列表)。您需要查询服务器以获取已发送通知列表以在应用程序中显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接