コンテンツにスキップ

アップデートの挙動

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

Capgoのアップデートの動作は、ユーザーにアップデートを早く提供することと、ユーザーの体験を中断しないことを両方のバランスを取るように設計されています。

デフォルトでは、Capgoはアプリのアップデートをどのように扱うかを以下のとおり説明します。

  1. アプリがフォアグラウンドに移動したとき、Capgo プラグインは新しいアップデートが利用可能かどうかを確認します。アプリが開いている間、再帰的なタイマーを制御することで、Capgo プラグインは10分ごとに再度確認します。 periodCheckDelay アップデートが見つかった場合、ユーザーが現在のアプリのバージョンを使用している間、バックグラウンドでダウンロードされます。

  2. (デフォルト10分)

  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日以降にアップデートを遅延実行する例です。アプリがバックグラウンドで実行されている場合、少なくとも60秒間待ちます。

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

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

条件を組み合わせて、正確にアップデートの適用時刻を制御できます。

重要なアップデートや、状態が非常に単純なアプリの場合、ダウンロードが完了した直ちにアップデートを適用したい場合があります。Capgoは、バックグラウンドまたはキルイベントを待たずにアップデートを適用する機能をサポートしています。 autoUpdate Capacitorの設定ファイル内で「policy」を使用してください。

autoUpdate is set in your capacitor.config.ts file, not in JavaScript code. It supports these values:

  • false or 'off'Page/area: Capacitor live-update alternatives comparison page. Role: Long marketing or legal paragraph. Seen in: page alternatives.astro. Preserve Capgo product/brand and developer terms exactly. Message key `alternatives_cta_questions` (Alternatives CTA Questions). | Page/area: Appflow comparison / migration marketing copy. Role: Long marketing or legal paragraph. Seen in: page ionic-appflow.astro. Preserve Capgo product/brand and developer terms exactly. Message key `appflow_cta_questions` (Appflow CTA Questions). | Page/area: Capawesome comparison page. Role: Long marketing or legal paragraph. Seen in: page capwesome.astro. Preserve Capgo product/brand and developer terms exactly. Message key `capwesome_cta_questions` (Capwesome CTA Questions). | Page/area: Consulting services page. Role: Section subtitle or tagline. Seen in: page consulting.astro. Preserve Capgo product/brand and developer terms exactly. Message key `consulting_faq_subtitle` (Consulting FAQ Subtitle). | Page/area: Appflow comparison / migration marketing copy. Role: Short UI label or navigation item. Seen in: page ionic-appflow.astro, page ionic-enterprise-plugins.astro, page solutions/ionic-enterprise-plugins.astro. Message key `appflow_plugins_or` (Appflow Plugins Or).
  • true : Disable automatic update checks 'atBackground' or
  • 'atInstall': 最初のインストールまたはネイティブアプリストアの更新後のみ即時適用; それ以外は "atBackground" behavior
  • 'onLaunch': アプリがキルされた状態からフォアグラウンドに戻されたときにのみ即時適用します。最初のチェック後は "atBackground" behavior
  • 'always': フォアグラウンドのトランジションごとにチェックし、更新が利用可能な場合に即時適用
  • 'onlyDownload': 自動チェックとダウンロード、 updateAvailable, そして、次のバンドルを設定したり、自動的に更新を適用したりしない

Live Updatesの無効化

Live Updatesの無効化

を参照してください Live Updatesの無効化 のネイティブバージョン、チャンネルポリシー、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;

間隔を制御する autoUpdate: 'always'、Capgo が前景に移行するたびにチェックし、ダウンロードが完了したときに即座にアップデートを適用します。ユーザーがアプリを使用している場合でも、即時適用モードはチェックの完了時にアップデートを適用します。 periodCheckDelay 、__CAPGO_KEEP_0__ が制御する周期的なチェックは、アプリが開いている間も即時適用モードをトリガーできます。

注記することに注意してください。 autoUpdate はネイティブの設定であるため、即時適用モードでは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 プラグインはアップデートが適用されたときにスプラッシュスクリーンを自動的に非表示にします

  • プラグインはアップデートが必要ないときにスプラッシュスクリーンを自動的に非表示にします
  • イベントリスナを手動で設定することなく
  • __CAPGO_KEEP_0__は appReady スプラッシュスクリーンを非表示にする必要がありません SplashScreen.hide()

セクション「手動スプラッシュスクリーン処理」

セクション titled “Manual Splashscreen Handling”

自動更新を手動で制御したい場合は、または独自のロジックが必要な場合は、 autoSplashscreen と自分で処理する:

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

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

In addition to handling the appReady イベントの処理に加えて、 keepUrlPathAfterReload 設定オプションを true と設定することをお勧めします。

If you don’t handle the appReady event and set keepUrlPathAfterReload when using an instant apply mode, the user may briefly see a stale version of the app, be taken back to the initial route, or see a flicker as the update is applied.

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

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

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

  • を使用するか、カスタムロジックが必要な場合は手動で autoSplashscreen: true イベントをハンドリングすることをお勧めします。 appReady __CAPGO_KEEP_0__
  • 設定 keepUrlPathAfterReloadtrue to preserve the user’s location in the app.
  • アプリ内でのユーザーの位置を維持するために、必要に応じてアプリの状態を保存して復元する
  • 必要な場合にアプリの状態を保存して復元することで、ユーザーの進捗を失うことなく

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.

ほとんどの場合、デフォルトの更新動作は、更新を迅速に提供し、混乱を最小限に抑えるバランスがとれるが、アプリの特定のニーズに応じて、__CAPGO_KEEP_0__ を使用することで、更新の適用時期や方法をカスタマイズすることができる

更新動作から続ける

更新動作から続けるセクション Capgoを使用している場合 更新動作 を使用して、ライブアップデートの配信を計画する場合、Capgo Live Updatesと接続する for the product workflow in Capgo Live Updates, 概要 概要の実装詳細については 機能 機能の実装詳細については アップデートの種類 アップデートの種類の実装詳細については、 はじめに はじめにの実装詳細については