全部產品
Search
文件中心

Mobile Platform as a Service:進階指南

更新時間:Jul 27, 2024

接入 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 的調用;您也可以定製實現。有關 MPaaSCheckVersionServiceMPaaSCheckCallBack 的介紹,請參見 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 即可。

  1. 實現回調。

     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,然後在本方法內關閉進程。
         }
     }
  2. 設定回調。

     MPUpgrade mpUpgrade = new MPUpgrade();
     mpUpgrade.setForceExitCallback(new UpgradeForceExitCallbackImpl());
    重要
    • 使用同一 MPUpgrade 執行個體設定回調或請求升級。

    • 設定回調後可以避免解析包失敗問題,但升級組件將不再自動幫您殺進程。因此當使用者沒有點擊 安裝 而是返回到應用的時候,請您設定不可取消的彈框遮蓋層,以防止使用者繞過強制升級。