background image

2、由于服务器不保存消息,造成了如果客户端当前离线就收不到消息。

3、androidpn 发送完消息就不管了,所以没有消息回执报表之类,造成没法做应用后续

的数据分析用户体验的改善,这对于企业级的应用是个致命伤。

XMPP 协议比较费电费流量,

这个对当前智能机的消耗太大,在窄带网络和不稳定的(手

机)网络都不是最优的选择。但总体来说,XMPP 协议还是比较成熟的。

方案三、采用 MQTT

MQTT

MQTT

MQTT 协议

MQTT 是个轻量级的、基于代理的“发布/订阅”模式的消息传输协议。示例代码可以从

https://github.com/tokudu/AndroidPushNotificationsDemo 下载。MQTT 的架构如下:

wmqtt.jar 是 IBM 提供的 MQTT 协议的实现。你可以从如下站点下载它。你可以将该

jar 包加入你自己的 Android 应用程序中。

Really Small Message Broker (RSMB) ,他是一个简单的 MQTT 代理,同样由 IBM 提

供。缺省打开 1883 端口,应用程序当中,它负责接收来自服务器的消息并将其转发给指定
的移动设备。

MQTT 协议也有自己的缺点:
协议复杂,部署成本比较高,还不够成熟。

方案四、采用第三方服务
目前有不少第三方提供了类似服务,客户端只需要嵌入第三方提供的 lib 库,由第三方

建立长连接,负责消息的接收/发送。同时对于消息都有比较详细的报表数据,可以用于做
数据分析挖掘和用户体验的改善。目前比较成熟的有: parse、pubnub、蝴蝶、个推等。国
外的 parse、pubnub 做的很不错,基本版也是免费的,但是国外的服务在国内经常访问不了。
国内蝴蝶做的比较早,以前和机锋网合作过推送,但现在不做了。个推的接入比较简单,新
浪微博 android 上的推送也是他们做的,但和 parse 比起来用户体验上还有待提升。

方案五、自己搭建推送系统
根据需要搭建推送系统。需要考虑开发成本、部署成本,用户数以及系统承载能力等等,

比较复杂。