之前用蒲公英更新的時候遇到過一些坑,導緻花了不少時間,現記錄下來,便于自己和他人有更容易的認識和運用
蒲公英資料位址:https://www.pgyer.com/doc/view/new_sdk_android_guide
我使用的是Android Studio aar配置
一、配置
(1)project 的build.gradle下添加
allprojects {
repositories {
google()
jcenter()
maven { url "https://raw.githubusercontent.com/Pgyer/mvn_repo_pgyer/master" }
}
}
(2)model 的build.gradle下添加
implementation 'com.pgyersdk:sdk:3.0.5'
(3)AndroidManifest.xml清單檔案中添權重限和aar配置
權限:
<!-- 必選-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 擷取網絡狀态 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 網絡通信-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 擷取裝置資訊 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 擷取MAC位址-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 讀寫sdcard,storage等等 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 允許程式錄制音頻 -->
<uses-permission android:name="android.permission.GET_TASKS"/>
<!-- 可選-->
<uses-permission android:name="android.permission.READ_LOGS"
tools:ignore="ProtectedPermissions" /> <!-- 擷取logcat日志 -->
aar配置添加在application中,和activity同級,APPID需要上傳APP到蒲公英上,系統自動配置設定。是以需要先打包上傳APP,你才有APPID:
<meta-data
android:name="PGYER_APPID"
android:value="你的APPID" >
</meta-data>
二、使用
(1)申請權限
使用APP更新需要有WRITE_EXTERNAL_STORAGE權限,6.0以上需要動态申請,不然會一直提示更新失敗
具體參考我另一篇:https://blog.csdn.net/qq_26446715/article/details/95482706
(2)實作版本檢測和更新
/** 新版本 **/
new PgyUpdateManager.Builder()
.setForced(true) //設定是否強制提示更新,非自定義回調更新接口此方法有用
.setUserCanRetry(false) //失敗後是否提示重新下載下傳,非自定義下載下傳 apk 回調此方法有用
.setDeleteHistroyApk(false) // 檢查更新前是否删除本地曆史 Apk, 預設為true
.setUpdateManagerListener(new UpdateManagerListener() {
@Override
public void onNoUpdateAvailable() {
//沒有更新是回調此方法
Log.d("pgyer", "there is no new version");
}
@Override
public void onUpdateAvailable(AppBean appBean) {
//有更新回調此方法
Log.d("pgyer", "there is new version can update"
+ "new versionCode is " + appBean.getVersionCode());
//調用以下方法,DownloadFileListener 才有效;
//如果完全使用自己的下載下傳方法,不需要設定DownloadFileListener
PgyUpdateManager.downLoadApk(appBean.getDownloadURL());
}
@Override
public void checkUpdateFailed(Exception e) {
//更新檢測失敗回調
//更新拒絕(應用被下架,過期,不在安裝有效期,下載下傳次數用盡)以及無網絡情況會調用此接口
Log.e("pgyer", "check update failed ", e);
}
})
//注意 :
//下載下傳方法調用 PgyUpdateManager.downLoadApk(appBean.getDownloadURL()); 此回調才有效
//此方法是友善使用者自己實作下載下傳進度和狀态的 UI 提供的回調
//想要使用蒲公英的預設下載下傳進度的UI則不設定此方法
.setDownloadFileListener(new DownloadFileListener() {
@Override
public void downloadFailed() {
//下載下傳失敗
Log.e("pgyer", "download apk failed");
}
@Override
public void downloadSuccessful(Uri uri) {
Log.e("pgyer", "download apk success");
// 使用蒲公英提供的安裝方法提示使用者 安裝apk
PgyUpdateManager.installApk(uri);
}
@Override
public void onProgressUpdate(Integer... integers) {
//下載下傳的進度
Log.e("pgyer", "update download apk progress" + integers[0]);
}})
.register();
the end!