Saltare al contenuto

Eventi

GitHub

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

Setup dell'Ascoltatore di Eventi

Per ascoltare gli eventi, utilizza il addListener metodo sul CapacitorUpdater oggetto:

import { CapacitorUpdater } from '@capgo/capacitor-updater';
// Add a listener
const listener = await CapacitorUpdater.addListener('eventName', (event) => {
// Handle the event
});
// Remove the listener when no longer needed
listener.remove();
// Remove all listeners
await CapacitorUpdater.removeAllListeners();

Fired durante il processo di download del pacchetto. Fornisce informazioni di avanzamento del download.

CapacitorUpdater.addListener('download', (event) => {
console.log(`Download progress: ${event.percent}%`);
console.log('Bundle info:', event.bundle);
});

context

  • percent: numero - Percentuale di download (0-100)
  • bundle: numero - Percentuale di avanzamento del download (0-100)

Emitto quando un controllo per le aggiornamenti determina che non è necessario alcun aggiornamento.

CapacitorUpdater.addListener('noNeedUpdate', (event) => {
console.log('App is up to date');
console.log('Current bundle:', event.bundle);
});

Dati evento:

  • bundle: BundleInfo - Informazioni sul bundle corrente

Fired 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 evento:

  • bundle: BundleInfo - Informazioni sul bundle di aggiornamento disponibile

Fired quando il download del 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 evento:

  • bundle: BundleInfo - Informazioni sul bundle scaricato

Fired when a major update is available but blocked by auto-update settings.

CapacitorUpdater.addListener('majorAvailable', (event) => {
console.log('Major update available:', event.version);
// Notify user about major update
});

context

  • version: string - Il numero di versione dell'aggiornamento maggiore

Emitto quando un aggiornamento non riesce ad installarsi alla prossima partenza dell'app.

CapacitorUpdater.addListener('updateFailed', (event) => {
console.error('Update failed to install');
console.log('Failed bundle:', event.bundle);
// Handle rollback or retry logic
});

context

  • bundle: Informazioni sul bundle che non è stato installato

Emitto quando il download di un bundle fallisce.

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

Emitto quando l'app è stata ricaricata.

CapacitorUpdater.addListener('appReloaded', () => {
console.log('App has been reloaded');
// Perform any necessary reinitialization
});

Dati dell'evento: Nessuna

Eseguito 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);
});

Eventi di dati:

  • bundle: Oggetto BundleInfo - Informazioni sulla bundle corrente
  • status: stringa - Lo stato di pronto

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
}

Where BundleStatus Dove

  • 'success' - Scarica bundle con successo
  • 'error' - Bundle scaricato con successo
  • 'pending' - Scaricamento/installazione del Bundle fallito
  • 'downloading' - Il bundle è attualmente in download

- Bundle in corso di download

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
}
}
  1. Chiamare sempre notifyAppReady()Quando si utilizza l'aggiornamento automatico, chiamate sempre questo metodo dopo l'inizializzazione dell'applicazione per prevenire il rollback.

  2. Affrontare le fallite con dignitàImplementa un corretto gestione degli errori per le fallite di download e aggiornamento.

  3. Fornisci feedback all'utenteUsa l'evento di progresso del download per mostrare lo stato di aggiornamento agli utenti.

  4. Pulisci gli ascoltatoriRimuovi gli ascoltatori di eventi quando non sono più necessari per prevenire i vuoti di memoria.

  5. Testa gli scenari di aggiornamento: Testa vari scenari di aggiornamento, inclusi fallimenti, annullamenti e aggiornamenti principali.

Se stai utilizzando Eventi per pianificare il lavoro di plugin nativo, connettilo con Utilizzando @capgo/capacitor-aggiornatore per la capacità nativa in Utilizzando @capgo/capacitor-aggiornatore, Capgo Directory dei Plugin per il flusso di lavoro del prodotto nella cartella Plugin Capgo. 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 Sostituti dei Plugin Enterprise Ionic per il flusso di lavoro del prodotto in Sostituti dei Plugin Enterprise Ionic.