介绍
移动推送(Mobile Push)是提供给移动开发者的移动端消息推送服务,通过在App中集成推送功能,进行高效、精准、实时的消息推送。
消息推送示例为什么需要这个?因为当APP被置于后台或者被杀掉以后,程序进程都不在了,无法再对手机系统进行如信息展示,提醒等操作,这个时候如果对用户有提示的需求,需要和手机操作系统配合,进行弹框展示。
原理
上述说到,消息推送中的这些弹框,由于APP程序被杀掉,无法在直接和手机交互,需要手机系统配合,进行展示,这里的手机系统里如何配合呢?手机系统都是由手机厂商提供的,所以这里想要做消息推送,需要和手机厂商提供的服务接口进行交互,示意流程如下图,
示意图根据不同的系统,可以将手机厂商分为三大类 ,
- 苹果:iOS系统,云服务通道,APNs
- 谷歌: Android安卓原生系统,云服务通道 ,FCM
- 其它厂商:随着国内势力的崛起, 以华为,小米等为代表的众多厂商进行的自研系统,其对应有各家不同的云服务通道。
实践
要发什么消息是由业务方决定的,Provider可以完全我们自己实现,但其涉及到和要不同手机厂商的对接,整体会比较麻烦,所以也常会选用专门做消息推送服务的第三方服务,比如国内的友盟,国外的AWS SNS服务。
专门做消息推送第三方服务,通常会提供相应推送数据的监控(送达率等),定时推送功能,控制台工具等,这样对于消息推送场景,同时也可以获得更好的配套。那么Provider可以拆分为我们业务方和选取使用的第三方消息推送服务,如下。
引入第三方消息推送服务第三方推送服务参考
功能方面考虑到:推送预览功能,推送样式丰富,编排能力强。配套方面考虑到:送达率监控,统计,分析等。同时要考虑到支持推送的机型,
基于此,如何选择第三方推送服务,下面梳理给大家做个参考,
国内外,一些推送服务 参考如下:
友盟 | OneSignal | Firebase Cloud Messaging | AWS SNS | |
---|---|---|---|---|
所属国家 | 中国公司 | 美国公司 | 美国公司(Google) | 美国公司(AWS) |
支持平台 | ios,android,华为,小米等 | ios, android, 华为,小米等 | ios, android ,不支持华为 | ios, android, windows phone,华为,小米等 |
优点 | 国内专业做消息推送的公司,专业性强,国内市场份额高 | 美国友盟,专业性强,国外市场份额高 | 比较原始,是android推送的原生平台,安卓友好 | 基础版消息推送服务 |
谁在用 | B站,央视新闻,蕉内等 | bitcoin.com 大众 eatstreet等 | - | - |
特点 | 成熟配套,功能丰富,支持平台多 | 成熟配套,功能丰富,支持平台多 | 功能基础,支持平台少 | 功能比较基础,支持平台多 |
文档 | https://developer.umeng.com/docs | https://documentation.onesignal.com/docs/mobile-sdk-setup | https://firebase.google.com/docs/cloud-messaging | https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-application-as-subscriber.html |
各家一句话小结:
友盟:国内专业做推送服务的,配套成熟,功能丰富,国内用户多。
OneSignal:国外专业做推送服务的,配套成熟,功能丰富,国外用户多。
Firebase Cloud Messaging:Google推出的消息推送服务,配套和功能一般。Android推送的原生平台,对于原生安卓比较友好。
AWS SNS:亚马逊推出的消息推送服务,配套和功能还可以,同时其A2A模式还可以用于服务中间件(参考:【一文搞懂 AWS-SNS 服务】)
最后,我们回过头看下这张图,
假设我们选择了AWS-SNS作为第三方消息推送服务,那么其整体的一个推送方式如下。
消息推送服务-完整示例可以看到第三方消息推送服务的一大作用便是帮我们聚合了多个手机厂商云服务通道,大大减少了我们自己对接的成本。
注意:AWS-SNS作为国外公司 出于某些原因,可能偷了个懒 ,对于国内华为,小米这些手机厂商的云服务通道的对接,没有直接自己对接,而是选择了Baidu push推送服务,Baidu push本质也是个消息推送服务,所以在此处同级。有些推送服务公司则是完全自己对接手机厂商云服务通道。
结语
对于消息推送的内容讲解到此,下一篇,让我们一起看下如何 不依赖手机厂商云服务通道和第三方消息推送服务,基于开源协议,完全自己独立搞个移动端消息推送。
网友评论