Submitted by jerenus on
不久前在Drupal.org上更新了Android Cloud To Device Messaging(C2DM)模块, 在模块主页以及README.TXT文件中简略的描述了如何用C2DM模块, 为我们的网站搭建Google Cloud Message服务在服务器端所需要的工作。
这篇文章的目的就是为了介绍如何制作我们的Android项目来和正确配置了C2DM的网站一起工作。 这里用DrupalCloud代替了一些与Drupal Web Services通信验证的工作。 那让我们马上开始吧。
在开始之前, 我们还是需要为第一次接触 Google Cloud Message 推送服务开发的朋友们介绍一些必要的准备工作。
1,首先创建你的 Google APIs Key。
2,创建完你的“project”以后你可以在url里看到你的“project id”,它将成为你Android项目的“SENDER ID”。
如:https://code.google.com/apis/console/#<strong>project:56186332XXXX</stro...
3,然后在左边的面板里点击“Services”然后激活“Google Cloud Messaging for Android”这个选项。
4,点击“API Access”然后记录下这个API Key。 这个API KEY 将在向GCM服务器发送请求时被使用。
详细(图文)参考: http://developer.android.com/google/gcm/gs.html
好了, 现在我们有了所需要的东西, 加上我们已经配置好C2DM的Drupal网站, 需要的东西似乎已经都到手了, 那就开始我们的安卓Demo吧!
首先安装需要的库
1, 首先把你的SDK更新到最新。
2, 到你的安卓SDK文件打开“SDK Manager”,然后在“Extras”选项下安装“Google Cloud Messaging for Android Library”。
3, 安装完后在你的“Andoird_SDK_Folder\extras\google\gcm\gcm-client\dist”目录下会生成一个“gcm.jar”文件。你需要添加这个jar文件到你的Android项目。
创建我们的安卓项目
1, 创建一个SDK版本大于API 8的项目。
2, 打开“AndroidManifest.xml”文件,以下是让你的项目支持GCM的需要权限。
- INTERNET – 让你的设备允许链接英特网
- ACCESS_NETWORK_STATE – 要访问网络状态(用来检测网络状态)
- GET_ACCOUNTS – 要求GCM需要谷歌账户
- WAKE_LOCK – 当设备睡眠的时候允许唤醒你的设备
- VIBRATE – 当接受到推送消息时允许震动提醒
3, 创建一个类记录GCM配置和我们的服务器注册地址等信息。
- 如:创建一个整理应用常量的类Constants.java
4,创建一个类包含以下方法。
- 该方法用来把用户信息注册到我们的服务器(网站)。
static void register(array[] userInfo, gcm regId)
该方法用来在我们的服务器(网站)上注销设备。
static void unregister(gcm regId)
POST数据到服务器的方法(POST动作封装)
private static void post(array[] data)
在这里这一步用DrupalCloud中对象替代, 当然你也可以自己花时间来实现它。
5,关键一步:创建一个类来处理所有GCM相关服务函数。
-
public class GCMIntentService extends GCMBaseIntentService {
-
当设备成功地在GCM上注册后回调
@Override
protected void onRegistered() { …… }
当有新的消息发送给设备时回调
@Override
protected void onMessage() { …… }
当设备从GCM服务器上注销时回调
@Override
protected void onUnregistered() { …… }
接受错误处理
@Override
public void onError() { …… }
生成一个推送提醒
private static void generateNotification() { …… }
}
6,在“res -> layout”目录下创建你的Xml 文件。
7,创建你的“Activity”来触发你的注册流程。
8,最后创建一个类来处理你的推送。
- 接受你的注册Activity发送的用户信息,并将它们存储。
- 检查设备是否已经有了GCM 注册ID,如果没有,通过调用GCMRegistrar.register(this, SENDER_ID) 方法在GCM服务器上注册
- 当设备获取推送提醒消息时候会调用private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver()方法。你可以简单地把提醒消息显示在界面上。有时候你可能需要对提醒消息采取一些更复杂的动作,这取决于你的APP。(比如: 把它存到SQLite 数据库中)
其它你可能想做的事情
1,播放自定义通知的声音。
2,接收新通知时振动装置。
3,接收新通知时唤醒装置。
4,同时推送给N多人。
5,找个人互相推送。
6,……
7,……
到这里制作你的Demo的步骤已经介绍完了,这份教程/介绍也许没有过多的插图,过多的代码。 也许让你读完以后一头雾水,但希望读者能够认真的斟酌每一条,然后通过努力找到自己的答案,最终实现出自己的Demo,而不是被我提供的Demo(附件)所局限。或许在你最终成功的道路上它只帮助了你2到3成,但是希望在你第二次第三次第十次搞GCM开发的时候,你能感受到这篇教程的好,我更希望它被看成是一份笔记。
相关下载地址:
https://github.com/Jerenus/C2DeMo
https://github.com/INsReady/DrupalCloud
Comments
大汉憨憨 replied on Permalink
Google Cloud Message服务在国内好用吗
Google Cloud Message服务在国内好用吗,感觉现在做开发,google相关的服务在大陆都不好用,都需要使用本地替代方案,比如地图等
Add new comment