Android 消息推送框架详解

消息推送的概念

消息推送,是指绕过手机运营商,通过TCP/IP网络传输的方式,向应用程序发送数据,这些数据包括简单的文本,图片,或者其他多媒体数据。

与手机运营商发送短信的方式相比,消息推送普及性和可靠性更差。

这里写图片描述

消息推送框架


根据不同网络协议的特性,消息推送框架分为两种:

  • 实时推送
  • 不实时推送

2.1 不实时推送的方案

依赖的网络服务:应用层HTTP 协议和传输层TCP协议

实现方案:在App启动页创建异步线程(或者起一个后台线程)向服务端发出请求,服务端发出响应,从而完成向App推送信息的功能。
优点:不需要建立持久的网络连接,不依赖APP是否启动,是否存活在系统中

缺点:只能在App存活并且TCP持续连接的情况下,才能完成向用户发出推送信息的功能;在TCP连接断开之后,必须依赖重复得向服务端发送请求,以便接收最新数据,耗费用户流量,耗费手机电池,部分Android设备会发烫。

2.2 实时推送方案

依赖的网络协议:支持实时通讯的 XMPP协议或MQTT协议

实现一:MQTT
采用MQTT协议实现Android推送功能也是一种解决方案。MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。
wmqtt.jar 是IBM提供的MQTT协议的实现。我们可以从Android端消息推送框架载该项目的 Android实例代码,并且可以找到一个采用PHP书写的服务器端实现

实现二:XMPP

Androidpn 这里有包含Android客户端和服务器端的所有代码
这种方案有一些问题值得注意:
1. 比如时间过长时,就再也收不到推送的信息了。
2. 性能上也不够稳定。
3. 如果将消息从服务器上推送出去,就不再管理了,不管消息是否成功到达 客户端手机上。

如果我们要使用androidpn,则还需要做大量的工作,需要理解XMPP协 议、理解Androidpn的实现机制,需要调试内部存在的BUG

成熟的消息推送方案

根据消息推送框架提供者不同,市面上有两种成熟的推送方案

  • 手机厂商:小米推送,华为推送等
  • 第三方推送:友盟推送,极光推送,信鸽推送等

关于第三方推送的选择,我认为不必多虑,因为第三方推送服务都大同小异,比如一款功能,友盟、信鸽推出后,很快其它推送服务商就支持了,所以开发者并不需要担心哪一家推送功能比较强。

对于特定渠道,可以考虑手机厂商提供的推送方式

  • 优点:手机占有率高,信息到达率高,免费,相比发送短信的方式更为实惠
  • 缺点:信息展示格式固定,简单,不能自定义,且不能做后续事件,比如调起APP页面

最终的消息推送框架总结

建议使用第三方推送+ROM产商推送的实现方式

首先推送领域有一个比较火的概念:“共享推送通道进行APP唤醒”,谈到APP唤醒,很多人以为代码设置后台存活即可,其实不然,系统为正在运行或者后台运行的APP分配内存,在系统运行时内存不足,系统会随机杀死后台占用内存的APP,(也可能杀死用户当前使用的APP),APP已经挂掉了,那推送就没有意义了。

APP唤醒简单的说,就是所有安装了A推送的App,只要有一个还活着,就可以把其它安装了A推送的App拉起来,从而提高推送的到达率。有些阿里系、百度系的App,被大家称作『全家桶』,实际上就是因为这个原因,

其次推送服务商都会提供数据分析服务,比如日活,月活,APP下载量,卸载率,页面浏览时间,以及BUG日志反馈等,很多服务都是免费的。

所以最后,我的建议方案是:制作的消息推送SDK 包含任意一款第三方推送+小米推送+华为推送

说明:在APP启动的时候,判断当前系统,如果是小米系统,则使用小米推送,如果是华为手机,则使用华为推送,如果是其他Android设备,则使用第三方推送,当然,直接集成第三方推送SDK也未尝不可。

资料总结

如果是想自行搭建消息推送客户端,服务端可以参考这里:

  1. 方案一 Android端消息推送框架采用PHP书写的服务器端实现
  2. 方案二 Androidpn

如果想快速集成消息推送,可以考虑文末总结的方案:

在项目的业务模块中新增消息推送模块,集成任意一款第三方推送+华为推送+小米推送

转载请附上原文链接 http://blog.csdn.net/chivalrousman/article/details/52873135

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值