Events
Eine Einrichtungsvorschlagsanweisung mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
Der Capacitor Updater-Plugin bietet mehrere Ereignisse, die Sie zum Überwachen des Updateprozesses und zur Reaktion auf verschiedene Zustände anhören können.
Event Listener Setup
Abschnitt mit dem Titel „Event Listener Setup”Um auf Ereignisse zu hören, verwenden Sie die addListener Methode auf dem CapacitorUpdater Objekt:
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();Verfügbare Ereignisse
Abschnitt mit dem Titel „Verfügbare Ereignisse”Wird während dem Downloadprozess des Bundles ausgelöst. Bietet Informationen zum Downloadfortschritt an.
CapacitorUpdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`); console.log('Bundle info:', event.bundle);});Ereignisdaten:
percent: Anzahl - Downloadfortschrittsprozentsatz (0-100)bundle: BundleInfo - Informationen über das heruntergeladene Bundle
Ausgelöst, wenn eine Überprüfung auf Aktualisierungen bestimmt, dass keine Aktualisierung erforderlich ist.
CapacitorUpdater.addListener('noNeedUpdate', (event) => { console.log('App is up to date'); console.log('Current bundle:', event.bundle);});Ereignisdaten:
bundle: BundleInfo - Informationen über das aktuelle Bundle
updateAvailable
Abschnitt mit dem Titel „Aktualisierung verfügbar“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});Ereignisdaten:
bundle: BundleInfo - Informationen über das verfügbare Updatebundle
downloadComplete
Abschnitt mit dem Titel “downloadComplete”Ausgelöst, wenn ein Bundle erfolgreich heruntergeladen wurde.
CapacitorUpdater.addListener('downloadComplete', (event) => { console.log('Download completed'); console.log('Downloaded bundle:', event.bundle); // You might want to set this bundle as next});Ereignisdaten:
bundle: BundleInfo - Informationen über das heruntergeladene Bundle
majorAvailable
Abschnitt mit dem Titel “majorAvailable”Ausgelöst, wenn ein großer Update verfügbar ist, aber durch die Einstellungen für automatische Updates blockiert ist.
CapacitorUpdater.addListener('majorAvailable', (event) => { console.log('Major update available:', event.version); // Notify user about major update});Ereignisdaten:
version: Zeichenfolge - Die Versionsnummer der großen Aktualisierung
updateFailed
Abschnitt mit der Überschrift “updateFailed”Ausgelöst, wenn eine Aktualisierung zum Installieren bei der nächsten App-Start fehlschlägt.
CapacitorUpdater.addListener('updateFailed', (event) => { console.error('Update failed to install'); console.log('Failed bundle:', event.bundle); // Handle rollback or retry logic});Ereignis-Daten:
bundle: BundleInfo - Informationen über das Bundle, das zum Installieren fehlschlagen ist
downloadFailed
Abschnitt mit der Überschrift “downloadFailed”Ausgelöst, wenn ein 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
appReloaded
Abschnitt mit dem Titel “appReloaded”Ausgelöst, wenn die App neu geladen wurde.
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);});Ereignisdaten:
bundle: BundleInfo - Informationen über die aktuelle Bundlestatus: string - Die Bereitschaftsstatus
BundleInfo-Objekt
Abschnitt mit dem Titel “BundleInfo-Objekt”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 sich befinden kann:
'success'- Bundle heruntergeladen wurde erfolgreich'error'- Bundle herunterladen/Installation fehlgeschlagen'pending'- Bundle ist zur nächsten Konfiguration vorbereitet'downloading'- Bundle wird derzeit heruntergeladen
Beispiel: Vollständiger Update-Flow
Abschnitt mit dem Titel “Beispiel: Vollständiger Update-Flow”Hier ist ein Beispiel für die Behandlung 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 }}Gute Praktiken
Abschnitt mit dem Titel „Gute Praktiken“-
Rufen Sie immer auf
notifyAppReady(): Wenn Sie die Auto-Update-Funktion verwenden, rufen Sie diese Methode immer nach der Initialisierung Ihrer App auf, um einen Rollover zu vermeiden. -
Fehlergracevoll handhaben: Implementieren Sie eine ordnungsgemäße Fehlerbehandlung für Download- und Updatefehler.
-
Benutzerfeedback bereitstellen: Verwenden Sie das Download-Progress-Ereignis, um dem Benutzer den Update-Progress anzuzeigen.
-
Hören Sie auf, Listener: Entfernen Sie Ereignis-Listener, wenn sie nicht mehr benötigt werden, um Speicherlecks zu vermeiden.
-
Testupdate-Szenarien: Testen Sie verschiedene Update-Szenarien, einschließlich Fehlschlägen, Rollover und großen Updates.
Von Events weitergehen
Abschnitt mit dem Titel “Von Events weitergehen”Wenn Sie "Events" verwenden Events um native Plugin-Arbeit zu planen, verbinden Sie es mit Mithilfe von @capgo/capacitor-Updater für die native Fähigkeit in Mithilfe von @capgo/capacitor-Updater, Capgo-Plugin-Ordner für den Produktworkflow in Capgo-Plugin-Ordner, Capacitor Plugins durch Capgo für die Implementierungsdetails in Capacitor Plugins durch 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.