iOS APNS远程推送,App被kill掉之后离线状态下如何控制角标?

发布于 2022-09-07 23:18:59 字数 774 浏览 24 评论 0

问题描述

做IM即时聊天,收到消息会在App的icon上显示小红数字角标,有几条则有几条未读消息, 然后聊天列表里是具体某一个人的未读消息的条数,列表各个条数加起来就是推送的总条数,点开读取某个人的消息则角标是读取了多少条则减掉多少条,这个逻辑貌似没什么问题。 当app未启动的时候,或者是按home键退出到后台kill掉app的情况下仍能收到通知消息,单是此时角标不会递增,遍寻百度和google,仍然无果:

问题出现的环境背景及自己尝试过哪些方法

  1. 未启动或是被kill掉进程的App,是无法执行到App里的代码进行递增逻辑的,所以只能通过服务器badge字段设置
  2. 通过服务器设置,服务端得知道客户端读取了多少条,得上报未读条数,这个时候貌似答案已经很明朗了,就这么干
  3. 静默推送是没有消息显示和声音的,据说静默推送是可以有几十秒时间执行后台任务的,但是每次推10条左右(后台循环3秒推一次)就戛然而止了,后来了解到苹果规定1小时之内后台任务的使用次数是有限个位数次的...所以...不知道咋说(可人家微信的消息角标是一直可以递增的)...

可怕的事情发生了,就是当开启飞行模式的时候,把所有的未读消息读取点掉,然后再退出到后台kill掉App,随即后端疯狂推几十条消息, 此刻未读条数并未及时上报,所以这个操作会造成未读条数前后端不一致,用户感知到数据异常的话,就会很反感...卸载App等操作

因为微信已经完美实现了这个功能,不知道他们是如何实现的,所以这就很尴尬了...

你期待的结果是什么?实际看到的错误信息又是什么?

期待有网友提供思路,先行感谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吹泡泡o 2022-09-14 23:18:59

首先你的第一步就错了。具体的消息未读数不是在手机端进行统计计算的,而是由后台统计好传递给手机端的。当有新的消息出现的时候就给APP发推送并传递新的角标值。这样做的好处就在于,无论APP是否存在于后台、是否被Kill掉,APP都能收到相应的推送通知并且改变角标。这也是APNS的一大优势。
接下来,当用户进入APP之后,先拿到后台传递过来的角标值并保存在APP的沙盒中的plist文件,如果用户点击了未读消息,那么就将plist文件中的角标数减一,并且上报给后台。当用户手动杀死APP或者APP进入后台的时候,再将plist文件中保存的角标数设置为当前的角标数。

iOS开发者新秀,此上是我的操作办法,仅供参考。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文