Zum Inhalt springen

Update-Verhalten

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 herunterzuladen oder das Anwenden der Anwendung in der Mitte einer Sitzung zu warten, gestört wird.

Capgo-Aktualisierungsverhalten ist darauf ausgelegt, einen Ausgleich zwischen der schnellen Bereitstellung von Aktualisierungen und der Minimierung der Störung Ihrer Benutzer zu finden.

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

  1. Wenn die Anwendung in den Vordergrund bewegt wird, überprüft das Capgo-Plugin, ob eine neue Aktualisierung verfügbar ist. Während die Anwendung geöffnet bleibt, überprüft es auch wiederholt auf einem durch Capgo kontrollierten Timer (Standard 10 Minuten). periodCheckDelay Wenn eine Aktualisierung gefunden wird, wird sie im Hintergrund heruntergeladen, während der Benutzer weiterhin die aktuelle Version der Anwendung verwendet.

  2. Einmal der Download abgeschlossen ist, wartet __CAPGO_KEEP_0__ auf den Zeitpunkt, an dem der Benutzer die Anwendung in den Hintergrund bewegt.

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

  4. Default Update Flow

This flow ensures that users are always running the latest version of your app, without ever being interrupted by update prompts or forced to wait for downloads.

Wie Vorteile bringt diese Vorgehensweise?

Sektion mit dem Titel ‘Warum diese Vorgehensweise?’

Bei der Anwendung von Updates bei einem Hintergrund- oder Beendigungsevent gibt es einige wichtige Vorteile für die Benutzererfahrung:

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

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

  • Sie können Updates häufig liefern, ohne sich um die Unterbrechung aktiver Benutzer zu kümmern.

Der Hauptnachteil ist, dass ein Benutzer, wenn er die App in den Hintergrund legt und schnell wieder aktiviert, möglicherweise alle nicht gespeicherten Daten verliert, da das Update zwischen diesen Aktionen angewendet wurde.

To vermeiden, empfehlen wir:

  • Zurücksetzen Sie den Zustand häufig und setzen ihn sanft wieder, wenn die App wieder aufgenommen wird.

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

  • Für sensitive Flüsse das Updateverhalten anpassen (siehe unten).

In einigen Fällen mögen Sie mehr Kontrolle darüber haben, wann genau ein Update angewendet wird. Zum Beispiel möchten Sie sicherstellen, dass ein Benutzer einen in Arbeit befindlichen Flow abschließt, bevor er aktualisiert wird, oder Sie möchten ein App-Update mit einem serverseitigen Änderung abstimmen.

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

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

Die verfügbaren Verzögerungsbedingungen sind:

]}

  • date: Warten Sie, bis nach einem bestimmten Datum/Zeitpunkt, um die Aktualisierung anzuwenden.
  • background: Warten Sie eine Mindestdauer nachdem die App im Hintergrund geschlossen wurde, um die Aktualisierung anzuwenden.
  • nativeVersion: Warten Sie, bis eine native Binärdatei mit einer Mindestversion installiert ist, bevor die Aktualisierung angewendet wird.
  • kill: Warten Sie, bis das nächste App-Töten-Ereignis auftritt, um die Aktualisierung anzuwenden.

Sie können diese Bedingungen mischen und anpassen, um genau zu kontrollieren, wann eine Aktualisierung installiert wird.

Für kritische Updates oder Apps mit sehr einfachem Zustand möchten Sie möglicherweise eine Aktualisierung anwenden, sobald sie heruntergeladen ist, ohne auf ein Hintergrund- oder Töten-Ereignis zu warten. Capgo unterstützt dies über die autoUpdate Richtlinie in Ihrer Capacitor-Konfiguration.

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

  • false oder 'off': Automatische Aktualisierungsprüfungen deaktivieren
  • true oder 'atBackground' (Standard): Jedes Mal auf Vordergrund prüfen, dann automatisch herunterladen und bei Hintergrundaktivität anwenden
  • 'atInstall': Sofort anwenden, nur nach einer frischen Installation oder einem Update aus dem Native App Store; andernfalls "atBackground" Verhalten
  • 'onLaunch': Sofort anwenden, nur wenn die App aus einem getöteten Zustand (kalter Start) in den Vordergrund gebracht wird. Nach dieser ersten Überprüfung fällt man dann zurück auf "atBackground" Verhalten
  • 'always': Überprüfen Sie bei jeder Vordergrund-Übergang und wenden Sie die Änderungen sofort an, sobald ein Update verfügbar ist
  • 'onlyDownload': Überprüfen und automatisch herunterladen, ausgeben updateAvailable, und setzen Sie nie das nächste Bundle oder wenden Sie eine automatische Aktualisierung an
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üft bei jeder Vordergrundübergabe und setzt eine Aktualisierung sofort an, 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 steuerbar sind, können das gleiche sofortige Anwenden-Verhalten auslösen, während die App geöffnet bleibt.

Hinweis, dass autoUpdate als native Konfiguration ist, erfordern Instant-Apply-Modi einige zusätzliche Behandlung in Ihrem JavaScript code.

Wenn Sie möchten, dass Capgo automatisch Überprüfungen und Downloads durchführt, aber nie automatisch anwendet, verwenden Sie autoUpdate: 'onlyDownload':

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

In dieser Modus sendet der Plugin updateAvailable nachdem ein Bundle heruntergeladen wurde. Ihre App kann dann entscheiden, wann sie CapacitorUpdater.set() oder ihr eigenes Update-Fenster anzeigt.

Um Instant-Apply-Modi einfacher zu verwenden, bietet Capgo eine autoSplashscreen Option, die das automatische Verstecken des Splashscreens 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 automatisch das Splashscreen, wenn ein Update angewendet wird
  • Der Plugin versteckt sich automatisch die Splash-Screen, wenn keine Aktualisierung 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 die 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 einmal, wenn die App abgeschlossen hat, 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 ereignisses empfehlen wir, die keepUrlPathAfterReload Wenn Sie eine Konfigurationsoption verwenden true wenn Sie einen sofortigen Anwendungsmodus verwenden. Dies bewahrt den aktuellen URL-Pfad, wenn die App aufgrund einer Aktualisierung neu geladen wird, und hilft dabei, die Position des Benutzers in der App zu erhalten und die Orientierung zu reduzieren.

Wenn Sie nicht das appReady -Ereignis behandeln und keepUrlPathAfterReload wenn Sie einen sofortigen Anwendungsmodus verwenden, sieht der Benutzer möglicherweise einen veralteten Zustand der App, wird auf die ursprüngliche Route zurückgeführt oder sieht einen Flicker, während die Aktualisierung angewendet wird.

Die Verwendung eines sofortigen Anwendungsmodus kann nützlich sein, um 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 nicht das Splashscreen (entweder mit autoSplashscreen oder manuellem appReady Ereignishandling) ordnungsgemäß behandeln.
  • Wenn die Aktualisierung den Zustand der App oder die Benutzeroberfläche ändert, sieht der Benutzer möglicherweise einen störenden Wechsel in der Mitte einer Sitzung.
  • Die Position des Benutzers in der App kann verloren gehen, wenn keepUrlPathAfterReload nicht gesetzt ist, was sie möglicherweise verwirrt.
  • Sie müssen das Speichern und Wiederherstellen des Zustands sorgfältig handhaben, um eine glatte Übergabe zu gewährleisten.

Wenn Sie Instant Apply aktivieren, empfehlen wir:

  • Verwenden Sie autoSplashscreen: true für die einfachste Konfiguration oder handhaben Sie den appReady Event manuell, wenn Sie eine benutzerdefinierte Logik benötigen.
  • Setzen Sie keepUrlPathAfterReload auf true um den Benutzerstand im App zu speichern.
  • Speichern und Wiederherstellen Sie den App-Zustand, wie erforderlich, um Benutzerfortschritte zu vermeiden.
  • Testen Sie Ihr App-Updateverhalten gründlich, um sicherzustellen, dass es keine jarring Übergänge, verlorene Zustände oder verwirrende Standortänderungen gibt.

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__ die Flexibilität, die Anwendung von Updates zu customisieren, wenn und wie sie angewendet werden.

Abschnitt mit dem Titel “Weitermachen von Updateverhalten”

Wenn Sie "Update Behavior" verwenden, um die Live-Update-Übermittlung zu planen, verbinden Sie es mit Update Behavior um es mit Capgo Live Updates für das Produktworkflow in Capgo Live Updates, Übersicht für die Implementierungsdetails in Übersicht, Features für die Implementierungsdetails in Features, Update-Typen für die Implementierungsdetails in Update-Typen und Anfängerkonfiguration für die Implementierungsdetails in Anfängerkonfiguration.