Comportamento dell'aggiornamento
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Quando rilasci un aggiornamento per il tuo Capgo app, probabilmente desideri che i tuoi utenti ricevano quell'aggiornamento il prima possibile. Ma non vuoi anche interrompere la loro esperienza facendo aspettare che scarichino o riavviano l'app in mezzo a una sessione.
Capgo's comportamento di aggiornamento è progettato per bilanciare l'invio degli aggiornamenti in modo rapido e la minimizzazione della interruzione dell'esperienza degli utenti.
Flusso di Aggiornamento Predefinito
Flusso di Aggiornamento PredefinitoDi default, ecco come Capgo gestisce gli aggiornamenti delle app:
-
Quando l'app si sposta in primo piano, il plugin Capgo controlla se è disponibile un nuovo aggiornamento. Mentre l'app rimane aperta, controlla nuovamente ogni volta che scade il timer ripetuto controllato da
periodCheckDelay(10 minuti di default). -
Se viene trovato un aggiornamento, viene scaricato in background mentre l'utente continua ad utilizzare la versione corrente dell'app.
-
Una volta completato lo scarico, Capgo attende che l'utente chiuda l'app in background.
-
Quando l'utente riporta l'app in primo piano, eseguirà la versione aggiornata.
Questo flusso assicura che gli utenti siano sempre in esecuzione con la versione più aggiornata dell'app, senza mai essere interrotti da richieste di aggiornamento o costretti a attendere i download.
Perché Questo Approccio?
Sottosezione intitolata “Perché Questo Approccio?”Applicare gli aggiornamenti su un evento di background o di chiusura ha alcuni benefici chiave per l'esperienza utente:
-
Gli utenti non sono 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.
-
Potete consegnare gli aggiornamenti frequentemente senza preoccuparvi di interrompere gli utenti attivi.
La principale svantaggio è che se un utente mette in background e ripristina velocemente il tuo app, potrebbero perdere lo stato non salvato poiché l'aggiornamento è stato applicato tra quelle azioni.
To mitigare questo, consigliamo:
-
Salvare lo stato frequentemente e ripristinarlo con grazia quando l'app ripristina.
-
Evitare aggiornamenti molto frequenti che modificano parti grandi dello stato dell'app.
-
Considerare la personalizzazione del comportamento dell'aggiornamento per flussi sensibili (vedi di seguito).
Personalizzare Quando gli Aggiornamenti Sono Applicati
Sezione intitolata “Personalizzare l’applicazione degli aggiornamenti”In alcuni casi, potresti voler avere più controllo sulla precisione esatta quando un aggiornamento viene applicato. Ad esempio, potresti voler assicurarti che un utente completi un flusso in corso prima di aggiornare, o coordinare un aggiornamento dell'app con un cambiamento server-side.
Capgo fornisce una setDelay funzione che ti consente di specificare condizioni che devono essere soddisfatte prima di installare un 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 di un aggiornamento fino a dopo il 1 giugno 2023 E l'app è stata messa in background per almeno 60 secondi.
Il tempo di attesa disponibile è:
date: Attendere fino a una data/ora specifica per applicare l'aggiornamento.background: Attendere un minimo di durata dopo che l'app è stata messa in background per applicare l'aggiornamento.nativeVersion: Attendere l'installazione di un binario nativo con una versione minima prima di applicare l'aggiornamento.kill: Wait until the next app kill event to apply the update.
Potete combinare e miscelare queste condizioni per controllare con precisione quando viene installato un aggiornamento.
Applicare Aggiornamenti Subito
Sezione intitolata “Applicare Aggiornamenti Subito”For 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 chiusura. Capgo supporta questo tramite il autoUpdate policy nel tuo Capacitor config.
autoUpdate file, non nel JavaScript __CAPGO_KEEP_0__. Supporta questi valori: capacitor.config.ts file, non in JavaScript code. Supporta questi valori:
falseo'off': Disable automatic update checkstrueo'atBackground'Esegui automaticamente il controllo e il download ogni volta che l'app entra in primo piano, quindi applica l'aggiornamento la prossima volta che l'app si sposta in background'atInstall': Applica immediatamente solo dopo un'installazione fresca o un aggiornamento dell'applicazione nativa; altrimenti utilizza"atBackground"comportamento'onLaunch': Applica immediatamente solo quando l'app viene riportata in primo piano da uno stato ucciso (avvio freddo). Dopo la prima verifica, ricade su"atBackground"comportamento'always'Controlla ogni volta che si passa a un'altra applicazione e applica immediatamente l'aggiornamento disponibile'onlyDownload': Verifica e scarica automaticamente, emetteupdateAvailable, e non impostare mai il prossimo pacchetto o applicare un aggiornamento automaticamente
Testa una Build Nativa Senza Aggiornamenti in Tempo Reale
Sezione intitolata “Testa una costruzione nativa senza aggiornamenti in tempo reale”Vedi Testa le versioni native senza Live Update Per le misure di sicurezza native-version, politica del canale e configurazione 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 for instant apply with autoSplashscreen }, },};
export default config;Con autoUpdate: 'always', Capgo controlla ogni volta che l'app si sposta in primo piano e applica immediatamente l'aggiornamento non appena il download si completa durante quel controllo, anche se l'utente sta utilizzando l'app. Le verifiche periodiche controllate da periodCheckDelay possono attivare lo stesso comportamento di applicazione immediata mentre l'app rimane aperta.
Nota che perché autoUpdate è una configurazione nativa, i modi di applicazione istantanea richiedono alcune ulteriori gestione nel tuo JavaScript code.
Scaricando Automaticamente Senza Applicare
Sottosezione intitolata “Scaricando Automaticamente Senza Applicare”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 che è stato scaricato un bundle. La tua app può quindi decidere quando chiamare CapacitorUpdater.set() o mostrare il proprio prompt di aggiornamento.
Gestione automatica dello schermo di caricamento
Sezione intitolata “Gestione automatica dello schermo di caricamento”I modi di applicazione istantanea (“"atInstall", "onLaunch", "always") richiedono autoSplashscreen e @capacitor/splash-screen ( disponibile dalla versione 7.6.0). Installa il plugin, poi mantieni visibile lo splash fino a quando Capgo lo nasconde:
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' autoSplashscreen: true, // Automatically hide splashscreen keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, }, },};When autoSplashscreen Quando
- The plugin nasconde automaticamente lo schermo di benvenuto quando viene applicata un'aggiornamento
- The plugin nasconde automaticamente lo schermo di benvenuto quando non è necessario un aggiornamento
- Non è necessario ascoltare manualmente per
appReadyeventi o chiamareSplashScreen.hide()
Lavoro extra dopo lo schermo si nasconde
Sezione intitolata “Lavoro extra dopo lo schermo si nasconde”Tieni autoSplashscreen: true. Se hai bisogno di logica extra dopo l'aggiornamento è pronto, ascolta anche appReady e non saltare il plugin dello schermo o autoSplashscreen per questo:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
CapacitorUpdater.addListener('appReady', () => { // Update is applied. autoSplashscreen already hid the splash.});
CapacitorUpdater.notifyAppReady();The appReady l'evento si attiva una volta che l'app ha finito di inizializzare e di applicare eventuali aggiornamenti in sospeso.
Imposta keepUrlPathAfterReload al true quando si utilizza un modello di applicazione istantaneo. Ciò preserva la corrente URL di percorso quando l'app viene riavviata a causa di un aggiornamento.
L'uso di un modello di applicazione istantaneo può essere utile per fornire correzioni di bug critici o patch di sicurezza, ma comporta alcuni compromessi:
- Il utente potrebbe vedere un breve scintillio o stato di caricamento mentre l'aggiornamento viene applicato se
@capacitor/splash-screenè mancante oautoSplashscreennon è abilitato. - Se l'aggiornamento modifica lo stato dell'app o l'interfaccia utente, l'utente potrebbe vedere un cambiamento disorientante in mezzo a una sessione.
- Il percorso dell'utente nell'app potrebbe essere perso se
keepUrlPathAfterReloadnon è impostato, potenzialmente disorientandolo. - Devi gestire con cura la salvaguardia e il ripristino dello stato per garantire una transizione fluida.
Se abiliti l'applicazione istantanea, vi consigliamo:
- Caricare con
npx @capgo/cli@latest bundle upload --deltain modo che il download non rallenti l'esperienza utente. - Installare
@capacitor/splash-screene impostareautoSplashscreen: trueconlaunchAutoHide: false. - Impostare
keepUrlPathAfterReloadpertrueper preservare la posizione dell'utente nell'app. - Salvare e ripristinare lo stato dell'app quando necessario per evitare la perdita del progresso dell'utente.
- Testare approfonditamente il comportamento dell'aggiornamento dell'app 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 dislocazione. Ma per le app con esigenze specifiche, Capgo offre la flessibilità di personalizzare quando e come gli aggiornamenti vengono applicati.
Continua da Comportamento dell'aggiornamento
Sezione intitolata “Continua da Comportamento dell'aggiornamento”Se stai utilizzando Comportamento dell'aggiornamento per pianificare la consegna live update, connettilo con Capgo Aggiornamenti in tempo reale per il flusso di lavoro del prodotto in Capgo Live Updates, Overview per i dettagli di implementazione nella panoramica Features per i dettagli di implementazione nei Features, Tipi di Aggiornamento per i dettagli di implementazione in Tipi di Aggiornamento, e Getting Started per i dettagli di implementazione in Avvio.