Zum Inhalt springen

Ereignisse

GitHub

Der Capacitor-Updater-Plugin bietet mehrere Ereignisse, die Sie zum Überwachen des Update-Prozesses und zum Reagieren auf verschiedene Zustände anhören können.

Um Ereignisse anzuhören, verwenden Sie die addListener Methode auf dem CapacitorUpdater Objekt:

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

Wird während dem Bundle-Download-Prozess ausgelöst. Bietet Informationen zum Download-Progress.

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

Ereignisdaten:

  • percent: Zahl - Download-Progress-Prozentwert (0-100)
  • bundle: BundleInfo - Informationen zum heruntergeladenen Bundle

Wird ausgelöst, wenn eine Überprüfung auf Aktualisierungen ergibt, dass keine Aktualisierung erforderlich ist.

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

Daten des Ereignisses:

  • bundle: BundleInfo - Informationen zur aktuellen Bundle

Ausgelöst, wenn eine neue Aktualisierung zum Herunterladen verfügbar ist.

CapacitorUpdater.addListener('updateAvailable', (event) => {
console.log('Update available');
console.log('New bundle:', event.bundle);
// You can trigger a download here if needed
});

Daten des Ereignisses:

  • bundle: BundleInfo - Informationen zur verfügbaren Aktualisierungs- Bundle

Ausgelöst, wenn eine Bundle-Download erfolgreich abgeschlossen wurde.

CapacitorUpdater.addListener('downloadComplete', (event) => {
console.log('Download completed');
console.log('Downloaded bundle:', event.bundle);
// You might want to set this bundle as next
});

Daten des Ereignisses:

  • bundle: BundleInfo - Informationen zum heruntergeladenen Bundle

Ausgelöst, wenn ein großer Update verfügbar ist, aber durch die Einstellungen der automatischen Aktualisierung blockiert ist.

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

Event-Daten:

  • version: string - Die Versionsnummer des großen Updates

Ausgelöst, wenn ein Update bei der nächsten App-Starts fehlschlägt.

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

Ereignisdaten:

  • bundle: BundleInfo - Informationen über das Bundle, das nicht installiert werden konnte

Ausgelöst, wenn die Bundle-Download fehlschlägt

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

Ereignisdaten:

  • version: string - Die Version, die nicht heruntergeladen werden konnte

Ausgelöst, wenn die App neu geladen wird

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

Ereignisdaten: Keine

Ausgelöst, wenn die App nach einer Aktualisierung bereit zum Einsatz ist.

CapacitorUpdater.addListener('appReady', (event) => {
console.log('App is ready');
console.log('Current bundle:', event.bundle);
console.log('Status:', event.status);
});

Event-Daten:

  • bundle: BundleInfo - Informationen über den aktuellen Bundle
  • status: string - Der Bereitschaftsstatus

Viele Ereignisse enthalten ein BundleInfo Objekt mit den folgenden Eigenschaften:

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
}

Wo BundleStatus es sein kann:

  • 'success' - Bundle wurde erfolgreich heruntergeladen
  • 'error' - Bundle-Download/Installation fehlgeschlagen
  • 'pending' - Bundle ist für die nächste Installation vorbereitet
  • 'downloading' - Bundle wird derzeit heruntergeladen

Hier ist ein Beispiel für das Handling des vollständigen Update-Flows mit Ereignissen:

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. Rufen Sie immer auf notifyAppReady(): Wenn Sie die automatische Aktualisierung verwenden, rufen Sie diese Methode immer nach der Initialisierung Ihrer App auf, um einen Rollover zu vermeiden.

  2. Fehler verarbeiten: Fehlerbehandlung für Download- und Updatefehler durchführen.

  3. Benutzerfeedback bereitstellen: Mithilfe des Download-Progress-Events den Update-Progress an Benutzer anzeigen.

  4. Hörer entfernen: Ereignis-Hörer entfernen, wenn sie nicht mehr benötigt werden, um Speicherlecks zu vermeiden.

  5. Update-Szenarien testen: Verschiedene Update-Szenarien, einschließlich Fehlern, Rollover und großen Updates, testen.

Wenn Sie Events verwenden Events verwenden für die native Plugin-Arbeit zu planen, verbinden Sie es mit Mit @capgo/capacitor-Updater für die native Fähigkeit in Mit @capgo/capacitor-Updater Capgo Plugin-Ordner für den Produktworkflow in Capgo Plugin-Ordner Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Plugins hinzufügen oder aktualisieren und Ionic Enterprise Plugin Alternativen für den Produktworkflow in Ionic Enterprise Plugin Alternativen.