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

管理離線包

離線包的管理操作包括:預置 H5 應用、利用全局資源包、更新 H5 應用、下載 H5 應用、安裝 H5 應用、獲取應用信息、校驗安全簽名以及刪除本地應用。

前置條件

  • 您已完成接入配置。具體的操作步驟,查看 添加 SDK

  • 您已經生成離線包。具體的操作步驟,查看 生成離線包

預置 H5 應用

通常情況下,第一次打開 H5 應用時,離線包可能未完成下載。此時,需要通過使用 fallback URL 的方式打開應用。

預置 H5 應用相當于在客戶端發布的安裝包中預先安裝可用的 H5 應用。當用戶第一次打開預安裝應用時,可直接使用離線包資源,提高用戶體驗。

說明

建議您只預裝核心 H5 應用,避免預置了使用率不高的應用。

預置 H5 應用需要完成以下步驟:

  1. 從 H5 應用發布后臺下載 H5 應用配置的 .json 文件以及需要預置的離線包。

  2. .json 文件和離線包添加到工程的 asset 目錄下。

  3. 在應用啟動時,調用預置代碼安裝應用,示例代碼如下:

    MPNebula.loadOfflineNebula("h5_json.json", new MPNebulaOfflineInfo("90000000_1.0.0.6.amr", "90000000", "1.0.0.6"));
    說明
    • 此方法為阻塞調用,請不要在主線程上調用內置離線包方法。

    • 此方法僅能調用一次,若多次調用,僅第一次調用有效。所以需要一次性傳入所有需預置的離線包信息。

    • 如果內置多個 amr 包,要確保文件已存在,如不存在,會造成其他內置離線包失敗。

利用全局資源包

Nebula 全局資源包解決多個 H5 應用使用同一資源產生的冗余問題。如 React 應用使用 ReactJS 框架代碼。您可以將公共資源放入全局資源包,以降低 H5 應用體積。

通常情況下,項目需預置全局資源包,后續更新依然可以通過 H5 應用后臺下發。

下方的示例代碼指定應用 ID (appId) 為 66666692 的離線包作為全局資源包使用,并預置 assets/nebulaPreset/66666692 離線包,其中:

  • getCommonResourceAppList:用于告知 H5 容器指定 ID 的離線包將作為全局資源包使用。如果您沒有配置此 ID,即使內置該離線包,也不會生效。

  • getH5PresetPkg:用于指定內置全局資源包的路徑和版本。H5 容器會從指定的 asset 資源目錄加載資源包。不過如果服務端發現更高的版本,該低版本內置包將不會被加載。另外,您也可以使用上文提及的 loadOffLineNebula 方法來預置全局資源包,此種情況下,您無需在此方法中配置內置離線包的路徑和版本。

    說明

    該方法只適用于 H5 全局資源包。

  • getTinyCommonApp:僅用于返回小程序的框架資源包 ID,如果您的全局資源包僅被 H5 使用,請不要在此方法中寫入該公共資源包 ID。

參考實現類示例代碼:

public class H5AppCenterPresetProviderImpl implements H5AppCenterPresetProvider {
    private static final String TAG = "H5AppCenterPresetProviderImpl";

    // 業務的公共資源包,盡量避開666666開頭
    private static final String COMMON_BIZ_APP = "xxxxxxxx";

    // 小程序專用資源包,業務勿動
    private static final String TINY_COMMON_APP = "66666692";

    // 預置包的 asset 目錄
    private final static String NEBULA_APPS_PRE_INSTALL = "nebulaPreset" + File.separator;

    // 預置包集合
    private static final Map<String, H5PresetInfo> NEBULA_LOCAL_PACKAGE_APP_IDS = new HashMap();

    static {

        H5PresetInfo h5PresetInfo2 = new H5PresetInfo();
        // 內置目錄的文件名稱
        h5PresetInfo2.appId = TINY_COMMON_APP;
        h5PresetInfo2.version = "1.0.0.0";
        h5PresetInfo2.downloadUrl = "";

        NEBULA_LOCAL_PACKAGE_APP_IDS.put(TINY_COMMON_APP, h5PresetInfo2);

    }

    @Override
    public Set<String> getCommonResourceAppList() {
        Set<String> appIdList = new HashSet<String>();
        appIdList.add(getTinyCommonApp());
        appIdList.add(COMMON_BIZ_APP);
        return appIdList;
    }

    @Override
    public H5PresetPkg getH5PresetPkg() {
        H5PresetPkg h5PresetPkg = new H5PresetPkg();
        h5PresetPkg.setPreSetInfo(NEBULA_LOCAL_PACKAGE_APP_IDS);
        h5PresetPkg.setPresetPath(NEBULA_APPS_PRE_INSTALL);
        return h5PresetPkg;
    }

    @Override
    public Set<String> getEnableDegradeApp() {
        return null;
    }

    @Override
    public String getTinyCommonApp() {
        return TINY_COMMON_APP;
    }

    @Override
    public InputStream getPresetAppInfo() {
        return null;
    }

    @Override
    public InputStream getPresetAppInfoObject() {
        return null;
    }
}

然后在應用啟動時調用:

H5Utils.getH5ProviderManager().setProvider(H5AppCenterPresetProvider.class.getName(), new H5AppCenterPresetProviderImpl());

更新 H5 應用

默認情況下,每次打開 H5 應用,Nebula 都會嘗試檢查是否有可更新的版本。出于服務端壓力考慮,該檢查有時間間隔限制,默認為 30 分鐘。如果想立即檢查最新的可用版本,可以調用下方的代碼來請求更新。一般情況下,可以在應用啟動或者用戶登錄后調用。

MPNebula.updateAllApp(new MpaasNebulaUpdateCallback(){
    @Override
    public void onResult(final boolean success, final boolean isLimit, String detailCode) {
        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();
            }
        });
    }
});

下載 H5 應用

MPNebula 提供了手動下載 H5 應用的接口:

    /**
     * 下載離線包
     *
     * @param appId                       離線包 id
     * @param mpaasNebulaDownloadCallback 下載回調
     */
    public static void downloadApp(final String appId, final MpaasNebulaDownloadCallback mpaasNebulaDownloadCallback)

安裝 H5 應用

MPNebula 提供了手動安裝 H5 應用的接口:

    /**
     * 安裝離線包
     *
     * @param appId                      離線包 id
     * @param mpaasNebulaInstallCallback 安裝回調
     */
    public static void installApp(final String appId, final MpaasNebulaInstallCallback mpaasNebulaInstallCallback)

獲取應用信息

調用 H5AppProvider 的方法以獲取 H5 應用的相關信息:

H5AppProvider provider = H5Utils.getProvider(H5AppProvider.class.getName());
AppInfo appInfo = provider.getAppInfo("10000000");                 //獲取應用配置
boolean isInstalled = provider.isInstalled("10000000", "1.0.0.0"); //某版本應用是否已經安裝
boolean isAvailable = provider.isAvailable("10000000", "1.0.0.0"); //某版本應用離線包是否已經下載完成

校驗安全簽名

Nebula 具有離線包簽名校驗機制,以防止惡意程序篡改下載到設備的離線包。通過調用 MPNebula 接口設置驗簽參數即可開啟此機制。如果您使用的基線是 10.1.60 或以上版本,需要額外開啟容器配置,詳情參見 H5 容器配置

  • 請在第一次打開離線包前調用 MPNebula 接口,否則將會導致公鑰初始化失敗。關于公鑰與私鑰,參見 配置離線包 > 密鑰管理

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

      /**
       * @param publicKey 驗簽公鑰
       */
      public static void enableAppVerification(final String publicKey)

刪除本地應用

Nebula 提供了刪除本地應用信息的接口。當本地應用信息被刪除后,再次打開應用時會重新請求服務端下載更新本地應用信息。

public class MPNebula {
    // appId 為離線包或小程序的應用 ID
    public static boolean deleteAppInfo(String appId);
}
說明

此 API 支持的最低基線版本分別為 10.1.68.8 和 10.1.60.14。