Saltar al contenido

Eventos

GitHub

El plugin de actualizador Capacitor proporciona varios eventos que puedes escuchar para monitorear el proceso de actualización y responder a diferentes estados.

Configuración del escuchador de eventos

Configuración del Escuchador de Eventos

Para escuchar eventos, utiliza el addListener método en el CapacitorUpdater objeto:

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 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: número - Porcentaje de progreso de descarga (0-100)

Fired when a check for updates determines that no update is needed.

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

Datos del evento:

  • bundle: Información del paquete actual - Información sobre el paquete actual

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

Se ha completado el 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:

  • bundleInformación del paquete - Información sobre el paquete descargado

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

Datos del evento:

  • version: string - El número de versión de la actualización mayor

Se dispara cuando una actualización falla al instalarse en la próxima arranque 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: Información del paquete - Información sobre el paquete que falló al instalarse

Se dispara cuando una descarga de paquete ha fallado.

CapacitorUpdater.addListener('downloadFailed', (event) => {
console.error('Download failed for version:', event.version);
// Handle download retry logic
});

Datos del evento:

  • version: string - La versión que falló al descargar

Se dispara cuando la aplicación ha sido recargada.

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

Datos del evento: Ninguno

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: BundleInfo - Information about the current bundle
  • status"ready": string - El estado de preparación

Muchos eventos incluyen un

Section titled “BundleInfo Object”

Información del paquete actual 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' - Descarga o instalación de paquete fallida
  • 'pending' - Paquete pendiente de configurarse como el siguiente
  • 'downloading' - Paquete actualmente descargándose

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
}
}

Sección titulada “Prácticas recomendadas”

Sección titulada “Buenas Prácticas”
  1. Siempre llame notifyAppReady()Si utiliza la actualización automática, siempre llame a este método después de que su aplicación se inicie para evitar el rechazo.

  2. Manejar fallas con eleganciaImplemente un manejo adecuado de errores para fallos de descarga y actualización.

  3. Proporcionar retroalimentación al usuarioMuestra el progreso de la descarga utilizando el evento de progreso de descarga.

  4. Limpiar los listeners: Elimine los listeners de eventos cuando ya no sean necesarios para prevenir fugas de memoria.

  5. Probar escenarios de actualizaciónPrueba diferentes escenarios de actualización, incluyendo fallas, retrocesos y actualizaciones importantes.

Si está utilizando Eventos para planificar el trabajo nativo de plugins, conecte con Usando @capgo/capacitor-actualizador para la capacidad nativa en Usando @capgo/capacitor-actualizador, Directorio del plugin Capgo para el flujo de trabajo del producto en Directorio del plugin Capgo, Plugins de Capacitor por Capgo para el detalle de implementación en Plugins de Capacitor por Capgo, 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 Ionic Enterprise Plugin Alternativas.