作者:阿米达

--------------------转载请注明:http://blog.csdn.net/liaoqianchuan00/article/details/8260107


1.      创建一个Google API 项目

1.      打开Goolge APIs Console 页面

2.      如果你还没有创建过API 项目,将会看到如下页面:

3.      点创建项目,你的浏览器地址将会变成类似下面这样:

https://code.google.com/apis/console/#project:4815162342

4.      即如#project后面的数字。这就是你的项目号,这个数字后面会当做GMsender ID使用。

2.      打开GCM服务

1.      在Google APIs Console页面,选择Services

2.      打开Google Cloud Messaging

3.      在服务条款页面,选择接受条款。


3.      获取一个API key

1.      在Google APIs Console的主页面,选择APIAccess。你会看到类似下面的页面:


2.      点击Create new Server key


3.      点击Create


记住生成的API key,这会在以后使用到。

4.      安装GCM 库

打开SDK Manager,安装 Extras > Google Cloud Messaging forAndroid Library。它会创建一个YOUR_SDK_ROOT/extras/google/ 文件夹。

5.      编写Android 程序

1.      从 gcm-client/dist中拷贝gcm.jar到你的项目下面。

2.      在android manifest中作如下改变

1.      GCM需要至少Android SDK2.2.

 android:minSdkVersion="8" android:targetSdkVersion="xx"/>
 

2.      声明一个自定义permission:

 android:name="my_app_package.permission.C2D_MESSAGE" android:protectionLevel="signature" />
 android:name="my_app_package.permission.C2D_MESSAGE" /> 

3.      加入下面的权限:

 android:name="com.google.android.c2dm.permission.RECEIVE" />
 android:name="android.permission.INTERNET" /> 
 android:name="android.permission.GET_ACCOUNTS" />
 android:name="android.permission.WAKE_LOCK" />

4.      添加一个广播消息接收器

 android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
  
     android:name="com.google.android.c2dm.intent.RECEIVE" />
     android:name="com.google.android.c2dm.intent.REGISTRATION" />
     android:name="my_app_package" />
  

可以接收com.google.android.c2dm.intent.RECEIVE 和com.google.android.c2dm.intent.REGISTRATION

5.      添加一个service:

 android:name=".GCMIntentService" />

这个service会被GCMBroadcastReceiver调用。而且这个service必须继承自GCMBaseIntentService。主要在这个service中将注册成功的ID发送给我们自己的服务器保存呢,然后我们的服务器才可以根据这些ID向Google的服务器发送消息。

编写GCMIntentService类:

重写以下几个方法:

  • OnRegistered:注册GCM成功后会返回一个ID,你需要把这个ID发送到自己的服务器保存,这样我们的服务器才能向指定的设备发送push消息。
  • onUnregistered:当从GCM注销之后,你需要在自己的服务器上也注销这个设备。
  • onMessage:当你的服务器向GCM发送消息,GCM把消息转发给指定设备的时候被调用。
  • onError:当设备注册和注销发生错误的时候被调用。
  • onRecoverableError:当设备注册和注销的时候,GCM服务器不可用,这个时候会被调用到。

6. 编写主Activity

在onCreate中添加下面的的代码:

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this, SENDER_ID);
} else {
  Log.v(TAG, "Already registered");
}

首先调用getRegistrationId查看设备是否已经注册,如果没有就注册一次。

 

7. 测试:

在chrome中安装ChromePoster

打开poster,填入地址信息:

https://android.googleapis.com/gcm/send.

添加头信息:

·        Authorization: key=YOUR_API_KEY

·        Content-Type: application/json for JSON; application/x-www-form-urlencoded;charset=UTF-8for plain text.

内容如下:

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "registration_ids": ["4", "8", "15", "16", "23", "42"]
}

 

参考自: http://developer.android.com/google/gcm/gs.html 

http://developer.android.com/google/gcm/gcm.html

 

 

更多相关文章

  1. Android(安卓)Intent FLAG介绍
  2. android之 h5调用系统相机和相册并显示
  3. 【Android】之【对话框(Dialog)大全】
  4. Android(安卓)自定义 attr
  5. Android(安卓)Service的绑定过程
  6. Android中资源限定符hdpi large等的优先顺序和匹配关系
  7. Android端通过httpCilent访问Tomcat服务器servlet
  8. Android监听返回键、Menu键、Home键、
  9. 初学Android的一些注意事项

随机推荐

  1. Mysql 服务 1067 错误 的解决方法:修改my
  2. Mysql 5.7.18 解压版下载安装及启动mysql
  3. 解决Win7 x64安装解压版mysql 5.7.18 win
  4. Linux/Mac MySQL忘记密码命令行修改密码的
  5. MySQL对中文进行排序详解及实例
  6. Python MySQL进行数据库表变更和查询
  7. mysql 从一个表中查数据并插入另一个表实
  8. Linux/Mac MySQL忘记密码怎么办
  9. MySQL插入emoji表情失败问题的解决方法
  10. CentOS7 64位安装mysql图文教程