Back to top

Add new comment

Android Cloud To Device Messaging --基于DrupalCloud的Android项目演示

不久前在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