すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:オフラインパッケージの管理

最終更新日:Jan 23, 2026

オフラインパッケージの管理には、H5 アプリケーションのプリセット、更新、ダウンロード、インストール、削除が含まれます。その他の操作には、グローバルリソースパッケージの使用、アプリケーション情報の取得、セキュリティ署名の検証などがあります。

前提条件

  • 統合設定を完了していること。詳細については、「SDK の追加」をご参照ください。

  • オフラインパッケージを生成していること。詳細については、「オフラインパッケージの生成」をご参照ください。

H5 アプリケーションのプリセット

通常、H5 アプリケーションを初めて開くとき、オフラインパッケージのダウンロードが完了していない場合があります。この場合、アプリケーションはフォールバック URL を使用して開きます。

H5 アプリケーションのプリセットは、クライアントでリリースされたインストールパッケージに利用可能な H5 アプリケーションをプリインストールするのと似ています。ユーザーがプリインストール済みのアプリケーションを初めて開くと、アプリケーションはオフラインパッケージのリソースを直接使用できます。これにより、ユーザーエクスペリエンスが向上します。

説明

コア H5 アプリケーションのみをプリセットしてください。頻繁に使用されないアプリケーションのプリセットは避けてください。

H5 アプリケーションをプリセットするには、次の手順を実行します。

  1. H5 アプリケーションの公開コンソールから、プリセットする H5 アプリケーションの .json 設定ファイルとオフラインパッケージをダウンロードします。

  2. プロジェクトの asset フォルダに .json ファイルとオフラインパッケージを追加します。

  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:指定された ID のオフラインパッケージがグローバルリソースパッケージであることを H5 コンテナーに通知します。この ID を設定しない場合、ビルトインオフラインパッケージが含まれていても有効になりません。

  • getH5PresetPkg:ビルトインのグローバルリソースパッケージのパスとバージョンを指定します。H5 コンテナーは、指定されたアセットリソースフォルダからリソースパッケージをロードします。ただし、サーバーサイドでより新しいバージョンが見つかった場合、古いバージョンのビルトインパッケージはロードされません。前述の 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";

    // プリセットパッケージのアセットフォルダ。
    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 アプリケーションのダウンロード

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 です。