Saltar al contenido

Eventos

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

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

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

__CAPGO_KEEP_0__: Datos del evento:

  • percent: número - Porcentaje de progreso de descarga (0-100)
  • bundle: BundleInfo - Información sobre el paquete que se está descargando

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

__CAPGO_KEEP_0__: Datos del evento:

  • bundle: Información del paquete - 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 - Información sobre el paquete de actualización disponible

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 - Información sobre el paquete descargado

Se dispara cuando está disponible una actualización importante pero está bloqueada por los ajustes 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 de la actualización importante

Se dispara cuando una actualización ha fallado al instalarse en el próximo 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: BundleInfo - Información sobre el paquete que ha fallado al instalarse

Se dispara cuando un paquete de descarga 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 no se pudo 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

Se dispara cuando la aplicación está lista para usar después de una actualización.

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 - BundleInfo
  • status: string - El estado de preparación

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' - Se ha descargado con éxito el paquete
  • 'error' - Se ha fallado la descarga e instalación del paquete
  • 'pending' - El paquete está pendiente de configurarse como el siguiente
  • 'downloading' - El paquete está 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
}
}
  1. When using auto-update, always call this method after your app initializes to prevent rollback. notifyAppReady()Handle failures gracefully

  2. Implement proper error handling for download and update failures.Copy to clipboard

  3. Proporcionar retroalimentación del usuario: Utilice el evento de progreso de descarga para mostrar el progreso de actualización a los usuarios.

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

  5. Probar escenarios de actualización: Pruebe varios escenarios de actualización, incluidas fallas, retrocesos y actualizaciones importantes.