为了账号安全,请及时绑定邮箱和手机立即绑定

很好奇QQ的实现方式是怎样的。大家有什么思路吗?

很好奇QQ的实现方式是怎样的。大家有什么思路吗?

iOS
慕莱坞森 2023-04-14 18:14:49
当QQ关闭时,如果有新的消息进来,app上的badge显示数目会递增。比如原来是2,新来了两条,就变成了4.我了解到的APNS推送逻辑里,是在payload中定义应用的badge显示条数,如下将显示2:$body = array("aps" => array("alert" => '哈哈,能推送过来咯!',"badge" =>2,"sound"=>'default'));似乎没有递增的方式。如果要利用程序本地的代码的话,则必须是用户打开应用的状态下,那个时候会有- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo被调用,但必须是应用打开状态。
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

之前我做的推送,也是这样,在服务器端有一个消息队列,每次把队列长度作为badge的数字发送到手机端
我非常不建议做成数字递增,因为这样你就没有机会重置数字,一旦服务端和手机端出现不同步的现象,这个数字就永远是错的

查看完整回答
反对 回复 2023-04-18
?
喵喔喔

TA贡献1735条经验 获得超5个赞

一句话:Badge的数值是由服务器控制的。所以只有一个问题,就是怎么保证客户端显示的数值就是当前未读条目的计数。这就需要客户端和服务器交流沟通了,也就是同步。

客户端运行时,每看一条未读信息,都给服务器发剩余的未读数,服务器自行更新计数,好方便下次推送时决定Badge的数值。

客户端关闭时,服务器收到给此用户的新消息,未读计数自然+1,再发通知过去。


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信