通知中心 - 如何知道是否有“未读”通知?

3

我的应用程序中,推送通知服务器正常工作,我能按预期收到通知。

如果我在应用程序内并收到一条通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

被称为...

如果我在应用程序外部,收到通知并点击它..

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

被称为...

如果我在应用程序之外,收到通知并通过单击春板上的图标加载我的应用程序..

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

不叫做...

我不理解为什么会这样,肯定有一种方法可以检查通知中心并说:“嘿!通知中心,我有没有未读的应用负载需要处理?”


以WhatsApp应用为例,他们从服务器检索用户数据,并检查用户是否有待处理的通知,而不是针对APNs。 - Mazyod
但这意味着您可以与服务器进行检查并“接收”通知,然后返回到通知中心,并再次接收它。 - Bongeh
我在这里要解释的方法完全独立于APN服务。最后的通知只是数据,所以只需从服务器请求该数据即可。这不是一个完美的答案,但可能会有所帮助。 - Mazyod
是的,我理解你的意思了,我想我的回复有点混淆了。APS通知包含我需要的所有数据,仅仅需要一个标志来表示“项目上的新状态”,每次加载应用程序时都要检查外部服务器似乎是不必要的,因为它会(并且在我的例子中已经)告诉我有一个新状态,如果用户从外部服务器读取该标志,然后再从通知中心读取它,状态将增加2而不是1。 - Bongeh
太棒了!那真是一个非常简单的解决方案,我应该自己想到的。谢谢,所以我猜这个问题的答案是:不,你不能查询通知中心? - Bongeh
啊,好吧..我从来没有用过APS..所以我不能确定。 - Mazyod
1个回答

4

不用阅读所有评论,结论如下:

  1. 设置图标徽章数
  2. 启动应用程序时或从后台返回时,请检查应用程序徽章。
  3. 决定是否向服务器请求任何数据。

这是一种解决方案,但我们也感兴趣的是:

是否可以查询通知中心呢?


嘿,我也需要你想要的东西。但是你如何从服务器请求任何数据?当你提到服务器时,你是指APN服务器还是你维护的任何个人服务器?请提供一些示例代码来请求服务器上的任何数据。 - pushpa
我们在讨论一个个人服务器。要请求数据,你需要两个东西:1- iOS NSURLConnection 代码进行下载。搜索一下,代码很丰富。2- 我不熟悉的服务器端逻辑。发布一个新问题,希望某个牛逼的人能够解答。 - Mazyod

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