Android 應用整合 LeanCloud 推送服務
推送服務是喚醒使用者繼續使用App的一種手段,今天花時間瞭解LeanCloud的推送服務,讀了下大概的文件,再結合Demo把推送服務整合到了西源坊的App中。羅列了一下開發的流程以及遇到的一些問題總結:
第一步:註冊賬號,建立應用
註冊賬號是普通的註冊流程,應用是對接App的一個LeanCloud應用,建立好應用之後會分配 AppID,AppKey,這兩個引數非常重要,App端需要根據這兩個引數來對接到LeanCloud中建立的應用。
第二步:配置App開發環境
官方文件寫的還是比較清晰,基本能讀懂,這樣我們就可以對著文件來一步步設定。
-
配置專案的build.gradle,主要是設定LeanCloud的maven倉庫地址
buildscript { repositories { jcenter() maven { url "http://mvn.leancloud.cn/nexus/content/repositories/releases" } } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' } } allprojects { repositories { jcenter() maven { url "http://mvn.leancloud.cn/nexus/content/repositories/releases" } } }
新增的兩行是leancloud的maven地址。這裡有可能遇到的一個問題: >>>“Gradle: resolve dependancies '_debugCompile'” or 'detachedConfiguration1'`,
Android Studio一直處於掛起的狀態,始終停在_debugCompile的狀態。有可能是Android Studio的問題,也有可能是網路問題,但具體問題不祥。解決的辦法之一是:把Gradle設定為work offline模式。
2. 配置app目錄下的build.gradle,主要是指定LeanCloud所必須的依賴包:android { //為了解決部分第三方庫重複打包了META-INF的問題 packagingOptions{ exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } lintOptions { abortOnError false } } dependencies { //avoscloud-sdk 為 LeanCloud基礎包 compile 'cn.leancloud.android:avoscloud-sdk:v3.+' //avoscloud-push 與 Java-WebSocket 為推送與IM需要的包 compile 'cn.leancloud.android:avoscloud-push:[email protected]' compile 'cn.leancloud.android:Java-WebSocket:1.2.0-leancloud' //avoscloud-statistics 為 LeanCloud 統計包 compile 'cn.leancloud.android:avoscloud-statistics:[email protected]' }
需要注意的是:推送服務也必須包含Java-WebSocket包,否則推送的時候會出現類似ClassNotFoundError的錯誤。
基本的配置就完成了,接下來就是更新APP中的程式碼。
第三步:配置AndroidManifest
-
確保app設定了基本網路相關的許可權
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.VIBRATE" />
-
指定PushService
-
-
在
<application>
中指定AVBroadcastReceiver,App能在關閉的情況下也可以收到推送<receiver android:name="com.avos.avoscloud.AVBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver>
第四步:初始化LeanCloud資訊
在應用訪問 LeanCloud 之前,需要使用 AppID 和 AppKey 在程式碼中對 LeanCloud SDK 進行初始化。
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // 初始化應用資訊 AVOSCloud.initialize(this, "your app id", "your app key"); // 啟用崩潰錯誤統計 AVAnalytics.enableCrashReport(this.getApplicationContext(), true); AVOSCloud.setLastModifyEnabled(true); AVOSCloud.setDebugLogEnabled(true); }
第五步:儲存 Installation
Installation 是 LeanCloud中定義的一個和App所在的裝置關聯的一個類,它能唯一定位到具體的哪臺裝置。在App啟動的時候需要把Installation儲存到LeanCloud平臺。
AVInstallation.getCurrentInstallation().saveInBackground(new SaveCallback() { @Override public void done(AVException e) { String installationId = AVInstallation.getCurrentInstallation().getInstallationId(); } });
這段程式碼在應用啟動的時候呼叫,通常就是你的MainActivity,此外在它儲存到LeanCloud的時候,它還有一個回撥方法,這個方法能方便你用installationId做資料關聯。
第六步:啟動推送服務,設定預設開啟的Activity
PushService.setDefaultPushCallback(this, MainActivity.class);
到此為止,App端的工作已經完成,現在就可以在LeanCloud平臺手動傳送推送測試是否正常。你會看到應用啟動成功後,LeanCloud平臺會新增一條Installation記錄。
現在選擇線上傳送的推送方式來測試:
傳送成功後,app就收到了推送訊息:
接下來的任務如何通過API在服務端控制推送的業務邏輯,不過這是另外一個話題了,會另外開篇文章。
關注公眾號「Python之禪」(id:vttalk)獲取最新文章