GCM 服务的步骤 Google 已经在
http://developer.android.com/guide/google/gcm/gs.html
给
出了,只要参照着做就行了,我就不再赘述了。
GCM 使用比较简单,而且 Google 的服务器来处理负载均衡、消息队列处理。但有下面
三个缺陷也导致了 GCM 在国内基本不可用:
1)GCM 要求 Android 系统必须是 2.2 以上的版本,所以对于不少 2.2 以前的系统没法推
送
2)国内服务不稳定。而且不少国内的终端厂商纷纷把 Google 的服务去掉,替换上自己
的。
3)需要用户绑定 Google 账号,但不少国内用户没有 Google 账号。
方案二、采用 XMPP
XMPP
XMPP
XMPP 协议
XMPP 是一种基于 XML 的协议,它继承了在 XML 环境中灵活的发展性,有很强的可
扩展性。包括上面讲的 GCM 服务器底层也是采用 XMPP 协议封装的。
XMPP 协议有如下优点:
1、 分布式:任何人都可以运行自己的 XMPP 服务器,它没有主服务器
2、 安全性高:使用 TLS 等技术
3、 跨平台
4、分布式
而 androidpn(Android Push Notification)就是基于 XMPP 开源组件的一套整合方案,
服 务 端 基 于 Openfire 、 客 户 端 基 于 Smack 。 到 AndroidPN 项 目 主 页
( http://sourceforge.net/projects/androidpn/ ) 下载 2 个文件: androidpn-server-0.5.0-bin.zip 和
androidpn-client-0.5.0.zip
分别是服务器和客户端的代码。详细的实现方式网上有不少文章。
androidpn 是韩国人放在 sourceforge.net 的项目,已经有两年多没有更新了,项目应该
是个人维护的,不是很成熟。有意思的是,网站上这个项目有 82%的下载者的 ip 是中国的。
androidpn 有如下一些不足,开发的时候需要权衡:
1、androidpn 服务端重启后客户端不会重连,这个非常悲剧