安卓推送技术探讨
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GCM 服务的步骤 Google 已经在 /guide/google/gcm/gs.html 给 出了,只要参照着做就行了,我就不再赘述了。 GCM 使用比较简单,而且 Google 的服务器来处理负载均衡、消息队列处理。但有下面 三个缺陷也导致了 GCM 在国内基本不可用: 1)GCM 要求 Android 系统必须是 2.2 以上的版本,所以对于不少 2.2 以前的系统没法推 送 2)国内服务不稳定。而且不少国内的终端厂商纷纷把 Google 的服务去掉,替换上自己 的。 3)需要用户绑定 Google 账号,但不少国内用户没有 Google 账号。 方案二、采用 XMPP 协议 XMPP 是一种基于 XML 的协议,它继承了在 XML 环境中灵活的发展性,有很强的可 扩展性。包括上面讲的 GCM 服务器底层也是采用 XMPP 协议封装的。 XMPP 协议有如下优点: 1、 分布式:任何人都可以运行自己的 XMPP 服务器,它没有主服务器 2、 安全性高:使用 TLS 等技术 3、 跨平台 4、分布式 而 androidpn(Android Push Notification)就是基于 XMPP 开源组件的一套整合方案, 服 务 端 基 于 Openfire 、 客 户 端 基 于 Smack 。 到 AndroidPN 项 目 主 页 ( /projects/androidpn/ ) 下载 2 个文件: androidpn-server-0.5.0-bin.zip 和 androidpn-client-0.5.0.zip 分别是服务器和客户端的代码。 详细的实现方式网上有不少文章。 androidpn 是韩国人放在 的项目,已经有两年多没有更新了,项目应该 是个人维护的,不是很成熟。有意思的是,网站上这个项目有 82%的下载者的 ip 是中国的。 androidpn 有如下一些不足,开发的时候需要权衡: 1、androidpn 服务端重启后客户端不会重连,这个非常悲剧
� �
� �
Android/iOS 推送比较 相比 Android,iOS 的推送服务要稳定,因为 Android 操作系统用户可以自己杀死服务, 这样就造成了手机接收不到通知消息。苹果 APNs(Apple Push Notification Service )的流程 如下: 1、应用程序注册消息推送。 2、iOS 从苹果推送服务器(APNs)获取 device token(设备令牌,用于标识设备) ,应 用程序接收 device token。 3、应用程序将 device token 发送给第三方 Push 服务端程序。 4、服务端程序向 APNS 服务发送消息。 5、APNS 服务将消息发送给 iPhone 应用程序。 推送解决方案 目前 Android 上主要的推送实现方案有以下几种: 方案一、Google Cloud Messageing Google 在 Android 上标配了自己的推送 GCM(Google Cloud Me发送数据。它是一个轻量级的消息,告诉 Android 应用程 序有新的数据要获取从服务器, 或者它可能是一个消息, 其中包含了 4KB 的 payload data (像 即时通讯这类应用程序可以直接使用该 payload 消息) 。GCM 服务处理排队的消息,并把消 息传递到目标设备上运行的 Android 应用程序。 GCM 的推送消息的流程如下图:
安卓推送技术探讨
背景介绍 随着苹果产品的风靡,推送技术在国内也越来越热门。推送最开始用于邮件系统。随着 iPhone 和 Android 手机的风靡,逐渐在手机上也越来越常见。不少手机客户端也时常推送 一些消息。 推送技术的应用 推送技术在手机上的应用主要有两块:广告推送、SNS 信息推送。 广告推送:给目前有一定安装量但没有盈利模式的手机应用开发者带来了一定希望, 但 要注意推送的频度和内容选中,不然会因为推送的东西用户不感兴趣造成打扰。 SNS 信息推送:主要用于 QQ 空间、人人网、微博和天涯论坛等 web2.0 社区网站推送 好友的留言等,可以用来提升用户黏性。 客户端/服务器通信的两种方式: 服务端和客户端推送有两种方式,分别是 Pull 和 Push。 Pull :由客户端定时访问服务器,询问是否有新信息。而 Push 则在手机客户端和服务 器之间建立持久连接通道,服务端一有消息就通过通道发给手机。 Push:相比 Pull,Push 推送的消息是实时的,而且更节省手机的电量和流量,不需要定 时访问服务器。 Pull 轮询方式一般信息会有 1 到 10 分钟不等的延时, 且耗电量也比 Push 方式消耗得多。
2、由于服务器不保存消息,造成了如果客户端当前离线就收不到消息。 3、androidpn 发送完消息就不管了,所以没有消息回执报表之类,造成没法做应用后续 的数据分析用户体验的改善,这对于企业级的应用是个致命伤。 XMPP 协议比较费电费流量, 这个对当前智能机的消耗太大, 在窄带网络和不稳定的 (手 机)网络都不是最优的选择。但总体来说,XMPP 协议还是比较成熟的。 方案三、采用 MQTT 协议 MQTT 是个轻量级的、基于代理的“发布/订阅”模式的消息传输协议。示例代码可以从 https:///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 比起来用户体验上还有待提升。 方案五、自己搭建推送系统 根据需要搭建推送系统。 需要考虑开发成本、 部署成本, 用户数以及系统承载能力等等, 比较复杂。