接入 SDK 之後,您可以根據業務需求,設定升級白名單,使用 SDK 進行升級檢測、並提示使用者。
設定白名單
設定白名單使用者識別碼:
MPLogger.setUserId("您的白名單ID");
檢測新版本
快速檢測新版本,並彈框提示:
說明僅快速顯示升級彈框,不包含強制升級邏輯,若您需要強制升級,請使用自訂升級來進行實現。
MPUpgrade mMPUpgrade = new MPUpgrade(); mMPUpgrade.fastCheckNewVersion(activity, drawable);
快速檢測新版本,僅返回檢測結果:
MPUpgrade mMPUpgrade = new MPUpgrade(); // 同步方法,子線程中調用 int result = mMPUpgrade.fastCheckHasNewVersion(); if (result == UpgradeConstants.HAS_NEW_VERSION) { // 有新版本 } else if (result == UpgradeConstants.HAS_NO_NEW_VERSION) { // 沒有新版本 } else if (result == UpgradeConstants.HAS_SOME_ERROR) { // 錯誤 }
擷取升級詳細資料
調用 fastGetClientUpgradeRes
方法擷取更多詳細資料:
MPUpgrade mMPUpgrade = new MPUpgrade();
// 同步方法,子線程中調用
ClientUpgradeRes clientUpgradeRes = mMPUpgrade.fastGetClientUpgradeRes();
返回的樣本顯示新版本號碼、下載地址等資訊,其中部分參數含義如下:
downloadURL
:下載地址guideMemo
:升級資訊newestVersion
:最新版本resultStatus
:升級模式202 為單次提醒
204 為多次提醒
203/206 為強制更新
fileSize
:待下載的檔案大小
其它自訂檢測
更多定製,參考以下操作樣本:
實現
MPaaSCheckCallBack
介面,用於響應升級 SDK 發出的請求,如彈出提示框:MPUpgrade mMPUpgrade = new MPUpgrade(); mMPUpgrade.setUpgradeCallback(new MPaaSCheckVersionService.MPaaSCheckCallBack() { ......... });
調用
MPUpgrade.checkNewVersion
方法檢測升級資訊。MPUpgrade
內部封裝了MPaaSCheckVersionService
的調用;您也可以定製實現。有關MPaaSCheckVersionService
和MPaaSCheckCallBack
的介紹,請參見 API 說明。
自訂安裝包下載目錄(10.1.60 及以上版本支援)
配置如下:
File dir = getApplicationContext().getExternalFilesDir("自訂目錄");
MPUpgrade mpUpgrade = new MPUpgrade();
mpUpgrade.setDownloadPath(dir.getAbsolutePath());
同時在 file_path.xml
中添加以下配置:
// external-files-path 對應 getExternalFilesDir 的目錄
// 請使用與您自訂的目錄對應的元素,如果您不清楚該如何選擇,請搜尋“適配 File Provider”
<external-files-path
name="download"
path="自訂目錄" />
處理強制升級解析包失敗的問題
部分 rom 在強制升級後,會出現解析包失敗問題。發生該問題的原因是,在部分 rom 中,安裝包時會訪問相應的 App 進程。而強制升級會強制結束 App 進程,所以導致解析包失敗。雖然這種 rom 定製行為本身是不符合原生 Android 的行為,但您仍可以通過以下方式進行解決:設定 UpgradeForceExitCallback
,在 needForceExit
返回 false
即可。
實現回調。
public class UpgradeForceExitCallbackImpl implements UpgradeForceExitCallback { @Override public boolean needForceExit(boolean forceExitApp, MicroApplicationContext context) { // 返回 false,就不強制殺掉進程,不會有安裝包解析失敗問題;返回 true,需要對進程的退出進行處理,會走到下面 doForceExit 方法中。 return false; } @Override public void doForceExit(boolean forceExitApp, MicroApplicationContext context) { // 如果需要關閉進程,則需要上面 needForceExit 返回 true,然後在本方法內關閉進程。 } }
設定回調。
MPUpgrade mpUpgrade = new MPUpgrade(); mpUpgrade.setForceExitCallback(new UpgradeForceExitCallbackImpl());
重要使用同一
MPUpgrade
執行個體設定回調或請求升級。設定回調後可以避免解析包失敗問題,但升級組件將不再自動幫您殺進程。因此當使用者沒有點擊 安裝 而是返回到應用的時候,請您設定不可取消的彈框遮蓋層,以防止使用者繞過強制升級。