コンテンツへスキップ

自動アップデート

このドキュメントでは、独自の自動アップデートサーバーを実行する方法を説明します。

バンドルがHTTPSで提供され、サーバーがアプリがアップデートをダウンロードできるように適切なCORSヘッダーを持っていることを確認してください。 例: https://myserver.com/app/updates/updates.json

バンドルの提供に慣れていない場合は、Capgo Cloudを試すか、こちらの例をご覧ください:

capacitor.config.jsonupdateUrlを追加します。

{
"plugins": {
"CapacitorUpdater": {
"updateUrl": "https://myserver.com/app/updates/updates.json",
}
}
}

プラグインは、アプリが開くたびに、以下のボディでAPIにPOST呼び出しを行います:

interface AppInfos {
"platform": "ios" | "android",
"device_id": "UUID_of_device_unique_by_install",
"app_id": "APPID_FROM_CAPACITOR_CONFIG",
"custom_id": "your_custom_id_set_on_runtime",
"plugin_version": "PLUGIN_VERSION",
"version_build": "VERSION_NUMBER_FROM_NATIVE_CODE",
"version_code": "VERSION_CODE_FROM_NATIVE_CODE",
"version_name": "LAST_DOWNLOADER_VERSION" | "builtin"
"version_os": "VERSION_OF_SYSTEM_OS",
"is_emulator": boolean,
"is_prod": boolean,
}

サーバーAPIは、アップデートが必要な場合、capacitor-updaterプラグインにJSONで応答する必要があります。このデータで:

{
"version": "1.2.3",
"url": "https://myserver.com/app/updates/my-new-app-2.0.0.zip",
"checksum": "sha256_checksum_of_bundle"
}

自動アップデートモードでは、サーバーはバージョンを比較し、正しいものを返す必要があります。URLキーが存在する場合、プラグインはダウンロードプロセスを開始します。

「message」と「error」キーを追加すると、バージョンは設定されず、代わりにログにメッセージが表示されます。

versionキーはsemver形式である必要があります。

zipはルートにindex.htmlファイルを持つか、ルートにindex.htmlを含む1つのフォルダーのみを持つ必要があります。

CLIのコマンドを使用してバンドルをzipできます:

サーバーから提供するファイルでバンドルを作成する
npx @capgo/cli bundle zip --path [/path/to/my/bundle]

重要: バンドルzipファイルを作成するには、Capgo CLIを使用する必要があります。Capgoプラグインは、公式CLIツールを使用した場合にのみ保証される特定のzip形式と構造を必要とします。標準のzipユーティリティでは、互換性のないアーカイブが作成される可能性があります。

バンドルのチェックサムを生成するには、--jsonフラグを使用してCapgo CLI zipコマンドを使用します:

チェックサム情報付きでバンドルを作成
npx @capgo/cli bundle zip [appId] --json

このコマンドは:

  • Capgoプラグインと互換性のある適切にフォーマットされたzipファイルを作成します
  • 整合性検証のためのSHA256チェックサムを生成します
  • バンドル情報をJSON形式で出力します

出力例:

{
"version": "1.2.3",
"checksum": "a1b2c3d4e5f6789...",
"size": 1234567
}

この出力のchecksum値をAPI応答で使用して、プラグインがインストール前にバンドルの整合性を検証できるようにします。