コンテンツにジャンプ

アップデートの挙動

あなたのCapgoアプリにアップデートをリリースしたとき、ユーザーがそのアップデートを受け取るのをできるだけ早くしたいと思うでしょう。ただし、ダウンロードやアプリの再起動を強制してユーザーの体験を中断したくないこともあるでしょう。

Capgoのアップデート動作は、ユーザー体験を最小限に抑えながらもアップデートをできるだけ早く提供するバランスを取ったものです。

デフォルトアップデートフロー

デフォルトアップデートフロー

デフォルトでは、Capgoはアプリのアップデートを次のように処理します。

  1. アプリが前景に移動したとき、Capgo プラグインは新しいアップデートが利用可能かどうかを確認します。アプリが開いている間、再帰的なタイマーを制御することで定期的に再度確認します。 periodCheckDelay (デフォルト10分)。

  2. アップデートが見つかった場合、バックグラウンドでダウンロードされ、ユーザーは現在のアプリのバージョンを使用しながらアップデートを受け取ります。

  3. ダウンロードが完了したら、Capgo はアプリをバックグラウンドにします。

  4. ユーザーがアプリを再度フロントグラウンドに戻すと、最新バージョンで実行されます。

このフローにより、ユーザーは常に最新バージョンのアプリを実行し、更新のポップアップやダウンロードの待機を強制されることなく、いつでもアプリを起動できます。

なぜこのアプローチを採用するのか?

セクション “なぜこのアプローチを採用するのか?”

バックグラウンドまたはキルイベントで更新を適用することは、ユーザー体験にいくつかの重要な利点があります:

  • ユーザーは更新のポップアップやダウンロードの待機に中断されず、セッションの途中でダウンロードを強制されることなく、更新が適用されます。

  • 更新はセッションの間、スムーズに適用されます。アプリを起動すると、常に新鮮な体験が得られます。

  • 頻繁にアップデートを配信することができます。アクティブなユーザーに影響を与える心配はありません。

主な欠点は、ユーザーがアプリをバックグラウンドにし、すぐにアプリを再開すると、更新が適用された間に保存されていない状態が失われる可能性があることです。

この問題を緩和するために、以下のことをお勧めします。

  • アプリが再開されたときに状態を優雅に復元するように、状態を頻繁に保存すること。

  • アプリの状態の大部分を変更する頻繁な更新を避けること。

  • 敏感なフローをカスタマイズすることを検討すること (以下を参照)。

アップデートの適用時期をカスタマイズする

「アップデートの適用時期をカスタマイズする」セクション

ある場合、更新が適用される時期をより制御できるようにしたいと思うかもしれません。たとえば、ユーザーが進行中のフローを完了するように保証したい、またはアプリの更新をサーバー側の変更と調整したい。

Capgoは、更新がインストールされる前に満たす必要がある条件を指定できる関数を提供します。 setDelay コピー

import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setMultiDelay({
delayConditions: [
{
kind: 'date',
value: '2023-06-01T00:00:00.000Z',
},
{
kind: 'background',
value: '60000',
},
],
});

2023年6月1日以降にアプリがバックグラウンドで実行されている場合にのみアップデートをインストールします。

可能な遅延条件は次のとおりです。

  • date: 指定された日時以降にアップデートを適用するまで待機します。
  • background: アプリがバックグラウンドで実行されている場合に一定時間待機してからアップデートを適用します。
  • nativeVersion: 最低バージョンのネイティブバイナリがインストールされている場合にのみアップデートを適用します。
  • kill: アプリの次の終了イベントまでアップデートを適用します。

これらの条件を組み合わせて、どの時点でアップデートがインストールされるかを厳密に制御できます。

重要なアップデートや、状態が非常に単純なアプリの場合、ダウンロードが完了した直後にアップデートを適用したい場合は、バックグラウンドまたはキルイベントを待たずに適用することができます。Capgoは、この機能を提供するために autoUpdate Capacitorの設定ファイルに

autoUpdate ファイル capacitor.config.ts JavaScript code ではなく、

  • false または 'off'Capacitorライブアップデートの代替
  • true : 自動更新のチェックを無効にする 'atBackground' または
  • 'atInstall': 最初のインストールまたはネイティブアプリストアの更新後のみ、即座に適用します。そうでない場合は "atBackground" behavior
  • 'onLaunch': アプリがキルされた状態からフォアグラウンドに戻されたときにのみ、即座に適用します。最初のチェック後は "atBackground" behavior
  • 'always': フォアグラウンドのトランジションごとにチェックし、更新が利用可能な場合に即座に適用します
  • 'onlyDownload': チェックし、自動でダウンロードし、 updateAvailable, and never set the next bundle or apply an update automatically

, そして、次のバンドルを設定したり、自動で更新を適用したりしません

ネイティブビルドのテストにライブアップデートを使用しない

セクションのタイトル “ライブアップデートを使用しないネイティブビルドのテスト” を参照してください ライブアップデートを使用しないネイティブビルドのテストについての詳細情報です。ネイティブバージョン、チャンネルポリシー、CI構成のセーフガードについても説明しています。

import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'always', // or 'atInstall' for updates only on app install/update
autoSplashscreen: true,
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false, // Required when using instant apply with autoSplashscreen
},
},
};
export default config;

、__CAPGO_KEEP_0__ が前面に表示されるたびにチェックし、ダウンロードが完了したときに即座に更新を適用することができます。ユーザーがアプリを使用している場合でも、即時適用モードはダウンロードが完了したときに適用されます。 autoUpdate: 'always'、Capgo が前面に表示されるたびにチェックし、ダウンロードが完了したときに即座に更新を適用することができます。ユーザーがアプリを使用している場合でも、即時適用モードはダウンロードが完了したときに適用されます。 periodCheckDelay 、__CAPGO_KEEP_0__ のJavaScriptで追加のハンドリングが必要です。

注意 autoUpdate is a native configuration, instant apply modes require some additional handling in your JavaScript code.

の設定 (上記の例を参照) にして、自動的にスプラッシュ画面が隠れないようにする必要があります。これにより、更新プロセスが完了した後、スプラッシュ画面が隠されるタイミングを完全に制御できます。

自動適用せずにダウンロード

If you want Capgo to check and download updates automatically but never apply them automatically, use autoUpdate: 'onlyDownload':

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'onlyDownload',
},
},
};

クリップボードにコピー updateAvailable このモードでは、プラグインは CapacitorUpdater.set() バンドルがダウンロードされた後、

を呼び出すか、または自分のアップデートの表示を促すメッセージを表示します。

「自動スプラッシュスクリーン管理」

インスタント適用モードを簡単に使用できるようにするために、Capgoは autoSplashscreen バージョン 7.6.0 以降に導入されたオプションで、スプラッシュスクリーンを自動的に非表示にすることができます。

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'always', // or 'atInstall'
autoSplashscreen: true, // Automatically hide splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false,
},
},
};

有効の場合: autoSplashscreen プラグインはアップデートが適用されたときにスプラッシュスクリーンを自動的に非表示にする

  • プラグインはアップデートが必要ないときにスプラッシュスクリーンを自動的に非表示にする
  • イベントの
  • リスニングや appReady 「手動スプラッシュスクリーン管理」 SplashScreen.hide()

「手動スプラッシュスクリーン管理」

「手動スプラッシュスクリーン管理」

自動更新を停止したい場合は、または独自のロジックが必要な場合は、 autoSplashscreen 自分で管理することができます:

import { CapacitorUpdater } from '@capgo/capacitor-updater';
import { SplashScreen } from '@capacitor/splash-screen';
CapacitorUpdater.addListener('appReady', () => {
// Hide splash screen
SplashScreen.hide();
});
CapacitorUpdater.notifyAppReady();

イベントは、 appReady アプリが初期化と、保留中の更新を適用した後、1度だけ発生します。この時点で、最新バージョンを表示することができるため、ユーザーは最新バージョンのアプリのUIを表示できます。

更新ハンドリングの他に、 appReady イベントを処理するだけでなく、 keepUrlPathAfterReload 設定オプションを true インスタント適用モードを使用する場合に設定することをお勧めします。この設定は、アプリが更新された後、URLパスを保持することで、ユーザーがアプリの位置を維持し、混乱を減らすのに役立ちます。

イベントを処理せずに appReady インスタント適用モードを使用する場合に keepUrlPathAfterReload を設定しないと、ユーザーは、更新が適用されたときに古いバージョンのアプリを一瞬見る、初期ルートに戻される、またはアプリの更新が適用されたときにフリッカーが見られる可能性があります。

即時適用モードを使用すると、重要なバグ修正またはセキュリティパッチを迅速に配信できるようになりますが、代償としていくつかのトレードオフが伴います。

  • ユーザーは、更新が適用される際にスプラッシュスクリーンを適切に処理していない場合、短いフリッカーまたはローディング状態を経験する可能性があります (どちらか) autoSplashscreen または appReady イベントハンドリング)。
  • 更新がアプリの状態またはUIを変更した場合、ユーザーはセッションの途中で突然の変更を経験する可能性があります。
  • アプリの位置を保持していない場合、ユーザーの位置が失われる可能性があり、これが混乱を招く可能性があります。 keepUrlPathAfterReload 保存と復元の状態を慎重に処理する必要があります。
  • 即時適用を有効にした場合、以下のことをお勧めします。

最もシンプルな設定の場合は

  • を使用するか、カスタムロジックが必要な場合は autoSplashscreen: true イベントハンドリングを手動で行う appReady event if you need custom logic.
  • 設定 keepUrlPathAfterReloadtrue to preserve the user’s location in the app.
  • Saving and restoring the app state as needed to avoid losing user progress.
  • Thoroughly testing your app’s update behavior to ensure there are no jarring transitions, lost state, or disorienting location changes.

In most cases, the default update behavior provides the best balance of delivering updates quickly and minimizing disruption. But for apps with specific needs, Capgo provides the flexibility to customize when and how updates are applied.

If you are using Live UpdatesCapgo Live Updates for the product workflow in Capgo Live Updates, 概要 概要の実装詳細については 機能 機能の実装詳細については アップデートの種類 アップデートの種類の実装詳細については、 はじめに はじめにの実装詳細については