Eventos
Copie un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
El plugin de actualizador Capacitor proporciona varios eventos a los que puedes escuchar para supervisar el proceso de actualización y responder a diferentes estados.
Configuración de Escucha de Eventos
Sección titulada “Configuración de Escucha de Eventos”Para escuchar eventos, utiliza el addListener método en el CapacitorUpdater objeto:
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();Eventos Disponibles
Sección titulada “Eventos Disponibles”download
Sección titulada “descargar”Se dispara durante el proceso de descarga del paquete. Proporciona información de progreso de descarga.
CapacitorUpdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`); console.log('Bundle info:', event.bundle);});Datos del evento:
percent: número - Porcentaje de progreso de descarga (0-100)bundle: BundleInfo - Información sobre el paquete que se está descargando
noNeedUpdate
Sección titulada “noNeedUpdate”Se dispara cuando una comprobación de actualizaciones determina que no es necesario actualizar.
CapacitorUpdater.addListener('noNeedUpdate', (event) => { console.log('App is up to date'); console.log('Current bundle:', event.bundle);});Datos del evento:
bundle: BundleInfo - Información sobre el paquete actual
updateAvailable
Sección titulada “actualizaciónDisponible”Se dispara cuando está disponible una nueva actualización para su descarga.
CapacitorUpdater.addListener('updateAvailable', (event) => { console.log('Update available'); console.log('New bundle:', event.bundle); // You can trigger a download here if needed});Datos del evento:
bundle: Información del paquete de actualización disponible - Información sobre el paquete de actualización disponible
downloadComplete
Sección titulada “descargaCompleta”Se dispara cuando se ha completado con éxito la descarga de un paquete.
CapacitorUpdater.addListener('downloadComplete', (event) => { console.log('Download completed'); console.log('Downloaded bundle:', event.bundle); // You might want to set this bundle as next});Datos del evento:
bundle: Información del paquete descargado - Información sobre el paquete descargado
majorAvailable
Sección titulada “actualizaciónMayorDisponible”Se dispara cuando está disponible una actualización importante pero está bloqueada por las configuraciones de actualización automática.
CapacitorUpdater.addListener('majorAvailable', (event) => { console.log('Major update available:', event.version); // Notify user about major update});Datos del evento:
version: string - El número de versión del actualización mayor
updateFailed
Sección titulada “actualización fallida”Se dispara cuando una actualización ha fallado para instalar en la próxima apertura de la aplicación.
CapacitorUpdater.addListener('updateFailed', (event) => { console.error('Update failed to install'); console.log('Failed bundle:', event.bundle); // Handle rollback or retry logic});Datos del evento:
bundle: BundleInfo - Información sobre el paquete que ha fallado para instalar
downloadFailed
Sección titulada “descarga fallida”Fired when a bundle download has failed.
CapacitorUpdater.addListener('downloadFailed', (event) => { console.error('Download failed for version:', event.version); // Handle download retry logic});Datos del evento:
versionstring - La versión que no se pudo descargar
appReloaded
Título de la sección “appReloaded”Fired when the app has been reloaded.
CapacitorUpdater.addListener('appReloaded', () => { console.log('App has been reloaded'); // Perform any necessary reinitialization});Datos del evento: None
appReady
Título de la sección “appReady”Fired when the app is ready to use after an update.
CapacitorUpdater.addListener('appReady', (event) => { console.log('App is ready'); console.log('Current bundle:', event.bundle); console.log('Status:', event.status);});Datos del evento:
bundle: Información sobre el paquete actual - BundleInfostatus: string - El estado de preparación
Objeto BundleInfo
Título de la sección “Objeto BundleInfo”Muchos eventos incluyen un BundleInfo objeto con las siguientes propiedades:
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}Dónde BundleStatus puede ser:
'success'- Descarga de paquete exitosa'error'- Falla en la descarga o instalación del paquete'pending'- El paquete está pendiente de configurarse como el siguiente'downloading'- El paquete está actualmente descargándose
Ejemplo: Flujo de actualización completo
Sección titulada “Ejemplo: Flujo de actualización completo”Aquí hay un ejemplo de cómo manejar el flujo de actualización completo con eventos:
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 }}Prácticas recomendadas
Sección titulada “Prácticas recomendadas”-
Siempre llamar a
notifyAppReady()Al utilizar la actualización automática, siempre llame a este método después de que su aplicación se inicie para evitar el rechazo. -
Manejar las fallas con amabilidad: Implementar un manejo de errores adecuado para las fallas de descarga y actualización.
-
Proporcionar retroalimentación al usuario: Utilice el evento de descarga para mostrar el progreso de actualización a los usuarios.
-
Limpiar escuchadores: Quite los escuchadores de eventos cuando ya no sean necesarios para prevenir fugas de memoria.
-
Pruebas de escenarios de actualización: Pruebe varios escenarios de actualización, incluyendo fallas, retrocesos y actualizaciones importantes.
Siga adelante desde Eventos
Título de la sección “Siga adelante desde Eventos”Si está utilizando Eventos para planificar el trabajo de plugins nativos, conecte con Usando @capgo/capacitor-actualizador para la capacidad nativa en Usando @capgo/capacitor-actualizador, Directorio de Plugins Capgo para el flujo de trabajo del producto en Directorio de Plugins Capgo Plugins de Capgo en Capacitor para el detalle de implementación en Plugins de Capgo en Capacitor, Agregar o Actualizar Plugins para el detalle de implementación en Agregar o Actualizar Plugins, y Alternativas de Plugins de Ionic Enterprise para el flujo de trabajo del producto en Alternativas de Plugins de Ionic Enterprise.