Android推送研究概述

来源:互联网 发布:php smarty 编辑:程序博客网 时间:2024/06/01 08:46

手机推送原理:主要为Pull和Push方式,Pull主要为轮询,由手机发起请求耗电耗流量。Push则由SMS和持久连接,而SMS需要向移动运营商付费,成本太高。

手机联网原理:运营商分配给手机的实际上是运营商的内网IP,需要通过NAT(NetworkAddress Translation)进行IP地址转换。如果一个链路有一段时间没有通信时运营商就会删除网关NAT映射表中其对应表。(故而长连接心跳是必须的)

iOS现状:有简单有效的方案APNs,由苹果提供统一服务器维护。

Android现状:Google提供C2DM(GCM),但是中国国内google服务不稳定,只能自己解决。(使用Timer(耗电)或AlarmManager(RTC即RealTime Clock))

近几年现状:出现了很多第三方推送如信鸽推送(不能满足高到达率)、极光推送(沉淀较深,没有偷偷加入权限,后台比较古老,支持兄弟应用互相拉起)、小米推送(基于MIUI系统)、友盟推送(引入其他第三方库,app共享推送)、个推(收费)、阿里推送(强行植入one sdk并且有收费趋势)、百度云推送、云巴等。

手机厂商为了控制后台服务,延长手机待机时间,持续地推出各种限制手段。比如之前的心跳对齐,也就是不允许 App 任意使用 RTC 后台唤醒手机。还有更严厉的手段,就是定时清理所有后台服务,并且不允许服务通过监听广播自动拉起。(第三方推送已死,根基被动摇)

华为、小米有提供官方的推送,OPPO、VIVO、金立则没有。

一种方案:集成多个第三方推送,根据机型来注册不同的推送服务,后端不控制推送的平台。

几个问题:1、android端app的保活问题;2、兼容iOS;3、一台服务器维护长连接的量级;4、消息的平均长度和限制。5、消息的及时性与时延;6、v消息用户都用什么手机?用vivo的话,vivo自己没有推送服务很难搞……

四大主流IM协议:XMPP(最为灵活),IMPP、PRIM、SIP(SIMPLE)。

那么现在主要使用的协议还是XMPP和MQTT两种,对应的官方网站为:https://xmpp.org/和http://mqtt.org/,上面有一些推荐的客户端以及服务器的开源项目,有兴趣的都可以去尝试一下。

原创粉丝点击