Android: 通过LeanCloud推送消息

无意中发现“知乎”App使用了LeanCloud服务,之后就知道了LeanCoud服务可以推送消息。之前也一直好奇在Android系统中,如何进行消息的推送,今天正好可以看看这个功能是如何实现的。不知道推送消息的实时性怎么样,在Android系统进入睡眠状态的时候,能否接收到推送的消息?

  • 准备工作

在LeanCloud官网上注册账号:

– https://leancloud.cn/

下载开发Android应用所需要的SDK(当前最新版本为v3.13.10):

– https://leancloud.cn/docs/sdk_down.html

– https://github.com/leancloud/leancloud-sdk/tree/master/android/release-v3.13.10

下载Demo App:

– https://github.com/leancloud/android-push-demo

相关的文档:

– https://leancloud.cn/docs/android_push_guide.html

  • 实战

由于官网的Demo App使用gradle编译,而我这里直接在Android-5.1.1_r15项目中编译,需要做少量的修改。

我们创建一个名为LcPushDemo的应用:

- 在官网上先创建这个应用,以便得到我们开发Android应用时所需要的App ID与App Key。

- 创建Android应用,直接copy Demo App,可以看到Demo App已经有11个月没有更新,看起来官方所提供的API很稳定。

LcPushDemo应用的目录层次结构如下:

LcPushDemo
+-- Android.mk
+-- AndroidManifest.xml
+-- libs
|   +-- Java-WebSocket-1.3.1-leancloud.jar
|   +-- avoscloud-push-v3.13.10.jar
|   +-- avoscloud-sdk-v3.13.10.jar
|   +-- avoscloud-statistics-v3.13.10.jar
|   +-- fastjson-1.1.39.jar
|   +-- httpmime-4.2.4.jar
|   +-- okhttp-2.6.0-leancloud.jar
|   +-- okio-1.6.0-leancloud.jar
|   `-- protobuf-java-2.6.1.jar
+-- res
|   +-- drawable/*
|   +-- layout/*
|   `-- values/*
`-- src
    `-- com
        `-- brobwind
            `-- lcpushdemo
                +-- Callback1.java
                +-- Callback2.java
                +-- CustomReceiver.java
                +-- PushDemo.java
                `-- PushDemoApp.java

NOTE:

1. App中所需要的Java Library可以从这里下载:https://github.com/leancloud/leancloud-sdk/tree/master/android/release-v3.13.10

2. 不知道是不是SDK中大量使用Java反射机制的原因,有些Java library没有导入也能正常编译通过,但运行时会报各种类没找到的错误。在下载SDK的时候也没有提示需要使用到额外的Java library。官方为什么不将这些相关的Java library一块打包。

3. 修改src/com/brobwind/lcpushdemo/PushDemoApp.java,使用我们之前申请到的App ID与App Key。

相关的界面如下(Android 5.1.1_r15 @ Nexus 4):

2016_05_10_LeanCloud_push_demo

从网页推送消息:

2016_05_10_LeanCloud_push_message

相关的代码可以从这里下载:2016_05_10_LcPushDemo.tar.gz

发表评论

电子邮件地址不会被公开。 必填项已用*标注