GCM 发送接收消息 Message Client Server 服务器端,客户端

GCM 传递参数

最近用了很多时间做GCM,由于碰到很多问题,因此详细做一下记录,以方便各位网友,不用再走我的重复的路.不过我试了一下GCM在国内很不好用.假如开发国外的程序的话,用GCM倒是很不错的选择.国内基本上封得不成样子了,十个请求发出去,有一个相应就不错了,其他的九个都被长城防火墙拦住了.

Google 的GCM最权威的当然是官网了.刚开始我照着官网做的,为了更完善一些,部分地方我直接用了网上的材料.红色的地方表示比较重要的地方.

1准备工作1.要创建一个谷歌API项目:

打开谷歌API的控制台页面。(https://code.google.com/apis/console/)

如果你还没有创建一个API项目,这个页面会提示你这样做

如果您已经有项目,你看到的第一页将是仪表板页面。从那里你可以通过打开项目的下拉菜单(左上角),并选择Other>Create一个新的项目。

点击创建项目。Google会自动生成一个project Id. 这是你的项目ID,请注意这个Id 项目ID:382396212935 下面很多地方用到了.

2启用GCM服务3 获取一个Server API密钥

为了获取一个API密钥:在谷歌API控制台主页面中,选择项目之后,右侧有Overview,谷歌的界面已经更新了,但是很多网上还是原先的界面,让我走了弯路了.下面是最新的页面.

如上面显示的.先进入:OverView==>API&auth==>Credentials==>会出现如下画面,中间一列的下面有Public API access,看到下面的Key for server applications 了吗,里面有个API key ,这就是Google为新建的这个项目分配的API 我的是:key. :AIzaSyAmCeG5SHgiJRqXWM4TyS2LiQhAsKHGOVA

注:如果你的没有key for server applications的话,切记是Server application .不是上面的client Application.请点击Generate new key。一个新的密钥就会创建,而之前的密钥在未来24内仍然有效。如果你想让之前的密钥立即失效(例如:你认为它已经被破解了),请点击Delete key。

4安装辅助库

在执行下面章节描述的步骤之前,请确保已经安装好辅助库。打开Android SDK Manager,安装Extras > Google Cloud Messaging for Android Library。这会在YOUR_SDK_ROOT/extras/google/目录下创建一个gcm文件夹,gcm文件夹下包含:gcm-client,gcm-demo-appengine,gcm-demo-client,gcm-demo-server, andgcm-server子目录。

注:SDK Manager版本要求r20以上,之前的版本发现不了GCM库。所以先打开eclipse升级ADT。

我的路径在:E:\android\adt-bundle-windows-x86-20130729\sdk 找到SDK Manager.exe,双击后出现:

在Extra==>底下的好几个library,装上之后,进入硬盘的这是我的路径:E:\android\adt-bundle-windows-x86-20130729\sdk\extras\google\gcm

在里面有gcm-client,gcm-server,samples.等等.里面有需要的架包.

2 GCM的原理

准备工作完成,说一下原理:Google Cloude Message,其实是通过一个Google Cloude Message ,做为平台.用户做两个应用,一个是发信息的应用,一个是接受信息的应用.发信息的把信息发给GCM Server,然后,GCM Server,再发给接收信息的一端.发送信息的时候需要传给GCM 三个参数(1)GCM Server API key,也就是我们刚才生成的API key (2)DeviceID,也就是说接收端的DeviceId,这个是在接收端运行的时候,首先需要向GCM服务器注册得到的Id,这样,GCM Server服务器知道改把信息传给那个设备.(3)传送的数据.

3 开始建立程序

按照上面的分析,首先要建立接收端:下面是我直接用了网上的材料,假如觉得很繁琐的话,可以将我的例子下下来一边看,一边对照,这样理解的更深入一些.

可以先直接下载:客户端:步骤 1:拷贝gcm.jar到程序的classpath目录下

在编写程序之前,请先拷贝SDK目录下gcm-client/dist目录下的gcm.jar文件到程序的classpath。

步骤 2:按照以下步骤更改项目的AndroidManifest.xml文件

1. GCM需要Android2.2或更高版本,所以如果你的程序不依赖GCM就无法正常工作,那么请在AndroidManifest文件中添加以下内容,“xx”处替换为最新的目标SDK版本号:

<uses-sdkandroid:minSdkVersion=”8″android:targetSdkVersion=”xx”/>

2. 声明并使用一个自定义的权限以此来确保只有这个程序可以接收你的GCM消息:

<permissionandroid:name=”my_app_package.permission.C2D_MESSAGE”android:protectionLevel=”signature”/><uses-permissionandroid:name=”my_app_package.permission.C2D_MESSAGE”/>

这个权限必须称作:my_app_package.permission.C2D_MESSAG(程序包名.permission.C2D_MESSAG,程序包名就是在manifest文件中定义包名),不然将不能正常运行。

注:如果你的程序针对的是4.1或更高版本的系统(即,minSdkVersion 16),那么就不需要这个权限。

3. 添加权限接收GCM消息:

<uses-permissionandroid:name=”com.google.android.c2dm.permission.RECEIVE”/>

4. 添加以下广播接收器:

<receiver android:name=”com.google.android.gcm.GCMBroadcastReceiver” android:permission=”com.google.android.c2dm.permission.SEND”>

<intent-filter>

<action android:name=”com.google.android.c2dm.intent.RECEIVE”/>

<action android:name=”com.google.android.c2dm.intent.REGISTRATION”/>

<category android:name=”my_app_package”/>

</intent-filter>

</receiver>

家!甜蜜的家!天下最美好的莫过於家

GCM 发送接收消息 Message Client Server 服务器端,客户端

相关文章:

你感兴趣的文章:

标签云: