




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
博雅互动内部资料,请勿外传序号变更内容说明版本号版本日期执笔人1创建文档1.02011.10.24李小龙23(一)学习指南前言当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据。要获取服务器上不定时更新的信息一般来说有两种方法,第一种是客户端使用Pull(拉)的方式,隔一段时间就去服务器上获取信息,看是否有更新的信息出现。第二种就是服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push is better than pull。因为Pull方式更费客户端的网络流量,更主要的是费电量。在我们的游戏中同时也可以使用Push这种方式来推送数据,当用户在一段时间里没有运行我们的游戏,当然这个需要后台进行统计。我们给这些用户强制发送一些消息(比如:送一些游戏币来吸引用户),从而达到更好的推广我们的游戏。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过程图来说明下。图1 C2DM操作过程图C2DM操作过程图要使用C2DM来进行Push操作,基本上要使用以下6个步骤:(1)注册:Android设备把使用C2DM功能的用户账户(比如)和App名称发送给C2DM服务器。 (2)C2DM服务器会返回一个registration_id值给Android设备,设备需要保存这个registration_id值。 (3)Android设备把获得的registration_id和C2DM功能的用户账户()发送给自己的服务器,不过一般用户账户信息因为和服务器确定好的,所以不必发送。这样Android设备就完成了C2DM功能的注册过程,接下来就可以接收C2DM服务器Push过来的消息了。 (4)服务器获得数据。这里图中的例子Chrome To Phone,服务器接收到Chrome浏览器发送的数据。数据也可以是服务器本地产生的。这里的服务器是Google AppEngine(很好的一项服务,可惜在国内被屏了),要换成自己的服务器。服务器还要获取注册使用C2DM功能的用户账户()的ClientLogin权限Auth。 (5)服务器把要发送的数据和registration_id一起,并且头部带上获取的Auth,使用POST的方式发送给C2DM服务器。(6)C2DM服务器会以Push的方式把数据发送给对应的Android设备,Android设备只要在程序中按之前和服务器商量好的格式从对应的key中获取数据即可。实列开发我们要创建的程序名称为AndroidC2DMDemo,包名为com.ichliebephone.c2dm。开始之前我们先去C2DM网页上注册一下使用C2DM功能的用户账户。 应用程序名 其中应用程序名要填写带包名的完整名称,比如这里为om.ichliebephone.c2dm. AndroidC2DMDemo。C2DM用户账户注册详细代码在此省略。因为C2DM功能只有2.2及以上的Android系统才支持,因此创建一个2.2及以上的AVD,然后在”设置-账户与同步”里还要设置好Google Account,如下图所示:然后就可以运行我们写的程序了,我们会在DDMS输出中看到获得的registration_id:有了registration_id,我们的服务器端就可以向C2DM端发送需要Push的数据了,这里进行简单化处理下,在url工具下直接使用curl命令来模拟服务器功能向C2DM发送数据。我们先来获取C2DM的ClientLogin权限Auth,在命令行下输入(这个在实际开发过程中需要后台php实现发送命令的功能):lingaohelingaohe-laptop:$curl-daccountType=HOSTED_OR_GOOGLE&Email=&Passwd=androidc2dmdemo&service=ac2dm&source=bupt-c2dmdemo-1.0/accounts/ClientLogin这个表示以POST的方式向/accounts/ClientLogin发送数据,其中把Email和Passwd换成你自己在C2DM网页上注册的邮箱号和密码。如果你的邮箱已在C2DM网页上注册,并且密码没有错误的话就会返回需要的Auth内容:1. SID=DQAAAKYAAADcTtHbBBNcZJEOfkfVRycD_ZOIidwsQ3UwIY7cSrYWaY6uhlfo0l9gRPB-mQxP4K2T5tWiG-vWVmSTeq5p8SPwgnsYvfzj7bkNiPPIy4xRimVVfBmAHnZgLohw7gHMKi5DS6kK-Ut5tNzdTkI0I2tUDF0ryQ7MnPpI6Sj-gUCyBXmvKatHHDnNTTV78XdGIx7FYej1DyqGsPsYo3bCstHgltjv3cd2Hs7D4yrpUWHZw2. LSID=DQAAAKgAAABCpaoUE4XvxM24Cofntw1IUGx5fKxX-m7aqTL0zhunP0OjzJ2sn9ywmPa1BMZ2cF2IchuxHFLVzaSQfydAmiHZJGXLgaUorpIN6yz1e0VFWKmS6j4wGjZOos3QoJ9rkha0jKbOiHfBesADjxk-qjJ24TJ0RL-xkZHQyzS69YlA1KyzqIKjAMCzgqaDfCwhqxylJzizJksO2h8xpAFXZ38d_grm8XYZtzejiCiAMAR65A3. Auth=DQAAAKoAAACRF4pgYULnXULoWgbwfdqmMiRhfZYa1l-LW_rwGD7cofov4L4c2bVrtCOXbEbkju_hhqdAonpMkrb5icptt28fU8c-s-u1y2MXNYDxPIdQzfA2t6oI3NTmyj35MpsR1NKL4TN7ZVEn6z9NueuiKAqLHukZYh1YMGkGC8M6rVvA7AWPW36064XCQED7KLVNp_pGT00lrni7UdZKZWEy0FT-EVR-OxDyHWw6C-5Kmfkisw返回的内容包括SID,LSID和Auth三个部分,其中Auth是我们需要的内容。有了Auth和registration_id值后,我们就可以继续用curl命令模拟我们自己服务器的功能向C2DM发送要推送的数据:lingaohelingaohe-laptop:$curl-HAuthorization:GoogleLoginauth=DQAAAKoAAACRF4pgYULnXULoWgbwfdqmMiRhfZYa1l-LW_rwGD7cofov4L4c2bVrtCOXbEbkju_hhqdAonpMkrb5icptt28fU8c-s-u1y2MXNYDxPIdQzfA2t6oI3NTmyj35MpsR1NKL4TN7ZVEn6z9NueuiKAqLHukZYh1YMGkGC8M6rVvA7AWPW36064XCQED7KLVNp_pGT00lrni7UdZKZWEy0FT-EVR-OxDyHWw6C-5Kmfkisw-dregistration_id=APA91bGUBoSvt3G5Ny9t0IGLmIKAKYX6G6VHwSQHh3tP2fqcaQ0N4GPdKh5B3RDUHFCFF06YwT8ifOP_cOy5BAWyCLHL8d8NpuIW9AqXt9h2JSBVF2MitZA&collapse_key=1&data.msg=ichliebejiajia/c2dm/send 其中发送的数据部分为data.msg=ichliebejiajia,表示发送的数据内容为ichliebejiajia,键值为msg,键值得和Android终端上的程序统一好,以便终端上可以获取。如果发送成功,会返回一个id值,比如:1. id=0:1308623423080544%6c5c15c2000000312. lingaohelingaohe-laptop:$这时我们的服务器就已经把数据发送给C2DM服务器了,Android设备上一会就能接收到C2DM服务器Push的数据。在我们的例子中我们可以看到DDMS中打印出的消息:同时Android模拟器的状态栏上会有对应的通知显示:C2DM的局限性1. 需要Android2.2及以上的系统版本。2. 使用C2DM功能的Android设备上需要设置好Google的账户。开发过程中遇到的一些问题1.同一个gmail账号绑定到同一台机器上每次运行我们的程序获得的registrationId(这个id就是我们个用户发送消息的唯一标识)是不同的. 我们讨论的解决方法是: 获取用户最后一次运行我们程序时候注册的registra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络安全实操题库及答案解析
- 信息安全概论第三版题库及答案解析
- 2025年国家开放大学《心理健康与心理疾病防治》期末考试备考试题及答案解析
- 内蒙古建筑安全员c证题库软件及答案解析
- 隆阳区安全员证考试题库及答案解析
- 2025年国家开放大学《社会工作专业概论》期末考试备考试题及答案解析
- 2025年国家开放大学《人际关系心理学》期末考试备考试题及答案解析
- 2025年国家开放大学(电大)《物理学原理》期末考试备考试题及答案解析
- 2025年国家开放大学《艺术与设计基础》期末考试备考试题及答案解析
- 水泵变频节能技术应用与分析报告
- LY/T 1332-1999湿地松松香
- GB/T 18391.1-2009信息技术元数据注册系统(MDR)第1部分:框架
- 做新时代马克思主义的信仰者与实践者课件
- 「东北大板」怎么红起来的
- midas分析设计原理
- 汉密尔顿抑郁量表汉密尔顿抑郁量表(HamiltonDepressionScale,HAMD)
- 特种设备风险分级管控清单(起重机)
- 保健食品安全知识培训
- 医师多点执业劳务协议书(参考格式)
- QC080000有害物质管理评审报告
- 10000中国普通人名大全
评论
0/150
提交评论