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

基本概念

先来看与消息送达相关的几个基本概念:iOS 目标用户数:匹配推送条件的 iOS 用户的数量。

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

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

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

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

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

送达率的伪命题

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

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

针对用户的在线和离线情况,了解了一个消息的推送可能后,再来看“送达率”:在线送达率=在线用户中成功接收的数量/在线用户数

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

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

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

送达数预期

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

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

结论

“在线用户数” 才是可以用来衡量推送成功数的值。 “消息送达 ➗ 目标总数”并不是真正的送达率,这个

比率没有太多的参考意义。真正的送达率其实是一个比较稳定的值。

转自极光的公共号,摘自极光产品总监吕鑫

服务器每条消息都回复,如何理解PUSH消息送达成功率相关推荐

  1. iphone push消息的原理

    第一部分:Push原理 (以下绝大多数内容参考自.图片来自iPhone OS Reference Library) 机制简介 Push的工作机制可以简单的概括为下图 图中, Provider是指某个i ...

  2. 深入理解分布式消息队列

    一.消息队列的演进 分布式消息队列中间件是是大型分布式系统中常见的中间件.消息队列主要解决应用耦合.异步消息.流量削锋等问题,具有高性能.高可用.可伸缩和最终一致性等特点.消息队列已经逐渐成为企业应用 ...

  3. 公众号接收普通消息并回复

    洛塔服务号回复003获取代码. 功能说明 涉及官方文档的两个知识点:接受普通消息.被动回复用户消息.希望实现的效果是公众号中用户发送什么就直接回复什么,但是有个类型不同意,所以做了调整 接收文字:原样 ...

  4. 微信开发中消息回复的代码_消息中的消息

    微信开发中消息回复的代码 Ste·ga·no·graph·y / stegəˈnägrəfi / (noun): the practice of concealing messages or info ...

  5. 理解HTTP消息头【很完整,例子也很丰富】

    (一)初识HTTP消息头 但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头. 做过Socket编程的人都知道,当我 ...

  6. 《转》理解HTTP消息头

    转自:http://blog.163.com/cshzxing@126/blog/static/37732930200833010340991/ (一)初识HTTP消息头 但凡搞WEB开发的人都离不开 ...

  7. 微信公众号生成文本到服务器,使用Golang开发微信公众平台-接收文本消息

    一旦接入验证成功,成为正式开发者,你可能会迫不及待地想通过手机微信发送一条"Hello, Wechat"到你的公众号服务器.不过上一篇的那个程序还无法处理手机提交的文本消息,本篇将 ...

  8. 消息队列 MQ 入门理解

    转载于阿里官方文档,把一些基础部分提炼整理了一下 功能特性: 应用场景: 消息队列 MQ 可应用于如下几个场景: 分布式事务 在传统的事务处理中,多个系统之间的交互耦合到一个事务中,响应时间长,影响系 ...

  9. 消息队列实践一之RabbitMQ消息推送(解决服务器错误:Whoops! Lost connection to ws://localhost:15674/ws)

    一.写在前面的问题和解决办法 1.问题背景: RabbitMQ,用websock推送消息失败 2.问题描述: 服务器错误:Whoops! Lost connection to ws://localho ...

最新文章

  1. 应用PlanAhead进行I/O规划
  2. python笔记:正则表达式
  3. 采用MiniProfiler监控EF与.NET MVC项目
  4. 活动目录操作主机(FSMO)角色详解
  5. 译:理解 Win32 OutputDebugString
  6. 人机协作机器人发展趋势_人工智能非万能!智能安防机器人下一站:人机协作...
  7. 信号检测与估计理论pdf
  8. 十字链表实现稀疏矩阵,包含十二大功能
  9. 原生JS和NodeJS之间的区别
  10. 实验 VoIP通信的配置
  11. [Matlab有限元分析] 1.有限元分析的发展、基本概念和特点
  12. sipp工具的使用--简单的呼叫测试
  13. Smali语言基础语法
  14. python列表的事例_python列表使用实例
  15. 短视频运营的目标:引流并转化客户
  16. Codeforces Round #467 (Div. 2) D. Sleepy Game
  17. A002-186-2639-高艳萍
  18. ETL为什么经常变成ELT甚至LET?
  19. 年薪80W的大数据开发【1024G全套资源】都在这儿!
  20. 微信运动的刷步思路+云部署

热门文章

  1. 自学笔记 - 购物篮关联分析-两两相关
  2. 我的“技术架构”之旅
  3. High Availability--keepalived详解篇(三)之keepalive配置实例-http
  4. 【java版坦克大战---准备篇】 java 绘图
  5. C++笔记(1):使用STL中sort()对struct排序
  6. 乔布斯在斯丹佛毕业典礼上的讲话(二)
  7. 7-1 目录7-2 什么是主从复制
  8. linux shadow文件如何拷贝,Linux如何查找shadow文件进入?这样几步轻松搞定!
  9. Java多线程详解(线程不安全案例)
  10. 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟