本篇主要为大家揭秘推送消息是如何传输的,如何到达用户设备上的,在不同的设备上会如何展示。

在上一篇文章中,我们可以知道在建立推送任务的过程中,需要考虑带有自滤功能的用户池构建、筛选有效用户、设置推送内容、推送时间、着陆页的设置及相关用途等信息。如果还不清楚的童鞋可以回顾上一篇文章:推送系统从0到1(三):推送任务的建立 。

本篇主要为大家揭秘推送消息是如何传输的,如何到达用户设备上的,在不同的设备上会如何展示。所以首先会为大家讲解在建立推送任务之后,消息是如何传输的。

从服务端到推送服务平台

推送任务建立之后,服务端按照约定推送时间,把所设置的推送内容按照设备号查询对应的token,并发送给对应的推送平台。

值得注意的是:如果同时接入多个推送平台则需要针对设备号标记,这个设备需要采用哪个平台的token进行推送。Token是对于推送服务平台来说是用户的唯一标识,不同推送服务之间的token均不相同。也是因为如此,才建议大家使用设备号作为我们对用户的标识。

推送服务通过长连接下发

如同想要给别人打电话,首先要做的事情就是拨通号码,而推送同样的首先需要推送服务与客户端建立长连接。只有接通之后,才能把通知消息传送给客户端。

在第二篇文章中,已经有讲到我们需要选择推送服务,推送服务将会尝试与客户端建立长连接,只有成功建立长连接的设备可以进行下一步。此时无法建立长连接的设备可能由于Token变更、推送服务无法唤起等其他异常情况导致无法与客户端建立长连接。

无法建立长连接的设备将无法进行推送,此时可以把该部分用户从推送队列中筛出来,并进行标记。防止推送队列在执行过程中,因为部分设备无法建立连接的原因,导致推送任务的中止。

同时被标记出来的用户,可以引入“重发机制”,关于“重发机制”的内容将会在下一篇“推送过程中丢失的消息”详细讲述。当设备多次无法建立长连接时,该设备处于暂时失效状态,即可进入黑名单。

在完成长连接的建立后,可执行消息的下发,第三方的推送服务使用自身的服务通道进行传输,而谷歌推送服务则会使用fcm/gcm通道进行传输。对于苹果手机来说,第三方服务均承担转发的任务,最后把消息传输给APNS,由APNS完成消息传输的任务。当然也可以直接由自己的服务端把消息传给APNS,不通过第三方平台,只不过使用第三方平台转发可以减少服务器开销。

消息送达和路由

对于苹果推送来说,APNS执行消息推送后,此时消息到达苹果手机上,由苹果系统执行消息的送到和路由展示。

对于Android系统来说,消息的到达和路由展示更为开放,可以使用自定义的消息处理方式,自主的选择消息收到之后是否路由展示,并可以展示成自定义的通知样式。

所以凭借Android系统开放性的消息处理方式,可以在消息发送的预测试、消息重发机制等方式,灵活巧妙的弥补消息的无效发送和消息丢失问题。关于这些弥补方案将会在下一篇详细讲述。

推送消息的展示

为什么要关注消息的展示方式?

因为消息的展示是吸引用户点击最重要的因素,用户通过浏览通知消息决定是否点开浏览,所以消息的展示至为重要。除了消息的内容以外,消息能否正常展示,展示成何种样式,能否在众多通知消息中脱颖而出,成为了争夺点击的重要关键点,以下会从针对不同系统的消息的展示方式进行讲解。

Android系统

Android系统从1.X到8.X通知栏进行了非常大的变化和改版,由于Android系统对个性化开放的追求,不仅部分Android手机拥有个性化的通知栏(如:国产机)以外,谷歌也在持续对通知栏进行调整和优化,提供更多的个性化支持,并提供自定义通知消息。

下面简单介绍几种标准Android系统的通知展示:

Android 5.x系统:引入Material Design的设计风格,通知栏主要为白色背景、暗色字体,并可通过状态栏的悬浮窗口展示通知消息。

Android 6.X系统:允许用户控制应用通知的优先级并且加入免打扰模式。

Android 7.X系统:通知栏全面改版,左上角小图标、app名称、副标题、数量和时间在第一列、第二列为主标题、第三列为内容,并且支持直接回复。更为重要的是支持通知消息组,通知消息达到一定数量(好像是4条以上)会合并成消息组展示。

Android 8.X系统:引入通知渠道的概念,即可以把推送类型分成多个渠道进行推送,用户可自主选择开启或关闭其中的一个或全部渠道。增加通知标志,用户可以通过长按应用图标来浏览通知消息,还提供自定义通知的背景颜色等个性化功能。

图片来自Xing’s Blog,如有侵权请联系本人立即删除

IOS 系统

IOS 10系统:支持富文本通知展示,如:图片、GIF、视频等;通知调整为圆角卡片式展示,3D touch可以展示通知详情等。

IOS 11系统:合并锁屏和通知中心。默认显示新通知,上滑显示所有未处理的通知,锁定屏幕时,将所有未处理的通知移入「历史通知」列表。

IOS 12系统:新增通知分组功能,增加安静通知功能,强化勿扰模式。

谷歌浏览器

PC端:windows机器和mac机器的chrome浏览器均可以支持单条消息推送,windows机器的chrome浏览器还可以支持多条消息合并推送。

手机端:Android手机chrome浏览器支持类似于APP的通知推送,谷歌推出pwa技术可以让手机端浏览器推送效果更像原生APP。

通过对比可以发现:不同系统设备关于推送通知的展示会有所不同,即使用个系统不同版本之间也纯在差异。切勿以偏概全,不考虑设备端的差异就只管发送。也许部分用户都无法看全推送通知内容,点击率自然上不去。

所以在进行客户端差异化展示的设计中,可以遵循以下方式:

根据应用/网站主流用户的设备情况,选择主要处理的几个系统;

根据系统的不同版本之间的特性进行单独处理;

若是批量发送,需要考虑标题、内容长度能否在不同系统之间兼容;

测试各系统设备的展示效果,力求效果最优。

同时需要注意到部分系统的特性,例如:Android7.x以上系统,当收到超过一定数量推送消息后,消息将会合并成消息组。这样既不利于通知消息的曝光,也不利于用户的点击。所以在短时间内的推送数量所需要考虑的。

又如:IOS系统的推送通知本身没有明显的标题和内容区分,但是按照用户的浏览习惯,若有明显标题展示点击意愿更为强烈(可自行测试),此时可把内容的第一行作为IOS通知的标题并加粗。

同时IOS10以上系统支持3Dtouch查看,通知详情则可以附加一些富文本内容增加吸引力。

本篇总结

本篇文章主要介绍了从推送任务建立之后,推送消息是如何到达用户的设备上,并且会展示成什么样式,那么归纳起来有以下四点:

推送消息首先会由服务端根据token发送给推送服务;

推送服务通过长连接把通知消息下发给设备;

设备把推送消息路由且显示出来;

推送消息的展示会根据设备和系统有所差异,需要有针对性的设计。

通过本篇介绍已经了解到消息是如何传达用户设备的,但是你知道消息在传递过程中会遇到什么艰难险阻,消息在推送过程中是如何丢失的,为什么推送到达率和点击率不高?

带着这些疑问,敬请期待下一篇:推送系统从0到1(五):推送消息如何丢失的

相关阅读

本文由 @番茄那只羊 原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自Pexels,基于CC0协议

给作者打赏,鼓励TA抓紧创作!赞赏

6人打赏

android推送如何推送不在线设备,推送系统从0到1(四):消息如何到达用户设备...相关推荐

  1. 基于 Flink 的超大规模在线实时反欺诈系统的建设与实践

    在大数据时代,金融科技公司通常借助消费数据来综合评估用户的信用和还款能力.这个过程中,某些中介机构会搜集大量的号并进行"养号"工作,即在一年周期里让这些号形成正常的消费.通讯记录, ...

  2. 基于Flink的超大规模在线实时反欺诈系统的建设与实践

    作者:关贺宇 在大数据时代,金融科技公司通常借助消费数据来综合评估用户的信用和还款能力.这个过程中,某些中介机构会搜集大量的号并进行"养号"工作,即在一年周期里让这些号形成正常的消 ...

  3. Android系统8.0及以上开启Service必须创建显示“XX应用正在运行”通知问题处理

    背景: Android系统8.0及以上,开启Service必须使用startForegroundService(Intent intent)方法,对应的Service则必须设置startForegro ...

  4. Android平台屏幕/摄像头或外部数据采集及RTMP推送接口设计描述

    好多开发者提到,为什么大牛直播SDK的Android平台RTMP推送接口怎么这么多?不像一些开源或者商业RTMP推送一样,就几个接口,简单明了. 不解释,以Android平台RTMP推送模块常用接口, ...

  5. Android开发笔记(五十二)通知推送Notification

    PendingIntent 准备工作复习一下PendingIntent,前面的博文< Android开发笔记(五十)定时器AlarmManager>已经提到了它.PendingIntent ...

  6. android 统一推送平台,工信部实验室成立安卓统一推送联盟:推送服务将实现统一...

    据微信公众号" 泰尔终端实验室"7月19日消息,移动互联网时代,消息推送是移动应用(APP)的一项重要功能,目前中国安卓系统生态环境尚不成熟,设备碎片化现象严重,导致不同应用与操作 ...

  7. Android 高仿微信实时聊天 基于百度云推送

    一直在仿微信界面,今天终于有幸利用百度云推送仿一仿微信聊天了~~~ 首先特别感谢:weidi1989分享的Android之基于百度云推送IM ,大家可以直接下载:省了很多事哈,本例中也使用了weidi ...

  8. Android消息推送:手把手教你集成小米推送

    <script type="text/javascript" src="http://static.blog.csdn.net/scripts/category.j ...

  9. Android开发之推送服务(三) 集成Oppo和vivo推送

    Oppo推送服务,也是在Oppo手机中使用的比较多.而且现在Oppo和Vivo两款手机最早提出美颜功能,所以这两款手机在市场上的占有率还是比较高的. Oppo推送目前已经开发注册,Vivo目前只对部分 ...

最新文章

  1. vfp中,函数subs(计算机管理信息系统,7)返回的结果是,VFP选择题库(可发学生).xls...
  2. 易企cms文章引用地址写法
  3. Windows程序员如何转向Linux开发应用?
  4. [js] js循环中调用异步的方法,如何确保执行结果的顺序是正确的?
  5. mysql命令书写顺序_MySQL SQL语句书写顺序和执行顺序
  6. 网络规划设计师考试说明
  7. python-类的基本知识
  8. Spring mvc @PathVaribale
  9. .Net RabbitMQ之消息通信 构建RPC服务器
  10. 只需简单的整理,让你的Mac 更安全、更智能
  11. iOS UITextField设置起始字符开始位置
  12. VB的阶乘和伽马函数
  13. 信息 | 美国留学之计算机专业【转】
  14. Java版本JFrame,计算器和单位换算的实现
  15. 无线通信学习之——OFDM
  16. [Warning] anonymous type with no linkage used to declare variable with linkage
  17. 【已解决】Https请求报错:unable to find valid certification path to requested target
  18. cindy POSA2读书笔记(二)
  19. 微擎框架之$_W全局变量
  20. 人工智能 漆桂林_人工智能音乐

热门文章

  1. 为什么维护工作让数据中心工作人员夜不能寐?
  2. 区域链结构对于数据中心有什么影响?这个影响是好是坏呢!
  3. 指针变量和引用变量的区别_指针Ⅰ--变量的定义
  4. ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)
  5. DL之DCGAN:基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成
  6. Interview:算法岗位面试—10.31下午上海某银行总部公司(二面,四大行之一)之项目简介、比赛介绍、某个比赛的过程
  7. 成功解决WARNING: You do not appear to have an NVIDIA GPU supported by the 430.34 NVIDIA Linux graph
  8. hyperopt中文文档:Installation-Notes安装说明
  9. 未完全关闭数据库导致ORA-01012: not logged的解决
  10. jenkins配置小结