我该如何处理在未读的iOS推送通知?(How can I handle unread push no

2019-07-31 08:51发布

我有一个5.1的iOS应用程序,注册到APNS服务接收通知。 该寄存器是成功的,我正确地接收到通知。 问题是当我尝试处理通知。

一旦应用程序正在运行,则该方法didReceiveRemoteNotification在AppDelegate中被正确地称为等如预期的通知进行处理。 这一点,但是,当应用程序在前台运行,只发生。

然而,当应用程序在后台运行,或者干脆停止,该方法不叫。 我读过,你应该有些行添加到方法didFinishLaunchingWithOptions方法来获得从通知userInfo的字典,并处理它。 这只是正常,但只有当应用程序通过点击在通知中心通知开幕。 这意味着,如果你点击它的徽章打开应用程序,或者简单地通过不断变化的环境,如果你是在后台运行它,应用程序从未意识到的通知走了进来。另外,如果收到多一个通知,我们可以只有通过点击通知中心,这是一种痛苦处理其中之一一次:-)

有什么办法来读取通知中心挂起的通知? 我知道有一种方法使用该方法来冲洗他们cancelAllLocalNotifications但我还没有找到一种方法,只是阅读。 我真的需要处理所有的人。 我想实现与第三方通知服务器的通信协议时,应用程序来到前台再次检索信息的,但因为信息已经在操作系统中我会觉得很奇怪,如果它是不可能以某种方式访问​​它。

因此,没有任何人知道的方式做到这一点? 提前致谢。

Answer 1:

当一个推送通知到达,用户点击“取消”,您的应用程序已经没有办法再读取推送通知。 你必须实现一个独立的功能(最有可能在服务器端)来获取发送到该设备通知的列表。

例如,如果一个聊天功能在您的应用程序提供,您可以通过推送通知发送聊天消息,那么你也应该在服务器上保留聊天消息。 上的任何推送通知则该聊天消息不会iOS设备上显示如果用户点击“取消”。 在当一个应用程序来在前台后面这种情况下,您对服务器进行调用,并获取所有过去的聊天消息(通过推送通知发送)。



Answer 2:

好了,一个可能的解决方案是有与“读”标志和MESSAGEID领域的消息的另一数据库表? 它默认读取标志是NO,那么当应用程序成功读取这个和显示器,它更新的标志是?

而只有256个字节一起玩,什么样的ID字段长度将是必要的吗?

编辑,

执行该计划及其成功合作。



文章来源: How can I handle unread push notifications in iOS?