1 / 65
文档名称:

构建Android Push Notification Service服务端及客户端[含代码] - 48 views.doc

格式:doc   大小:26KB   页数:65页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

构建Android Push Notification Service服务端及客户端[含代码] - 48 views.doc

上传人:好用的文档 2021/10/25 文件大小:26 KB

下载得到文件列表

构建Android Push Notification Service服务端及客户端[含代码] - 48 views.doc

文档介绍

文档介绍:构建Android Push Notification Service服务端及客户端[含代码] - 48 views
终于又开始上班了,只有在值班的时候,才是我比较清闲的时候,可以静下来做自己喜欢的事情,看自己喜欢的文章,写自己喜欢的博客。在Android架构部分,几个比较难啃的骨头里面,Android Push Notification Service算一个。我想今天来解释一下她的实现以及使用。1 这个服务的必要性问题
在手机的使用过程中,我们知道,正睡觉呢,突然响起了短信声,打开一看,原来是移动/电信在提醒我们该上厕所了,或者天边冷了,多穿点衣服吧之类的话语。而在使用Android手机的时候,我们发现,如果有Gmail端,收到邮件的时候,会弹出一个提示,你有一条新邮件,并包含邮件的标题和相关信息。不知道你会不会好奇,这是如何实现的呢?我很好奇,所以便有了此文的写作动机。而对于QQ、安卓市场之类的软件,时不时的也弹出来这类信息,相信大家可以明白,这东西应该是有点用处的。比如我们开发一款应用,需要实时的提醒我们的安装用户一些事情,相信,你就会明白,这个服务是很有必要的,相信,在未来移动互联网、物联网占据大片江山的时候,也是很有必要的。
2 几个问题
好了,我们提出了这个东西的必要性,但是在做的时候,我们必须要考虑几个问题。
俺的电池不怎么抗用,可千万别太耗我的电量啊,这是哥最在意的啊。
除了花点流量,这玩意不要花我另外的钱,我可是月光族啊。
我着急要收到这个消息,别半小时后才把消息发给我,那样的话,会损失我的订单的。
必须要可靠哦,别用着用着,不好使了。
秉着以上的几个关键问题,我们开始了下一部分的探讨了。
3 几种可能的方案
我们来思考一下,要实现实时得到信息,有哪几种方法呢?
1 通过http/https或者其他协议,客户端以服务的方式,每隔10分钟或者10秒钟,向服务器请求一次,服务器判断这段时间是否有新消息,需要发给客户端,如果有就通过json或者xml方式发给客户端。
2 通过短信的方式,服务器端通过SMS的方式,将所需要的消息及时发送回来。
3 使用tcp长连接和心跳包的机制,实现数据定时推送。
4 采用的方案
从我的能力,我目前只能想到这么几种办法,下面我们来根据第二条里面的准则来分析上面提到的几种方案。
第一条通过http或者https的方式,向服务器每隔多长时间请求一次的方式,的确可以实现我们的功能,。首先这种方式会耗电,当然你可以说时间设置长一点,。所以这条一般是不会被采纳的。除非某些特殊应用。
第二条呢,、、,可是,,所以我们也不会考虑的。
第三条呢,好像全部符合,但是有一个小问题在里面,就是如果以Service的方式进行,由于Android系统的特殊性,在内存不够用的时候,会主动结束一些服务,这个服务包括了我们的定义服务,这么说,。
但是,我们还是有办法的。
5 被采用方案的可实施方法
在Android ,Google放出了C2DM【Android Cloud to Device Messaging Framework】服务,从服务的使用方法上,我们就可以明白他们采用了第三种方式。
随着他们推出这个服务后,很多公司开始基于这个服务做一些应用,如推送广告、推送定制信息等。如xtify和airpush等,国内也有一些企业加入了这种阵营,如单独提供服务的push-notification,当然QQ也有这样的服务存在。
在这种方案里面,有几个细节地方,需要来解释一下。
传输的时候使用什么协议?
传输的时候如何保证数据的安全性?
对于多平台,多用户的push如何保证惟一性?
服务器端的如何部署?
,使用xmpp协议、IBM的MQTT、自定义协议。 目前有一些开源的项目中,大都采用第一种和第二种,当然,如果有特殊需求,可以采取自定义协议的。

,一般是将手机的ID传递到服务器端进行惟一性验证。
,服务器端可以自己使用任何语言开发,也可以使用Nginx + 脚本语言部署。
6 实例说明
本文的实例采用了mqtt的架构,完全按照tokudu兄的文章而来,并成功实现了。里面采取的不是IBM的Really Small Message Broker,而是采用的开源Mosquitto实现,
准备工作:
Android真机,本文为三星I809
6.