默认
发表评论 15
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
看起来你对ios的推送技术本身好像还不是特别了解,你可以把这篇顺便也读一读《了解iOS消息推送一文就够:史上最全iOS Push技术详解》。

好了,下面我来说说我的思路。

iOS的APP上的未读数角标,最常用的是两种设置方法:

  • 1)收到服务端后端推送(这个最常见)后,系统自动设置;
  • 2)进入APP后的程序内设置。

基本上,第一种方法(也就是你帖子内讨论的思路)如果要想保证这个数字的准确性,服务端的逻辑会非常复杂,而且还不一定能保证准确,原因是:

  • 1)现在移动端都是直接拉取本缓存本地消息的,至于用户真的有没有读,服务端其实是不知道的,要按你的思路,那app每读一次就要提交一次服务端(告之服务端已读);
  • 2)加上现在多端同步逻辑,这个已读未读就更复杂了。

综上:为了保证这个数字的准确性,服务端来做不合适。

回归到事情的本质:
这个未读数角标的目的就是为了告诉你,有未读消息,至于是5条、还是6条或者跟真实的数字差那么几条,很重要吗?(比如:你天天用微信,你有注意过真的是一致的吗?)。

其实,微信上的这个未读数,一样不准确:
比如我在回复你之前,刚图标上显示的未读是6,实际点开app后,里面的未读数是4(app内的未读是最准确的)。

所以,主流的实现方法,其本上是:

  • 1)服务端可以推送通知,但没有必要完全让服务端来保证这个准确性(也不太容易办到);
  • 2)服务端推送的数字不太准确也没关系,进入APP后,主动在APP内用真实的未读数来设置一下(即修正一遍,微信、qq也都是这样,你自已观察一下。另外,我的RainbowChat产品中也是这样处理的)。

以上就是我的思路和建议,不知你是否理解。
评论 15
引用:Kevin_WuZLu 发表于 2019-02-25 14:48
我以前就是用你提到的第二种方法,进入App后程序内设置。但是产品要求要把这个数字做成准确的,所有才考 ...

其实微信的也不准确,不信你可以多开几个端,比如pc端+手机端+web端都开,反复用,很容易就碰到不一致的情况。

这是你产品经理故意难为你吧。稍微有点技术常识的都不至于非得要程序员这么干,明明可以讲清楚的
引用:大年初一 发表于 2019-04-29 20:51
iOS 推送不靠谱,经常丢,特别是频繁推送的时候,也就是说就算服务器实时推未读消息数,也没法保证旗标准确 ...

你踩过坑吧。。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部