Eventi
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Il plugin di aggiornamento Capacitor fornisce diversi eventi che puoi ascoltare per monitorare il processo di aggiornamento e rispondere a diversi stati.
Impostazione dell'ascoltatore di eventi
Sezione intitolata “Impostazione dell'ascoltatore di eventi”Per ascoltare gli eventi, utilizza il metodo su l'oggetto: addListener Copia nel portapenna CapacitorUpdater Eventi disponibili
import { CapacitorUpdater } from '@capgo/capacitor-updater';
// Add a listenerconst listener = await CapacitorUpdater.addListener('eventName', (event) => { // Handle the event});
// Remove the listener when no longer neededlistener.remove();
// Remove all listenersawait CapacitorUpdater.removeAllListeners();Per ascoltare gli eventi, utilizza il metodo su l'oggetto:
Sezione intitolata “Eventi disponibili”download
Sezione intitolata “download”Avviato durante il processo di download del pacchetto. Fornisce informazioni sul progresso del download.
CapacitorUpdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`); console.log('Bundle info:', event.bundle);});Dati evento:
percent: numero - Percentuale di progresso del download (0-100)bundle: BundleInfo - Informazioni sul pacchetto in corso di download
Avviato quando un controllo per gli aggiornamenti determina che non è necessario un aggiornamento.
CapacitorUpdater.addListener('noNeedUpdate', (event) => { console.log('App is up to date'); console.log('Current bundle:', event.bundle);});Dati dell'evento:
bundle: BundleInfo - Informazioni sulla bundle corrente
updateAvailable
Sezione intitolata “aggiornamento disponibile”Emitto quando è disponibile un nuovo aggiornamento per il download.
CapacitorUpdater.addListener('updateAvailable', (event) => { console.log('Update available'); console.log('New bundle:', event.bundle); // You can trigger a download here if needed});Dati dell'evento:
bundle: BundleInfo - Informazioni sulla bundle disponibile per il download
downloadComplete
Sezione intitolata “download completato”Emitto quando il download di una bundle è stato completato con successo.
CapacitorUpdater.addListener('downloadComplete', (event) => { console.log('Download completed'); console.log('Downloaded bundle:', event.bundle); // You might want to set this bundle as next});Dati dell'evento:
bundle: Informazioni sul bundle - Informazioni sul bundle scaricato
majorAvailable
Sezione intitolata “aggiornamento maggiore disponibile”Fired quando è disponibile un aggiornamento maggiore ma è bloccato dai impostazioni di aggiornamento automatico.
CapacitorUpdater.addListener('majorAvailable', (event) => { console.log('Major update available:', event.version); // Notify user about major update});Dati dell'evento:
version: string - Il numero di versione dell'aggiornamento maggiore
updateFailed
Sezione intitolata “aggiornamento fallito”Fired quando l'aggiornamento non riesce ad installarsi alla prossima avviamento dell'app.
CapacitorUpdater.addListener('updateFailed', (event) => { console.error('Update failed to install'); console.log('Failed bundle:', event.bundle); // Handle rollback or retry logic});Dati dell'evento:
bundle: BundleInfo - Informazioni sul bundle che non è stato installato correttamente
downloadFailed
Sezione intitolata “downloadFailed”Fired quando il download di un bundle ha avuto esito negativo.
CapacitorUpdater.addListener('downloadFailed', (event) => { console.error('Download failed for version:', event.version); // Handle download retry logic});Dati dell'evento:
version: string - La versione che non è stata scaricata correttamente
appReloaded
Sezione intitolata “appReloaded”Fired quando l'app è stata riavviata.
CapacitorUpdater.addListener('appReloaded', () => { console.log('App has been reloaded'); // Perform any necessary reinitialization});Dati dell'evento: Nessuna
appReady
Sezione intitolata “appReady”Emitto quando l'app è pronta all'uso dopo un aggiornamento.
CapacitorUpdater.addListener('appReady', (event) => { console.log('App is ready'); console.log('Current bundle:', event.bundle); console.log('Status:', event.status);});Dati dell'evento:
bundle: BundleInfo - Informazioni sulla bundle correntestatus: string - Lo stato di prontezza
BundleInfo Oggetto
Sezione intitolata “BundleInfo Object”Molti eventi includono un BundleInfo oggetto con le seguenti proprietà:
interface BundleInfo { id: string; // Unique bundle identifier version: string; // Bundle version downloaded: string; // Download timestamp checksum?: string; // Bundle checksum (if available) status: BundleStatus; // Bundle status}Dove BundleStatus può essere:
'success'- Bundle scaricato con successo'error'- Scaricamento/installazione del Bundle fallito'pending'- Bundle in attesa di essere impostato come successivo'downloading'- Bundle in corso di download
Esempio: Flusso di aggiornamento completo
Sezione intitolata “Esempio: Flusso di aggiornamento completo”Ecco un esempio di gestione del flusso di aggiornamento completo con eventi:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
export class UpdateManager { private listeners: any[] = [];
async setupListeners() { // Listen for available updates this.listeners.push( await CapacitorUpdater.addListener('updateAvailable', async (event) => { console.log('Update available:', event.bundle.version); // Auto-download the update await CapacitorUpdater.download({ url: event.bundle.url, version: event.bundle.version }); }) );
// Monitor download progress this.listeners.push( await CapacitorUpdater.addListener('download', (event) => { console.log(`Downloading: ${event.percent}%`); // Update UI progress bar this.updateProgressBar(event.percent); }) );
// Handle download completion this.listeners.push( await CapacitorUpdater.addListener('downloadComplete', async (event) => { console.log('Download complete:', event.bundle.version); // Set as next bundle await CapacitorUpdater.next({ id: event.bundle.id }); }) );
// Handle failures this.listeners.push( await CapacitorUpdater.addListener('downloadFailed', (event) => { console.error('Download failed:', event.version); this.showError('Update download failed. Please try again later.'); }) );
this.listeners.push( await CapacitorUpdater.addListener('updateFailed', (event) => { console.error('Update installation failed:', event.bundle.version); this.showError('Update installation failed. The app has been rolled back.'); }) );
// Handle app ready this.listeners.push( await CapacitorUpdater.addListener('appReady', async (event) => { console.log('App ready with bundle:', event.bundle.version); }) ); }
cleanup() { // Remove all listeners when no longer needed this.listeners.forEach(listener => listener.remove()); this.listeners = []; }
private updateProgressBar(percent: number) { // Update your UI progress bar }
private showError(message: string) { // Show error to user }}Sezione intitolata “Pratiche raccomandate”
Chiamare sempre-
: Quando si utilizza l'aggiornamento automatico, chiamare sempre questo metodo dopo l'inizializzazione dell'app per prevenire il rollback.
notifyAppReady()Copia negli appunti -
Gestisci le fallite con grazia: Implementa un corretto gestione degli errori per le fallite di download e aggiornamento.
-
Fornisci feedback all'utente: Utilizza l'evento di progresso di download per mostrare il progresso dell'aggiornamento agli utenti.
-
Pulisci gli ascoltatori: Elimina gli ascoltatori degli eventi quando non sono più necessari per prevenire le perdite di memoria.
-
Testa gli scenari di aggiornamento: Testa vari scenari di aggiornamento, inclusi fallimenti, annullamenti e aggiornamenti principali.
Continua da qui: Eventi
Sezione intitolata “Continua da qui: Eventi”Se stai utilizzando Eventi per pianificare il lavoro di plugin nativo, connettilo con Utilizzare @capgo/capacitor-aggiornatore per la capacità nativa in Utilizzare @capgo/capacitor-aggiornatore, Capgo Directory dei Plugin per il flusso di lavoro del prodotto in Capgo Directory dei Plugin, Capacitor Plugin da Capgo per il dettaglio di implementazione in Capacitor Plugin da Capgo, Aggiungere o Aggiornare i Plugin per il dettaglio di implementazione in Aggiungere o Aggiornare i Plugin, e Alternative per Plugin Enterprise Ionic per il flusso di lavoro del prodotto in Alternative per Plugin Enterprise Ionic.