AndroidC2DM(推送技术).doc

上传人:新** 文档编号:542850385 上传时间:2023-07-08 格式:DOC 页数:19 大小:417.50KB
返回 下载 相关 举报
AndroidC2DM(推送技术).doc_第1页
第1页 / 共19页
AndroidC2DM(推送技术).doc_第2页
第2页 / 共19页
AndroidC2DM(推送技术).doc_第3页
第3页 / 共19页
AndroidC2DM(推送技术).doc_第4页
第4页 / 共19页
AndroidC2DM(推送技术).doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《AndroidC2DM(推送技术).doc》由会员分享,可在线阅读,更多相关《AndroidC2DM(推送技术).doc(19页珍藏版)》请在金锄头文库上搜索。

1、 Android C2DM云端推送一基础知识当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如地震及时通就需要及时获取服务器上最新的地震信息。要获取服务器上不定时更新的信息一般来说有两种方法,第一种是客户端使用Pull(拉)的方式,隔一段时间就去服务器上获取信息,看是否有更新的信息出现。第二种就是服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push is better than pull。因为Pull方式更费客户端的网络流量,更主要的是费电量。A

2、ndroid从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的一个完整过

3、程,这里借用一下Google官方推出的Chrome To Phone过程图来说明下。 图1 C2DM操作过程图要使用C2DM来进行Push操作,基本上要使用以下6个步骤: (1)注册:Android设备把使用C2DM功能的用户账户(比如)和App名称发送给C2DM服务器。 (2)C2DM服务器会返回一个registration_id值给Android设备,设备需要保存这个registration_id值。 (3)Android设备把获得的registration_id和C2DM功能的用户账户()发送给自己的服务器,不过一般用户账户信息因为和服务器确定好的,所以不必发送。这样Android设备就

4、完成了C2DM功能的注册过程,接下来就可以接收C2DM服务器Push过来的消息了。 (4)服务器获得数据。这里图中的例子Chrome To Phone,服务器接收到Chrome浏览器发送的数据。数据也可以是服务器本地产生的。这里的服务器是Google AppEngine(很好的一项服务,可惜在国内被屏了),要换成自己的服务器。服务器还要获取注册使用C2DM功能的用户账户()的ClientLogin权限Auth。 (5)服务器把要发送的数据和registration_id一起,并且头部带上获取的Auth,使用POST的方式发送给C2DM服务器。 (6)C2DM服务器会以Push的方式把数据发送给

5、对应的Android设备,Android设备只要在程序中按之前和服务器商量好的格式从对应的key中获取数据即可。 这样我们就大概明白了C2DM的工作流程,下面我们就结合一个实例来具体的说明以上6个步骤。三实例开发我们要创建的程序名称为AndroidC2DMDemo,包名为com.ichliebephone.c2dm。开始之前我们先去C2DM网页上注册一下使用C2DM功能的用户账户。 其中应用程序名要填写带包名的完整名称,比如这里为om.ichliebephone.c2dm. AndroidC2DMDemo。 这里的contact邮箱使用一个你能接收到邮件的邮箱即可,下面的Role(sender

6、)account邮箱最好单独注册一个Gmail邮箱来使用C2DM服务。我们这里使用的是专门注册的邮箱。 提交后,过一段时间就会收到Google发送过来的确认邮件,然后你就可以使用C2DM的Push服务了。 介绍了这么多,我们先来快速完成一个实例,只完成Android设备端的注册部分,不包含向服务器发送registration_id和服务器向C2DM服务器发送数据的具体代码,这部分只是用Ubuntu下的curl命令来模拟,主要是快速亲自体验一下Push的结果。创建一个Android工程AndroidC2DMDemo,并且包含进Google的开源例子Chrome To Phone中的c2dm包co

7、m.google.android.c2dm,包中包含三个Java类,分别为:第一个类为C2DMBaseReceiver:java view plaincopy1 /* 2 * Copyright 2010 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the License); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7

8、* 8 * http:/www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an AS IS BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the

9、 specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.android.c2dm; 18 19 import java.io.IOException; 20 21 import android.app.AlarmManager; 22 import android.app.IntentService; 23 import android.app.PendingIntent; 24 import android.content.C

10、ontext; 25 import android.content.Intent; 26 import android.os.PowerManager; 27 import android.util.Log; 28 29 /* 30 * Base class for C2D message receiver. Includes constants for the 31 * strings used in the protocol. 32 */ 33 /* 34 * 接收和处理C2DM消息的基类 35 * */ 36 public abstract class C2DMBaseReceiver

11、extends IntentService 37 /和C2DM Push的Intent内容相关 38 /重新向C2DM服务器注册 39 private static final String C2DM_RETRY = com.google.android.c2dm.intent.RETRY; 40 /向C2DM服务器注册后的回调处理 41 public static final String REGISTRATION_CALLBACK_INTENT = com.google.android.c2dm.intent.REGISTRATION; 42 /接收到C2DM服务器的推送消息 43 pri

12、vate static final String C2DM_INTENT = com.google.android.c2dm.intent.RECEIVE; 44 45 / Logging tag 46 private static final String TAG = C2DM; 47 48 / Extras in the registration callback intents. 49 /向C2DM注册返回的intent中包含的key 50 public static final String EXTRA_UNREGISTERED = unregistered; 51 public st

13、atic final String EXTRA_ERROR = error; 52 public static final String EXTRA_REGISTRATION_ID = registration_id; 53 /向C2DM注册出错的原因 54 public static final String ERR_SERVICE_NOT_AVAILABLE = SERVICE_NOT_AVAILABLE; 55 public static final String ERR_ACCOUNT_MISSING = ACCOUNT_MISSING; 56 public static final

14、String ERR_AUTHENTICATION_FAILED = AUTHENTICATION_FAILED; 57 public static final String ERR_TOO_MANY_REGISTRATIONS = TOO_MANY_REGISTRATIONS; 58 public static final String ERR_INVALID_PARAMETERS = INVALID_PARAMETERS; 59 public static final String ERR_INVALID_SENDER = INVALID_SENDER; 60 public static final String ERR_PHONE_REGISTRATION_ERROR = PHONE_REGISTRATION_ERROR; 61 62 / wakelock 63 private static final String WAKELOCK_KEY = C2DM_LIB; 64 65

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号