如何正确理解推送消息送到成功率?
发布于 2 个月前 作者 halleywang 264 次浏览 来自 分享

初接触极光推送的使用者,为了衡量消息推送的质量。经常会纠结到消息的"送达率"这个概念.那么究竟什么是送达率呢?或者如何正确理解消息的送达情况呢?

基本概念

先来看与消息送达相关的几个基本概念:

iOS 目标用户数:匹配推送条件的 iOS 用户的数量。

iOS 推送成功数:推送到 APNS 并被 APNS 成功接收的数量。如果 device token 变更,过期或者与推送环境不匹配则不会成功。

Android 目标用户数:匹配推送的条件的Android 用户数(1个月内与服务器有过连接的用户。如果超过1个月都没有与 JPush server 产生任何连接,那么将不向此用户推送)。

Android 在线推送数:消息推送时,目标用户在线,通过在线下发的消息数。Android 用户长连接在线会通过在线下发,其余用户通恢复网络后触发缓存的离线消息。

Android 送达数:消息送达到客户端,并且服务端确认收到了客户端的应答的数量。

点击数:本次推送被用户点击的次数。

送达率的伪命题 jpush1.png   如图所示,最外圈的 Total 代表全部的注册用户,即应用创建依赖所有的注册用户数。接下来是目标用户(target)所有的消息推送都会有一个目标用户,这个目标用户是指符合条件的用户,系统会根据推送条件匹配出推送的目标用户。即使作为目标用户也可能包括已经卸载了,或者以后根本不联网的用户,因为JPush 系统是无法获取这些状态的。

每一次消息推送都会有一个送达数,当一次消息推送产生的时候,目标用户中会有一些当时在线和一些不在线的。系统会根据用户的状态立即向在线的用户进行推送,当时不在线的用户系统会为其保存离线消息,消息有效期之内用户恢复网络后,系统会将离线消息发送到用户客户端。

针对用户的在线和离线情况,了解了一个消息的推送可能后,再来看“送达率”:

在线送达率=在线用户中成功接收的数量/在线用户数

离线送达率 = 离线消息送达数/离线消息下下发数。

只有这个送达率才是真正的送达率,至于有一部分用户虽然是目标用户,但是推送后一直离线或者已经卸载了应用,系统是不可能把消息发送给他们的。所以如果计算送达率的时候把这部分用户计算上显然无法说明什么,而且这部分用户随着一个应用的时间越来越长,数值可能会越来越大。

如果是广播推送,目标用户数比较多,这个真正的送达比率基本上是固定在98%左右。为什么这么说,因为可以影响真是送达率的原因主要是用户网络联通的稳定性,可能发送的时候用户状态还是在线,当消息发送的时候用户已经处于离线状态了,这部分用户就需要恢复连接的时候接收离线消息了。

送达数预期

作为一个极光推送的使用者,通过什么数值衡量消息的推送情况呢? 在线用户数,没错就是在线用户数。因为一条消息,从产生的那一个时刻一直到消息有效期超期,在这段期间在线或者登录过的用户才会收到消息。例:一般一条广播消息的默认有效期为24小时,那么这条消息推送最终的送达数量应该略小于当天的天在线用户数,为什么小于是因为有一部分在线用户数是消息推送后才注册的新用户,这部分用户是不会收到之前的消息的。

稍后极光推送会开放每条消息发送时的在线推送数统计。

结论

“在线用户数” 才是可以用来衡量推送成功数的值。 “消息送达 / 目标总数”并不是真正的送达率,这个比率没有太多的参考意义。真正的送达率其实是一个比较稳定的值。

作者:极光推送产品总监 吕鑫

回到顶部