__CAPGO_KEEP_0__ - Live Updates für __CAPGO_KEEP_1__-Apps

Aktualisierungsverhalten

Wenn Sie eine Aktualisierung für Ihre Capgo-Anwendung freigeben, möchten Sie wahrscheinlich, dass Ihre Benutzer diese Aktualisierung so schnell wie möglich erhalten. Aber Sie möchten auch nicht, dass ihre Erfahrung durch das Zwingen eines Downloads oder das Neustarten der Anwendung in der Mitte einer Sitzung gestört wird.

Capgo-Aktualisierungsverhalten ist darauf ausgelegt, einen Ausgleich zwischen der schnellen Bereitstellung von Aktualisierungen und der Minimierung von Störungen für Ihre Benutzer zu finden.

Standardmäßig verhält sich Capgo wie folgt bei der Aktualisierung der App:

  1. Wenn die App in den Vordergrund bewegt wird, überprüft das Capgo-Plugin, ob eine neue Aktualisierung verfügbar ist. Während die App geöffnet bleibt, überprüft es auch wiederholt auf einem durch Capgo gesteuerten Timer, der standardmäßig alle periodCheckDelay 10 Minuten

  2. aktualisiert wird.

  3. Once the download completes, Capgo waits for the user to background the app.

  4. Sobald der Download abgeschlossen ist, wartet __CAPGO_KEEP_0__ auf den Zeitpunkt, an dem der Benutzer die App in den Hintergrund bewegt.

Wenn der Benutzer die App zum nächsten Mal in den Vordergrund bringt, läuft die aktualisierte Version.

Die Anwendung von Updates auf einem Hintergrund- oder Beendigungsevent hat einige Schlüsselfunktionen für die Benutzererfahrung:

  • Benutzer werden nicht durch Update-Anfragen unterbrochen oder gezwungen, während einer Sitzung herunterzuladen.

  • Updates werden nahtlos zwischen Sitzungen angewendet, sodass die Erfahrung beim Starten der App immer frisch ist.

  • Sie können Updates häufig liefern, ohne sich um Störungen bei aktiven Benutzern zu kümmern.

Der Hauptnachteil ist, dass, wenn ein Benutzer die App in den Hintergrund schickt und sie schnell wieder startet, er möglicherweise alle nicht gespeicherten Zustände verliert, da das Update zwischen diesen Aktionen angewendet wurde.

Um dies zu mildern, empfehlen wir:

  • Zurücksetzen des Zustands häufig und ihn sanft wiederherzustellen, wenn die App wieder aufgerufen wird.

  • Vermeiden Sie sehr häufige Updates, die große Teile des App-Zustands ändern.

  • Berücksichtigen Sie die Anpassung der Update-Verhaltensweise für sensitive Flüsse (siehe unten).

In manchen Fällen möchten Sie möglicherweise mehr Kontrolle darüber haben, wann genau ein Update angewendet wird. Zum Beispiel möchten Sie sicherstellen, dass ein Benutzer einen laufenden Workflow abschließt, bevor ein Update installiert wird, oder Sie möchten ein App-Update mit einem serverseitigen Änderungen abstimmen.

Capgo bietet eine setDelay Funktion, die Ihnen ermöglicht, Bedingungen festzulegen, die erfüllt sein müssen, bevor ein Update installiert wird:

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

Dieses Beispiel würde das Installieren eines Updates aufschieben, bis nach dem 1. Juni 2023 UND die App mindestens 60 Sekunden im Hintergrund läuft.

Die verfügbaren Verzögerungsbedingungen sind:

  • date: Warten Sie, bis nach einer bestimmten Datum/Uhrzeit, um das Update anzuwenden.
  • background: Warten Sie eine Mindestdauer nachdem die App im Hintergrund läuft, um das Update anzuwenden.
  • nativeVersion: Warten Sie, bis eine native Binärdatei mit einer Mindestversion installiert ist, bevor Sie das Update anwenden.
  • kill: Warten Sie, bis das nächste App-Töten-Ereignis auftritt, um das Update anzuwenden.

Sie können diese Bedingungen mischen und anpassen, um genau zu bestimmen, wann ein Update installiert wird.

Für kritische Updates oder Apps mit sehr einfachem Zustand möchten Sie möglicherweise ein Update anwenden, sobald es heruntergeladen ist, ohne auf ein Hintergrund- oder Kill-Ereignis zu warten. Capgo unterstützt dies über die autoUpdate policy in your Capacitor config.

autoUpdate wird in Ihrem capacitor.config.ts Datei, nicht in JavaScript code. Es unterstützt diese Werte:

  • false oder 'off': Deaktivieren Sie automatische Aktualisierungsprüfungen
  • true oder 'atBackground' (Standard): Überprüfen und herunterladen Sie automatisch bei jeder Vordergrundprüfung, dann wird die Aktualisierung bei der nächsten Übergabe in den Hintergrund angewendet
  • 'atInstall': Wenden Sie die Aktualisierung sofort nur nach einer frischen Installation oder einem Update im native App-Store an; andernfalls verwenden Sie "atBackground" Verhalten
  • 'onLaunch': Wenden Sie die Aktualisierung sofort nur, wenn die App von einem beendetem Zustand in den Vordergrund gebracht wird (kalter Start). Nach dieser ersten Überprüfung fällt das Verhalten zurück zu "atBackground" Verhalten
  • 'always': Überprüfen Sie bei jeder Vordergrundübergabe und wenden Sie die Aktualisierung sofort an, wenn eine Aktualisierung verfügbar ist
  • 'onlyDownload': Überprüfen und herunterladen Sie automatisch, emit updateAvailable, und stelle sicher, dass das nächste Bundle oder eine Aktualisierung nicht automatisch angewendet wird

Siehe Testen Sie native Builds ohne Live-Updates für die Sicherheitsvorkehrungen für die native-Version, die Kanalrichtlinie und die CI-Konfiguration

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;

Mit autoUpdate: 'always', Capgo Überprüfungen bei jeder Vordergrundübergabe und der sofortigen Anwendung einer Aktualisierung sobald der Download während dieser Überprüfung abgeschlossen ist, selbst wenn der Benutzer aktiv mit der App arbeitet. Periodische Überprüfungen, die durch periodCheckDelay gesteuert werden, können das gleiche sofortige Anwenden-Verhalten auslösen, während die App geöffnet bleibt.

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

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

Wenn Sie möchten, dass Capgo Updates automatisch überprüft und herunterlädt, aber sie nie automatisch anwendet, verwenden Sie autoUpdate: 'onlyDownload':

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

In diesem Modus sendet der Plugin updateAvailable nach dem Download eines Bundles. Ihre App kann dann entscheiden, wann sie CapacitorUpdater.set() oder ihr eigenes Update-Fenster zeigt.

Um Instant-Apply-Modi einfacher zu verwenden, bietet Capgo eine autoSplashscreen Option, die die automatische Versteckung der Splashscreen für Sie übernimmt (verfügbar seit Version 7.6.0):

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

Wenn autoSplashscreen aktiviert ist:

  • Der Plugin versteckt den Splashscreen automatisch, wenn ein Update angewendet wird
  • Der Plugin versteckt den Splashscreen automatisch, wenn kein Update erforderlich ist
  • Sie müssen sich nicht manuell auf appReady ereignisse oder aufrufen SplashScreen.hide()

Wenn Sie eine manuelle Kontrolle bevorzugen oder eine benutzerdefinierte Logik benötigen, können Sie das autoSplashscreen und handeln Sie es selbst:

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

Der appReady ereignet sich, sobald die App fertig ist, sich zu initialisieren und alle anstehenden Updates anzuwenden. Dies ist der Zeitpunkt, an dem es sicher ist, Ihre App-UI anzuzeigen, da es sicherstellt, dass der Benutzer die neueste Version sieht.

Zusätzlich zum Handhaben des appReady Bei einem Ereignis empfehlen wir, die keepUrlPathAfterReload Konfigurationsoption auf true zu setzen. Wenn Sie bei einem Instant-Apply-Modus verwenden, wird die aktuelle URL-Pfad beim Neuladen des Apps aufgrund einer Aktualisierung beibehalten, wodurch der Benutzerposition im App erhalten bleibt und die Orientierung verbessert wird.

Wenn Sie das appReady Ereignis nicht behandeln und keepUrlPathAfterReload bei einem Instant-Apply-Modus setzen, sehen Sie den Benutzer möglicherweise einen veralteten App-Version, werden auf die ursprüngliche Route zurückgeführt oder sehen einen Flicker, während die Aktualisierung angewendet wird.

Ein Instant-Apply-Modus kann nützlich sein, um kritische Fehler oder Sicherheitspatches bereitzustellen, aber es gibt einige Kompromisse:

  • Der Benutzer sieht möglicherweise einen kurzen Flicker oder einen Ladezustand, während die Aktualisierung angewendet wird, wenn Sie das Splashscreen nicht ordnungsgemäß mit autoSplashscreen oder manuellem appReady Ereignishandling behandeln.
  • Wenn die Aktualisierung die App-Zustand oder die Benutzeroberfläche ändert, sieht der Benutzer möglicherweise einen störenden Wechsel in der Mitte einer Sitzung.
  • Der Benutzerposition im App kann verloren gehen, wenn keepUrlPathAfterReload kann nicht festgelegt werden, was potenziell verwirrend sein kann.
  • Sie müssen sorgfältig mit dem Speichern und Wiederherstellen des Zustands umgehen, um eine glatte Übergabe zu gewährleisten.

Wenn Sie Instant Apply aktivieren, empfehlen wir:

  • Verwenden Sie autoSplashscreen: true für die einfachste Konfiguration, oder handeln Sie das appReady Event manuell, wenn Sie eine benutzerdefinierte Logik benötigen.
  • Setzen Sie keepUrlPathAfterReload auf true um den Benutzerstandort im App zu erhalten.
  • Speichern und Wiederherstellen des App-Zustands, wie erforderlich, um Benutzerfortschritte zu vermeiden.
  • Ihre App-Update-Verhalten gründlich testen, um sicherzustellen, dass es keine jarring Übergänge, verlorene Zustände oder verwirrende Standortänderungen gibt.

In den meisten Fällen bietet die Standard-Update-Verhaltensweise den besten Kompromiss zwischen schnellem Update-Delivery und minimalem Störungspotenzial. Aber für Apps mit spezifischen Bedürfnissen bietet Capgo die Flexibilität, die Anwendung von Updates zu steuern und wie sie angewendet werden.

Wenn Sie Update Verhalten für die Planung von Live-Update-Delivery verwenden, verbinden Sie es mit Capgo Live Updates für den Produktworkflow in Capgo Live Updates, Übersicht für die Implementierungsdetails in Übersicht, Funktionen für die Implementierungsdetails in Funktionen, Update Arten für die Implementierungsdetails in Update-Typen und Einstieg für die Implementierungsdetails in Einstieg.