移动端推送系统

来源:互联网 发布:车秘软件怎么样 编辑:程序博客网 时间:2024/06/05 17:57

也是综合了网上部分推送系统总结的如下,感谢其他网友的分享

1 自建推送系统

主要针对服务器和ING终端升级和消息推送;服务器主动向手机推送消息的应用。需要Beacon帧数据链路的维护,此链路也可以预留为日志的传输通道。

 

GCM

XMPP

MQTT

HTTP轮循

comet

Websocket

优点

Google提供的服务、原生、简单,无需实现和部署服务端

协议成熟、强大、可扩展性强、有开源的Java版的开发实例androidpn

协议简洁、小巧、可扩展性强、省流量、省电

实现简单、可控性强,部署硬件成本低

实时性好(消息延时小);性能好(能支持大量用户)

互相沟通的Header是很小的-大概只有2 Bytes,带宽效率较高

缺点

该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google

协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高

低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的

实时性差,请求中有大半是无用,浪费带宽和服务器资源

服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护

少部分浏览器不支持,浏览器支持的程度与方式有区别(不属于本文讨论的范畴)

常用的服务器消息推送方式

注:使用GCM服务(Google Cloud Messaging

上表中看出websocket进行消息推送成本相对较小,性价比相对较高;其他方案TCP长连接,客户端主动和服务器建立TCP长连接之后,客户端定期向服务器发送心跳包,有消息的时候,服务器直接通过这个已经建立好的TCP连接通知客户端(微信,Line,WhateApp有采用这种方式)。

TCP属于私有协议,建议采用websocket公有协议。由于长连接的维护很耗费资源,手机端采用每天通过Http去服务器Get一次,ING终端的当前版本信息。

XMPP叫做Serverless Messaging无服务器消息:当选择基于“服务器”的消息模型,存在负载和负载的优点(联系人列表管理,实体发现,存在授权,离线消息等),但如果采用“Serverless”的P2P客户端做这些功能,链路可能会丢失或性能不佳,因为需要客户端自己维护工作上面的工作;通常超过70%的XMPP协议的服务器的数据流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的数据提供给多个收件人,在移动手机推送中并不是最佳选择。WebSocket不是基于Serverless Messaging/P2P模型设计,而是基于通过无状态的HTTP协议实现的推送,简而言之,是替代hacky comet,长轮询,分块编码,jsonp,基于iframe以及其他通过http实现模拟服务器推送的技术。XMPP(P2P模式)比较适合终端较强的算法功能的场景,Websocket模式较为轻量级。

2 第三方推送系统

端外推送我们必须依赖第三方的推送平台,在iOS上我们只用使用APNs就行了。而在Android上,跟APNS对应的服务是谷歌的GCM(Google Cloud Messaging),但很可惜它在国内的可用性不高(主要原因是手机厂商对Android系统的定制化,可能会将GCM服务裁减掉,以及国内运营商的一些限制)。如果我们做的是一个海外的应用,那么端外推送基本只用考虑GCM就可以了。

推送平台大体可以分为三大类:

A类:专业的第三方推送:友盟推送、个推、极光推送

B类:大手机厂商的推送:小米推送、华为推送,OPPO,魅族。

C类:BAT大厂平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送。

针对A类专业的第三方推送:最近主流的 Android手机都会清理后台服务,禁止服务自动拉起,以前第三方推送服务商的各种 SDK保活手段相继失效,这个问题从根本上动摇了 Android第三方推送服务的基础,导致几乎所有的 Android第三方推送服务都不能保证送达。所以极光推送,友盟推送等可靠性在第三方手机上很难保证。A类第三方推送优势:有“保活”和“互拉”的能力。举个例子,假设你接入了友盟,而恰好今日头条也接入了友盟。有一天你的App被杀死了,但是今日头条的装机量估计比你的要大啊,这时用户启动了今日头条,那么推送系统也就会通过共享的推送通道顺便把你推送消息送达到手机上,然后还可能把你的进程也唤醒(被“保活”了),所以,风险性不可控。

针对B类手机厂商的推送,他们的推送服务在他们自己生产的手机上属于系统级别的服务,理论上来说,手机系统对他们自家的推送限制最小。比如,在小米手机上,不在系统自启动名单里的App,在手机重启后,App声明的后台Service并不会自动运行。但是,小米推送作为手机系统级服务,仍然是可以收到推送的。但华为手机上:正对不同的Emui系统的Push广播有不同程度的限制,华为推送自己也不太完全能搞得定的。

针对CBAT大厂优势:各家的“全家桶”采用的“保活”阵营和推送通道,跟他们开放出来的是两码事。比如,用腾讯信鸽推送,不一定能占上微信的光。腾讯新闻使用的小米推送,它没有使用自己家的信鸽推送;淘宝使用的是小米推送(Google Play上的版本应该应该是 GCM)。百度视频和爱奇艺使用的是小米推送,没有用自家的百度推送。

结论:Android通常需要同时集成多家推送平台:“端内+端外”推送。但由于App进程由于被清理或者其它原因,这时只能走某个第三方端外推送平台。



0 0
原创粉丝点击