background image

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 服务端重启后客户端不会重连,这个非常悲剧