__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, auf eine Aktualisierung zu warten oder das Anwendungsprogramm während einer Sitzung neu zu starten, gestört wird.

Capgo-Aktualisierungsverhalten

Abschnitt mit dem Titel „__CAPGO_KEEP_0__-Aktualisierungsverhalten“

Standardmäßig verhält sich __CAPGO_KEEP_0__ bei Anwendungsaktualisierungen wie folgt:

Bei der Anwendungsstartprüfung überprüft das Capgo-Plugin, ob eine neue Aktualisierung verfügbar ist.

  1. On app launch, the Capgo plugin checks to see if a new update is available.

  2. Wenn ein Update gefunden wird, wird es im Hintergrund heruntergeladen, während der Benutzer weiterhin die aktuelle Version der App verwendet.

  3. Sobald der Download abgeschlossen ist, wartet Capgo auf den Benutzer, der entweder die App in den Hintergrund schickt oder sie vollständig beendet.

  4. Wenn der Benutzer das nächste Mal die App startet, läuft er die aktualisierte Version.

Diese Fluss stellt sicher, dass Benutzer immer die neueste Version Ihrer App ausführen, ohne dass sie durch Update-Anfragen oder durch Warten auf Downloads unterbrochen werden.

Die Anwendung von Updates bei einem Hintergrund- oder Beendigungsereignis hat einige wichtige Vorteile für die Benutzererfahrung:

  • Benutzer werden nicht durch Update-Anfragen oder durch Warten auf Downloads während einer Sitzung unterbrochen.

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

  • Sie können regelmäßig Updates bereitstellen, ohne sich um die Unterbrechung aktiver Benutzer zu kümmern.

Der Hauptnachteil ist, dass sich ein Benutzer im Hintergrund befindet und Ihr App schnell wieder aufnimmt, sie möglicherweise jede ungesicherte Zustand verlieren, da die Aktualisierung zwischen diesen Aktionen angewendet wurde.

Um dies zu mildern, empfehlen wir:

  • Zustände häufig speichern und ihn sanft wiederherstellen, wenn die App wieder aufgenommen wird.

  • Sehr häufige Updates vermeiden, die große Teile des App-Zustands ändern.

  • Kundenanpassungen für sensitive Flüsse berücksichtigen (siehe unten).

In einigen 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 in Arbeit befindlichen Fluss abschließt, bevor er aktualisiert wird, oder koordinieren Sie eine App-aktualisierung mit einer Serverseitig-Änderung.

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',
},
],
});

Diese Beispielszene würde das Installieren eines Updates bis nach dem 1. Juni 2023 und bis der App im Hintergrund für mindestens 60 Sekunden läuft, aufschieben.

Die verfügbaren Wartebedingungen sind:

  • date: Warten Sie, bis nach einer bestimmten Uhrzeit das Update angewendet wird.
  • 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 das Update angewendet wird.
  • 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 Aktualisierungen oder Apps mit sehr einfachem Zustand möchten Sie möglicherweise eine Aktualisierung so schnell wie möglich anwenden, ohne auf einen Hintergrund- oder Beendigungsevent zu warten. Capgo unterstützt dies über die directUpdate Konfigurationsoption.

directUpdate ist in Ihrem capacitor.config.ts Datei, nicht in JavaScript code. Es unterstützt drei Werte:

  • false (Standard): Führen keine direkten Updates durch (verwenden Sie die Standardverhalten: Herunterladen bei Start, setzen beim Hintergrundbetrieb)
  • 'atInstall': Direktes Update nur, wenn die App installiert, aktualisiert wurde, aus dem Store, ansonsten wie bei directUpdate = false
  • 'onLaunch': Direktes Update nur, wenn die App installiert, aktualisiert wurde, aus dem Store oder nach App-Beendigung, ansonsten wie bei directUpdate = false
  • 'always': Direktes Update in allen vorherigen Fällen (App installiert, aktualisiert aus dem Store, nach App-Beendigung oder App-Wiederaufnahme), nie wie bei directUpdate = false
  • true (veraltet): Gleichbedeutend mit 'always' für die Rückwärtskompatibilität
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: true,
directUpdate: 'always', // or 'atInstall' for updates only on app install/update
autoSplashscreen: true, // NEW: Automatically handle splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false, // Still required when using directUpdate
},
},
};
export default config;

Mit directUpdate aktiviert, wird Capgo sofort einen Update anwenden, sobald der Download während einer Update-Überprüfung abgeschlossen ist, selbst wenn der Benutzer aktiv mit der App arbeitet. Ohne periodische Überprüfung aktiviert, bedeutet dies, dass Updates nur angewendet werden, wenn die App startet oder aus dem Hintergrund wieder aufgenommen wird.

Beachten Sie, dass weil directUpdate eine native Konfiguration ist, erfordert sie einige zusätzliche Behandlung in Ihrem JavaScript code.

Abschnitt mit dem Titel “Automatische Splash-Screen-Verwaltung”

Um

einfacher zu bedienen, bietet __CAPGO_KEEP_0__ eine directUpdate easier to use, Capgo provides an autoSplashscreen Auf die Zwischenablage kopieren

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

aktiviert ist: autoSplashscreen Der Plugin versteckt die Splash-Screen automatisch, wenn ein Update angewendet wird

  • Abschnitt
  • Der Plugin versteckt sich automatisch die Splash-Screen, wenn keine Aktualisierung erforderlich ist
  • Sie müssen sich nicht manuell auf appReady oder aufrufen SplashScreen.hide()

Wenn Sie eine manuelle Kontrolle bevorzugen oder eine benutzerdefinierte Logik benötigen, können Sie die autoSplashscreen und handhaben 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 wird einmal ausgelöst, wenn die App fertig mit der Initialisierung und der Anwendung von möglichen Updates ist. 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 empfehlen wir, die keepUrlPathAfterReload Konfigurationsoption für true wenn Sie directUpdate. Dies bewahrt die aktuelle URL-Pfad, wenn die App aufgrund einer Aktualisierung neu geladen wird, was dabei hilft, die Position des Benutzers in der App zu erhalten und die Orientierung zu reduzieren.

Wenn Sie nicht das appReady ereignis behandeln und keepUrlPathAfterReload setzen, wenn Sie directUpdate, sehen Sie den Benutzer möglicherweise für einen kurzen Moment eine veraltete Version der App, werden Sie auf die ursprüngliche Route zurückgeführt oder sehen einen Flicker, während die Aktualisierung angewendet wird.

Mit directUpdate kann es sich lohnen, kritische Fehlerkorrekturen 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 Ereignis-Handling
  • Wenn die Aktualisierung den Anwendungsstatus oder die Benutzeroberfläche ändert, kann der Benutzer einen störenden Wechsel in der Mitte einer Sitzung sehen.
  • Die Position des Benutzers in der Anwendung kann verloren gehen, wenn keepUrlPathAfterReload nicht gesetzt ist, was sie verwirren könnte.
  • Sie müssen den Speicher und die Wiederherstellung des Status sorgfältig handhaben, um eine glatte Übergabe zu gewährleisten.

Wenn Sie directUpdate aktivieren, empfehlen wir:

  • Verwenden Sie autoSplashscreen: true für die einfachste Einrichtung oder handhaben Sie den appReady Event manuell, wenn Sie eine benutzerdefinierte Logik benötigen.
  • Setzen Sie keepUrlPathAfterReload auf true um die Position des Benutzers in der Anwendung zu speichern.
  • Das Anwendungsstate speichern und wiederherstellen, wie erforderlich, um Benutzerfortschritte zu vermeiden.
  • Ihre App-Update-Verhalten gründlich testen, um sicherzustellen, dass es keine jarring Übergänge, verlorene State 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, Updates anzuwenden, wenn und wie erforderlich.