Skip to content

android 消息推送

cheyiliu edited this page Oct 29, 2014 · 2 revisions

mqtt + activeMq

---方案--- apache activeMQ + mqtt client(eclipse paho)

---Main API--- MqttAsyncClient/MqttClient connect 建立链接 disconnect 断开链接 subscribe 订阅主题 unsubscribe 取消订阅 publish 发布消息

---注意事项--- 1.实现上建议一个android设备上仅有一个链接和服务器保持长链接,以节省资源。 2.既然是长链接,就尽量减少频繁的链接断开操作,一般的设计应该是链接,监听是否异常断开,若断开了则重新链接。 3.基于上面第2点,写demo测试api时,发现链接成功后,调用disconnect再立即调用connect,会导致失败,原因在于disconnect是仅仅发起一个断开请求,真正的断开操作要等相关操作完成之后才行。 相见api描述。测试中还发现disconnect 和再次connect成功之间的间隔和setKeepAliveInterval的时间长短有正比的关系。 4.建议在android端采用service实现。 5.由于android仅有一个长链接。那么这个长链接对应的servce的角色应该是一个分发器的概念。比如有的信息是仅针对DVB的节目单更新的,则分发器收到消息后,根据消息协议分发出去。 6.剩下的主要工作就是针对业务商量出对应的协议规则和实现。

---测试工程说明--- android-mqtt-paho-publish-subscribe-master - 一个java测试程序,同时有发布订阅功能 AndroidPushNotificationsDemo-master / android-mqtt-push-master - android demo,有较好的service实现 mqtt-api-test - android异步客户端api测试 org.eclipse.paho.client.mqttv3 - 客户端源码及接口说明

xmpp + openfire

xmpp协议的客户端实现库有开源 的(http://download.igniterealtime.org/smack/smack_4_0_4.tar.gz 但在 android上不兼容,需要用到asmack库(基于smack的修改版, 兼容android)) xmpp客户端的实现需要用到的库 http://code.google.com/p/asmack/

具体API用法: http://developer.samsung.com/android/technical-docs/Building-a-Chat-Application

相关链接: http://topmanopensource.iteye.com/category/64327 http://developer.samsung.com/android/technical-docs/Building-a-Chat-Application https://community.igniterealtime.org/thread/38850 https://igniterealtime.org/downloads/index.jsp http://download.igniterealtime.org/smack/smack_4_0_4.tar.gz http://android-zhang.iteye.com/blog/1836312

Clone this wiki locally