androidpn 作为 android 推送方案存在的问题


androidpn androidpn androidpn androidpn 作为作为作为作为 AndroidAndroidAndroidAndroid 推送方案存在的问题推送方案存在的问题推送方案存在的问题推送方案存在的问题 如果百度或者 Google 搜索 “android 推送” 关键字,相当一部分文章都在说 到 androidpn。也可以看到有人说用起来了,有人在吐槽说不稳定、功能缺失, 维护工作量大。本文尝试对 androidpn 的前世今生做个汇总分析。 访问 androidpn 官方网站,我们可以了解到如下的基本信息: 1. androidpn 全称是 Android Push Notification。 2. 这是韩国人开源放在 sourceforge.net 上的一个开源项目,文档是韩文 的。 3. 最近的版本更新时间是 2010-11-05,也就是约二年之前。 4. 来自中国的访问量,占其总访问量的 81%。请点击本链接再看当前的统计。 以上的基本信息表明,这不是一个很成熟的项目(貌似个人维护的),但是确有 大量的中国人有兴趣。 相信有不少同学知道为什么国人对 androidpn 这么感兴趣,这是国情啊:因为 Google 官方的 GCM(之前叫 C2DM)在国内使用不了。另外,国内之前又没有可 用好用的第三方推送服务。所以,大家不得已而为之:自己搞。从头开始?工作 量太大,太不 划算了。所以从开源的开始。而也恰好,开源项目里,明确地为 Android Push 来生的,也就 androidpn 了。mqtt 里没有整合这么好可以快速跑 起来的。 但 androidpn 搭建起来后,情况如何呢?CSDN 上一个美女程序员的文 章 androidpn 推送初探 比较热。这篇文章里作者提出来几个问题: • androidpn 服务器收到消息后如何知道要发给哪个用户? • 一旦服务器重启了,客户端似乎不会自动重连,需要用户自己中断后台 Service 再重启应用。 • androidpn 服务器不保存消息。就是说它一有消息就会发出去,即使客户 端根本不在线,它也不会重发。 作者赞在于,不只是满足于把环境搭建起来,而且针对业务需求做了思考。解析 下她提出的问题: 第一个问题相对简单,要去定制下用户体系,业务部分的用户体系需要与 androidpn 对应起来。 第二个问题,是个小细节,androidpn 客户端没有去做这些细节。 第三个问题,是最重要的。androidpn 背后的 Openfire,是 XMPP IM 服务器, 消息内容是不会落地的,即只在内存里保存一下离线消息。如果要生产用,需要 考虑改造这里。 以下从 androidpn 的技术基础来个深入的剖析。 androidpn 是一个整合方案,它是基于 XMPP 开源组件的 。即服务器端基于 Openfire,客户端基于 Smack ,这二个是 XMPP 开源组件里最常见的两个。 androidpn 使用 Spring 框架做了个 Web 层,把 XMPP IM 组件集成起来,以实现 Android Push 功能。因此,androidpn 的可用性来自于如下几个方面: 1. 其依赖的 XMPP IM 协议与通讯机制,是否适合用于 Android Push 场景。 2. 其是否为 Android Push 需求做了必要的定制。 第一个方面,XMPP 协议与开源组件。XMPP 是个成熟的 IM(即时通讯)协议,基 于 XML 文本方式实现,灵活强大。国外大多数聊天服务都是基于 XMPP 的,比如: Gtalk,Facebook Chat,iMessage 等。正因为如此,所以 XMPP 的一些开源组件 可用性还不错,国内很多新兴的聊天工具刚开始完全基于 XMPP 开源组件来开发, 比 如米聊。 但是,以笔者曾经实现过移动聊天 App 的类似经历来说,XMPP 开源组件有其问 题,需要大范围改造: 1. XMPP 协议复杂冗余,客户端费流量、费电; 2. 开源的 XMPP 服务器(androidpn 选择的是 Openfire)单点容量有限,集 群方案复杂、不成熟。 基于这些原因,并考虑到大范围改造技术上更不可控,所以笔者所在的团队刚开 始用 XMPP 开源方案,后来完全切到自己实现的技术方案上了。 第二个方面,Android Push 的需求场景,除了消息能够及时地推送到客户端, 还有什么其他的基本需求呢?这里试举两个例子:其一,确保消息能够到达。即 是否能有机制确保消息不 会丢失,不管什么原因。其二,向指定的一群人推送 消息。anroidpn 的基础 XMPP IM 组件是没有考虑这些的,需要做大量的定制改 造。 总结起来,使用 androidpn 可以简单地做到:把消息推送到客户端。但是,要使 其适合开发者需要,并在生产环境上运行,则可能需要做很多定制开发工作。从 笔者与多个开发者交流得到的反馈来看,在生产环境里运行起来问题很多。 上面说到,国内之前没有什么可用好用的第三方消息推送服务,所以大家不得不 自己去考虑搭建。最近国内有个第三方消息推送服务开放了,它是极光推送,普 通开发者可以随时注册帐号、下载 SDK 做集成,整个过程 3 分钟就可以完成。 关键在于,这个服务是免费的。
还剩2页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

timrombin

贡献于2012-11-22

下载需要 3 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf