做IM即时聊天,收到消息会在App的icon上显示小红数字角标,有几条则有几条未读消息, 然后聊天列表里是具体某一个人的未读消息的条数,列表各个条数加起来就是推送的总条数,点开读取某个人的消息则角标是读取了多少条则减掉多少条,这个逻辑貌似没什么问题。 当app未启动的时候,或者是按home键退出到后台kill掉app的情况下仍能收到通知消息,单是此时角标不会递增,遍寻百度和google,仍然无果:
未启动或是被kill掉进程的App,是无法执行到App里的代码进行递增逻辑的,所以只能通过服务器badge字段设置
通过服务器设置,服务端得知道客户端读取了多少条,得上报未读条数,这个时候貌似答案已经很明朗了,就这么干
静默推送是没有消息显示和声音的,据说静默推送是可以有几十秒时间执行后台任务的,但是每次推10条左右(后台循环3秒推一次)就戛然而止了,后来了解到苹果规定1小时之内后台任务的使用次数是有限个位数次的...所以...不知道咋说(可人家微信的消息角标是一直可以递增的)...
可怕的事情发生了,就是当开启飞行模式的时候,把所有的未读消息读取点掉,然后再退出到后台kill掉App,随即后端疯狂推几十条消息, 此刻未读条数并未及时上报,所以这个操作会造成未读条数前后端不一致,用户感知到数据异常的话,就会很反感...卸载App等操作
因为微信已经完美实现了这个功能,不知道他们是如何实现的,所以这就很尴尬了...
期待有网友提供思路,先行感谢
相关分类