日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在客戶端預(yù)置 Android 小程序

傳統(tǒng)的小程序技術(shù)容易受到網(wǎng)絡(luò)環(huán)境影響,當(dāng)網(wǎng)絡(luò)質(zhì)量不佳時可能拉取不到小程序包。通過預(yù)置小程序即可規(guī)避該問題。本文介紹了預(yù)置小程序的原理和預(yù)置小程序的實現(xiàn)過程。

什么是預(yù)置小程序

預(yù)置小程序是指將小程序的渲染、邏輯、配置等靜態(tài)資源打包在一個壓縮包內(nèi),客戶端預(yù)先下載小程序包到本地,并直接從本地加載資源的過程。預(yù)置小程序可以最大程度地擺脫網(wǎng)絡(luò)環(huán)境對 mPaaS 小程序頁面的影響。使用預(yù)置包可帶來以下優(yōu)勢:

  • 提升用戶體驗 通過預(yù)置包的方式把頁面內(nèi)靜態(tài)資源嵌入到應(yīng)用中并隨應(yīng)用一起發(fā)布,可使用戶第一次打開應(yīng)用時無需依賴網(wǎng)絡(luò)環(huán)境去下載資源,可直接開始使用。

  • 實現(xiàn)動態(tài)更新 在推出新版本或緊急發(fā)布時,可以在小程序 IDE 中進行迭代開發(fā),通過 mPaaS 控制臺發(fā)布,客戶端中集成的小程序 SDK 會自動將小程序更新到最新的版本。這種發(fā)布無需通過應(yīng)用商店審核,可以讓用戶及早接收到更新。

結(jié)構(gòu)及使用

本文從以下方面介紹了預(yù)置小程序:

  • 小程序預(yù)置包的結(jié)構(gòu)

  • 小程序預(yù)置包的使用過程

小程序預(yù)置包的結(jié)構(gòu)

小程序預(yù)置包是一個 .amr 格式的壓縮文件,將后綴 .amr 改為 .zip 并解壓縮后,可以看到其中包含的 HTML 資源和 JavaScript 代碼等。待小程序容器加載后,這些資源和代碼能在 UC 內(nèi)核渲染。

以 Android 系統(tǒng)為例,下面顯示了一般資源包的目錄結(jié)構(gòu):

  • 一級目錄:一般為資源包的 ID,如 2020121620201216_1.0.1.0.zip。

  • 二級目錄及往后即為業(yè)務(wù)自定義的資源文件。并設(shè)定當(dāng)前預(yù)置包默認(rèn)打開的主入口文件,如 /index.html

小程序預(yù)置包的使用過程

使用小程序預(yù)置包的過程可以分為以下三個步驟:

  1. 請求包信息。 即從服務(wù)端請求小程序包,并將小程序包信息存儲到本地數(shù)據(jù)庫的過程。包信息包含了小程序包的下載地址、小程序包版本號等。

  2. 下載小程序包。 把小程序包從服務(wù)端下載到手機。

  3. 安裝小程序包。 下載目錄,拷貝到手機安裝目錄。

前提條件

操作步驟

  1. 預(yù)置小程序包。

    1. 在 mPaaS 控制臺發(fā)布小程序包并下載 AMR 文件和配置文件。

    2. 將下載到的 AMR 文件和配置文件放置在 mPaaS 項目的 assets 目錄下。

    3. 在工程中添加預(yù)置代碼,以在應(yīng)用啟動時調(diào)用預(yù)置代碼安裝應(yīng)用。預(yù)置代碼示例如下:

      new Thread(new Runnable(){
      @Override
      public void run(){
       MPNebula.loadofflineNebula(jsonFileName: "h5_json.json",
                                 new MPNebulaOfflineInfo(offLineFileName:"2020121620201216_1.0.1.0.amr",
                                                        addId:"2020121620201216",
                                                        version:"1.0.1.0"));
      }
      }).start();
      說明

      • 此方法為阻塞調(diào)用,請勿在主線程上調(diào)用內(nèi)置預(yù)置包方法。

      • 此方法僅能調(diào)用一次。若多次調(diào)用,僅第一次調(diào)用有效。所以需要一次性傳入所有需預(yù)置包信息。

      • 如果內(nèi)置多個 AMR 包,需要確保文件已存在;如不存在,會造成其他內(nèi)置預(yù)置包失敗。

  2. 啟動小程序。啟動小程序的示例代碼如下。

     /**
     * 啟動小程序
     *
     * @param appId 小程序id
     */
     public static void startApp(String appId);
  3. 更新小程序。 默認(rèn)情況下,每次打開應(yīng)用,小程序 SDK 都會嘗試檢查是否有可更新的版本。出于減少服務(wù)端壓力的考慮,該檢查有時間間隔限制,默認(rèn)為 30 分鐘。如果想立即檢查最新可用版本,可調(diào)用下方的代碼來請求更新。一般情況下,可以在應(yīng)用啟動或者用戶登錄后調(diào)用。

    MPNebula.updateAllApp(new MpaasNebulaUpdateCallback(){
     @Override
     public void onResult(final boolean success, final boolean isLimit) {
         super.onResult(success, isLimit);
         runOnUiThread(new Runnable() {
             @Override
             public void run() {
                 AUToast.makeToast(NebulaAppActivity.this,
                         success ? R.string.update_success : R.string.update_failure, 2000).show();
             }
         });
     }
    });
  4. 校驗安全簽名。 小程序具有簽名校驗機制,防止惡意程序篡改下載到設(shè)備的小程序包。通過調(diào)用 MPNebula 接口設(shè)置驗簽參數(shù)即可開啟此機制。如果您使用的基線是 10.1.60 或以上版本,需要額外開啟容器配置,詳情參見 H5 容器配置。

    說明

    • 請在第一次打開小程序包前調(diào)用 MPNebula 接口,否則將會導(dǎo)致公鑰初始化失敗。關(guān)于公鑰與私鑰,請參見 配置小程序包 > 密鑰管理。

    • 無論客戶端是否開啟簽名校驗,在被判斷為 root 的手機上都會強制進行簽名校驗。

    /**
    * @param publicKey 驗簽公鑰
    */
    public static void enableAppVerification(final String publicKey)
  5. 刪除本地小程序。 Nebula 提供了刪除本地應(yīng)用信息的接口。當(dāng)本地應(yīng)用信息被刪除后,再次打開應(yīng)用時會重新請求服務(wù)端下載、更新本地小程序的信息。

    public class MPNebula {
     // appId 為小程序的應(yīng)用 ID
     public static boolean deleteAppInfo(String appId);
    }
    說明

    此 API 在 10.1.68 系列和 10.1.60 系列支持的最低基線版本分別為 10.1.68.8 和 10.1.60.14 。