Saltare al contenuto

Comportamento di Aggiornamento

Quando rilasciate un aggiornamento per il vostro Capgo app, probabilmente desiderate che i vostri utenti ricevano quell'aggiornamento il prima possibile. Ma non volete anche interrompere la loro esperienza facendo aspettare i vostri utenti per il download o richiedendo loro di riavviare l'applicazione in mezzo a una sessione.

Il comportamento di aggiornamento di Capgo è progettato per trovare un equilibrio tra l'invio degli aggiornamenti velocemente e la minimizzazione delle interruzioni per i tuoi utenti.

Di default, ecco come Capgo gestisce gli aggiornamenti dell'applicazione:

  1. Al lancio dell'applicazione, il plugin Capgo controlla se è disponibile un nuovo aggiornamento.

  2. Se viene trovato un aggiornamento, viene scaricato in background mentre l'utente continua ad utilizzare la versione corrente dell'applicazione.

  3. Una volta completato lo scarico, Capgo attende che l'utente chiuda l'applicazione o la uccida completamente.

  4. Quando l'utente riavvia l'applicazione, si troverà a utilizzare la versione aggiornata.

Questo flusso garantisce che gli utenti siano sempre in grado di utilizzare la versione più aggiornata della tua applicazione, senza mai essere interrotti da richieste di aggiornamento o costretti a attendere i download.

L'applicazione di aggiornamenti in background o evento di chiusura ha alcuni benefici chiave per l'esperienza utente:

  • Gli utenti non vengono interrotti da richieste di aggiornamento o costretti a attendere i download in mezzo a una sessione.

  • Gli aggiornamenti vengono applicati in modo trasparente tra le sessioni, quindi l'esperienza di avvio dell'app è sempre fresca.

  • Puoi distribuire aggiornamenti frequentemente senza preoccuparti di interrompere gli utenti attivi.

Il principale svantaggio è che se un utente chiude e riapre velocemente l'app, potrebbe perdere lo stato non salvato dal momento in cui l'aggiornamento è stato applicato tra quelle azioni.

Per mitigare questo, consigliamo:

  • Salvare lo stato frequentemente e ripristinarlo con grazia quando l'app si riavvia.

  • Evitare aggiornamenti molto frequenti che modificano grandi parti dello stato dell'app.

  • Considerare la personalizzazione del comportamento di aggiornamento per flussi sensibili (vedi di seguito).

Personalizzare quando gli aggiornamenti vengono applicati

Sezione intitolata “Personalizzare l'applicazione degli aggiornamenti”

In alcuni casi, potresti voler avere più controllo sulla data esatta in cui viene applicato l'aggiornamento. Ad esempio, potresti voler assicurarti che un utente completi un flusso in corso prima di aggiornare, o coordinare un aggiornamento dell'applicazione con un cambiamento server-side.

Capgo fornisce un setDelay funzione che ti consente di specificare le condizioni che devono essere soddisfatte prima dell'installazione dell'aggiornamento:

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

Questo esempio ritarderebbe l'installazione dell'aggiornamento fino a dopo il 1 giugno 2023 E l'applicazione è stata backgroundata per almeno 60 secondi.

Le condizioni di ritardo disponibili sono:

  • date: Attendere fino a una data/ora specifica per applicare l'aggiornamento.
  • background: Attendere un minimo di durata dopo che l'applicazione è stata backgroundata per applicare l'aggiornamento.
  • nativeVersion: Attendere l'installazione di un binario nativo con una versione minima prima di applicare l'aggiornamento.
  • kill: Attendere fino all'evento di uccisione dell'applicazione successivo per applicare l'aggiornamento.

Puoi mescolare e combinare queste condizioni per controllare con precisione quando viene installato l'aggiornamento.

Per gli aggiornamenti critici o le app con uno stato molto semplice, potresti voler applicare un aggiornamento non appena è stato scaricato, senza attendere un evento di background o di uccisione. Capgo supporta questo tramite la autoUpdate politica nella tua configurazione di Capacitor.

autoUpdate Copy to clipboard capacitor.config.ts file, non in JavaScript code. Supporta questi valori:

  • false o 'off': Disabilita l'aggiornamento automatico
  • true o 'atBackground' (di default): Scarica automaticamente e applica quando l'app si sposta in background
  • 'atInstall': Applica immediatamente solo dopo un installazione fresca o aggiornamento nativo dell'app, altrimenti utilizza il flusso di background
  • 'onLaunch': Applica immediatamente all'avvio dell'app, altrimenti utilizza il flusso di background dopo il controllo di avvio
  • 'always': Applica immediatamente ogni volta che esegue l'aggiornamento automatico
  • 'onlyDownload': Scarica automaticamente, emette updateAvailable, e non imposta mai il bundle successivo automaticamente
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;

Con autoUpdate: 'always', Capgo will immediately apply an update as soon as the download completes during an update check, even if the user is actively using the app. Without periodic checking enabled, this means updates will only be applied when the app starts or resumes from background.

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

Se desideri che Capgo controlli e scarichi gli aggiornamenti automaticamente, ma non li applichi mai automaticamente, utilizza autoUpdate: 'onlyDownload':

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

In questo modo, il plugin emette updateAvailable dopo il download di un pacchetto. La tua app può quindi decidere quando chiamare CapacitorUpdater.set() o mostrare il proprio prompt di aggiornamento.

Per rendere più facili da utilizzare i modi di applicazione istantanea, Capgo fornisce un autoSplashscreen opzione che gestisce automaticamente la nascita dello schermo di benvenuto per te (disponibile dalla versione 7.6.0):

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

Quando autoSplashscreen è abilitato:

  • Il plugin nasconde automaticamente lo schermo di benvenuto quando viene applicata un'aggiornamento
  • Il plugin nasconde automaticamente lo schermo di benvenuto quando non è necessario un aggiornamento
  • Non hai bisogno di ascoltare manualmente appReady eventi o chiamare SplashScreen.hide()

Se preferisci il controllo manuale o hai bisogno di logica personalizzata, puoi disabilitare autoSplashscreen e gestirlo da solo:

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

The event fires once the app has finished initializing and applying any pending updates. This is the punto in cui è sicuro mostrare l'interfaccia utente dell'app, poiché assicura che l'utente veda la versione più recente. appReady Inoltre, oltre a gestire l'evento, raccomandiamo di impostare l'opzione di configurazione su quando si utilizza un modalità di applicazione istantanea. Ciò preserva la cartella URL corrente quando l'app viene riavviata a causa di un aggiornamento, aiutando a mantenere la posizione dell'utente nell'app e riducendo la disorientamento.

Se non si gestisce l'evento e si imposta quando si utilizza una modalità di applicazione istantanea, l'utente potrebbe vedere brevemente una versione obsoleta dell'app, essere riportato alla route iniziale o vedere un lampo mentre l'aggiornamento viene applicato. appReady Utilizzare una modalità di applicazione istantanea può essere utile per fornire correzioni di bug critici o patch di sicurezza, ma comporta alcuni compromessi: keepUrlPathAfterReload L'utente potrebbe vedere un lampo o uno stato di caricamento breve mentre l'aggiornamento viene applicato se non si gestisce correttamente lo schermo di caricamento (in modo automatico con o manuale). true The event fires once the app has finished initializing and applying any pending updates. This is the punto in cui è sicuro mostrare l'interfaccia utente dell'app, poiché assicura che l'utente veda la versione più recente.

Inoltre, oltre a gestire l'evento, raccomandiamo di impostare l'opzione di configurazione su quando si utilizza un modalità di applicazione istantanea. Ciò preserva la cartella URL corrente quando l'app viene riavviata a causa di un aggiornamento, aiutando a mantenere la posizione dell'utente nell'app e riducendo la disorientamento. appReady Se non si gestisce l'evento e si imposta quando si utilizza una modalità di applicazione istantanea, l'utente potrebbe vedere brevemente una versione obsoleta dell'app, essere riportato alla route iniziale o vedere un lampo mentre l'aggiornamento viene applicato. keepUrlPathAfterReload Utilizzare una modalità di applicazione istantanea può essere utile per fornire correzioni di bug critici o patch di sicurezza, ma comporta alcuni compromessi:

L'utente potrebbe vedere un lampo o uno stato di caricamento breve mentre l'aggiornamento viene applicato se non si gestisce correttamente lo schermo di caricamento (in modo automatico con o manuale).

  • If you don’t handle the event and set the configuration option to 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 In addition to handling the event, we recommend setting the configuration option to when using an instant apply mode. This preserves the current URL path when the app is reloaded due to an update, helping maintain the user’s location in the app and reducing disorientation. appReady gestione degli eventi).
  • Se l'aggiornamento modifica lo stato dell'applicazione o l'interfaccia utente, l'utente potrebbe vedere un cambiamento inaspettato in mezzo a una sessione.
  • La posizione dell'utente nell'applicazione potrebbe essere persa se keepUrlPathAfterReload non è impostato, potenzialmente disorientandoli.
  • Dovrai gestire con cura la salvataggio e il ripristino dello stato per garantire una transizione liscia.

Se abiliti l'applicazione istantanea, consigliamo:

  • Utilizzare autoSplashscreen: true per la configurazione più semplice, o gestire manualmente l' appReady evento se hai bisogno di logica personalizzata.
  • Impostare keepUrlPathAfterReload su true per preservare la posizione dell'utente nell'applicazione.
  • Salvare e ripristinare lo stato dell'applicazione quando necessario per evitare di perdere il progresso dell'utente.
  • Testare approfonditamente il comportamento dell'aggiornamento dell'applicazione per assicurarsi che non ci siano transizioni brusche, stato perso o cambiamenti di posizione disorientanti.

In molti casi, il comportamento di aggiornamento predefinito fornisce il miglior equilibrio tra la consegna di aggiornamenti rapidi e la minimizzazione della distruzione. Ma per le app con esigenze specifiche, Capgo fornisce la flessibilità per personalizzare quando e come gli aggiornamenti vengono applicati.

Se stai utilizzando Aggiornamento del comportamento per pianificare la consegna di aggiornamenti in tempo reale, connettilo con Capgo Live Updates per il flusso di lavoro del prodotto in Capgo Live Updates, Panoramica per i dettagli di implementazione in Panoramica, Funzionalità per la dettagliata implementazione in Funzionalità, Tipi di Aggiornamento per la dettagliata implementazione in Tipi di Aggiornamento, e Avvio per la dettagliata implementazione in Avvio.