Android C2DM学习——云端推送(转载)
2013-10-16 20:53
369 查看
一.基础知识 当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如《地震及时通》就需要及时获取服务器上最新的地震信息。要获取服务器上不定时更新的信息一般来说有两种方法,第一种是客户端使用Pull(拉)的方式,隔一段时间就去服务器上获取信息,看是否有更新的信息出现。第二种就是服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。 虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push is better than pull。因为Pull方式更费客户端的网络流量,更主要的是费电量。 Android从2.2版本开始增加了Cloud to Device Messaging(C2DM)框架,在系统中支持了Push功能,基于Android平台使用Push功能更加简单了。虽然C2DM目前还处在实验室阶段,不过小规模的使用应该没问题 下面我们就来体验一下Android的C2DM功能。 二.C2DM框架 使用Android的C2DM功能有几个要求: 1. 需要Android2.2及以上的系统版本。 2. 使用C2DM功能的Android设备上需要设置好Google的账户。 3. 需要在这里注册使用C2DM功能的用户邮箱账号(最好为C2DM单独注册一个Gmail邮箱账号)。 我们接下来C2DM的一个完整过程,这里借用一下Google官方推出的Chrome To Phone过程图来说明下。 ![]() 图一C2DM操作过程图 要使用C2DM来进行Push操作,基本上要使用以下6个步骤: (1)注册:Android设备把使用C2DM功能的用户账户(比如android.c2dm.demo@gmail.com)和App名称发送给C2DM服务器。 (2)C2DM服务器会返回一个registration_id值给Android设备,设备需要保存这个registration_id值。 (3)Android设备把获得的registration_id和C2DM功能的用户账户(android.c2dm.demo@gmail.com)发送给自己的服务器,不过一般用户账户信息因为和服务器确定好的,所以不必发送。 这样Android设备就完成了C2DM功能的注册过程,接下来就可以接收C2DM服务器Push过来的消息了。 (4)服务器获得数据。这里图中的例子Chrome To Phone,服务器接收到Chrome浏览器发送的数据。数据也可以是服务器本地产生的。这里的服务器是Google AppEngine(很好的一项服务,可惜在国内被屏了),要换成自己的服务器。服务器还要获取注册使用C2DM功能的用户账户(android.c2dm.demo@gmail.com)的ClientLogin权限Auth。 (5)服务器把要发送的数据和registration_id一起,并且头部带上获取的Auth,使用POST的方式发送给C2DM服务器。 (6)C2DM服务器会以Push的方式把数据发送给对应的Android设备,Android设备只要在程序中按之前和服务器商量好的格式从对应的key中获取数据即可。 这样我们就大概明白了C2DM的工作流程,下面我们就结合一个实例来具体的说明以上6个步骤。 三.实例开发 我们要创建的程序名称为AndroidC2DMDemo,包名为com.ichliebephone.c2dm。 开始之前我们先去C2DM网页上注册一下使用C2DM功能的用户账户。 ![]() 图2 应用程序名 其中应用程序名要填写带包名的完整名称,比如这里为om.ichliebephone.c2dm. AndroidC2DMDemo。 ![]() 图3 C2DM用户账户注册 这里的contact邮箱使用一个你能接收到邮件的邮箱即可,下面的Role(sender)account邮箱最好单独注册一个Gmail邮箱来使用C2DM服务。我们这里使用的是专门注册的[url=mailto:android.c2dm.deno@gmail.com]android.c2dm.deno@gmail.com[/url]邮箱。 提交后,过一段时间就会收到Google发送过来的确认邮件,然后你就可以使用C2DM的Push服务了。 |
KB, 下载次数: 0)
![](http://www.eoeandroid.com/data/attachment/forum/201205/17/155210wzbyd8w83dwl3d4g.png)
0_13100339312b59.png (41.83
KB, 下载次数: 0)
![](http://www.eoeandroid.com/data/attachment/forum/201205/17/155353khxhvmlb1lbgaara.png)
0_1310033964pTr3.jpg (11.4
KB, 下载次数: 3)
![](http://www.eoeandroid.com/data/attachment/forum/201205/17/155438373cagrcwxgtayry.jpg)
0_1310034130esNp.jpg (7.32
KB, 下载次数: 0)
![](http://www.eoeandroid.com/data/attachment/forum/201205/17/155834a22gtxgg5gagtcg2.jpg)
0_1310034169uvv8.png (24.8
KB, 下载次数: 0)
![](http://www.eoeandroid.com/data/attachment/forum/201205/17/155915msadsy2tt12nsdyz.png)
原文地址:点击打开链接
相关文章推荐
- Android C2DM学习——云端推送(转载)
- Android C2DM学习——云端推送
- Android C2DM学习 - 云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习 --云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android C2DM学习——云端推送
- Android 云端推送C2DM php实现向终端推送消息
- Android 开发(六)C2DM 云端推送
- 转载_2012年的Android之旅:梦想、学习、坚持、自信、淡定
- (转载)Android JNI学习之javah命令的正确使用(找了好半天才找到的,汉,网上好多说法都没用)