Events
Kopieren Sie einen Einrichtungsprompt mit den Installationsanweisungen und der vollständigen Markdown-Guideline für dieses Plugin.
Der Capacitor-Updater-Plugin bietet mehrere Ereignisse, die Sie zum Überwachen des Update-Prozesses und zum Reagieren auf verschiedene Zustände abonnieren können.
Ereignis-Listener-Einstellung
Abschnitt mit dem Titel „Ereignis-Listener-Einstellung“Um Ereignisse abonnieren zu können, 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 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);});Ereignis-Daten:
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 über die aktuelle Bundle
updateAvailable
Abschnitt mit dem Titel „aktualisierbar“Ausgelöst, wenn ein neuer Update-Download 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 über das verfügbare Update-Bundle
downloadComplete
Abschnitt mit dem Titel „heruntergeladen“Ausgelöst, wenn ein 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
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 wird.
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
updateFailed
Abschnitt mit dem Titel “updateFailed”Ausgelöst, wenn ein Update bei der Installation am 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});Daten zum Ereignis:
bundle: BundleInfo - Informationen über das Bundle, das nicht installiert werden konnte
downloadFailed
Abschnitt mit dem Titel „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});Daten zum Ereignis:
version: string - Die Version, die nicht heruntergeladen werden konnte
appReloaded
Abschnitt mit dem Titel „appReloaded“Ausgelöst, wenn die App neu geladen wird.
CapacitorUpdater.addListener('appReloaded', () => { console.log('App has been reloaded'); // Perform any necessary reinitialization});Daten zum Ereignis: : 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 Bundlestatus: string - Der 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 wurde erfolgreich heruntergeladen'error'- Bundle-Download/Installation fehlgeschlagen'pending'- Bundle ist für die nächste Installation 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 Verarbeitung 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 }}Abschnitt mit dem Titel „Gute Praktiken“
Rufen Sie immer auf-
: Wenn Sie die automatische Aktualisierung verwenden, rufen Sie diese Methode immer nach der Initialisierung Ihrer App auf, um einen Rollover zu vermeiden.
notifyAppReady()Vorsicht -
Fehler verarbeiten: Fehler beim Herunterladen und Aktualisieren korrekt handhaben.
-
Benutzerfeedback bereitstellen: Verwenden Sie das Download-Progress-Ereignis, um dem Benutzer den Aktualisierungsfortschritt anzuzeigen.
-
Listener auflösen: Entfernen Sie die Ereignis-Listener, wenn sie nicht mehr benötigt werden, um Speicherlecks zu vermeiden.
-
Aktualisierungs-Szenarien testen: Testen Sie verschiedene Aktualisierungs-Szenarien, einschließlich Fehlern, Rückschritten und großen Updates.
Weiter von Ereignissen
Abschnitt mit dem Titel “Weiter von Ereignissen”Wenn Sie Events verwenden Events 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-Verzeichnis für den Produktworkflow in Capgo Plugin-Verzeichnis 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.