无意中发现“知乎”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_LcPushDemo.tar.gz