Lompat ke konten

Event

GitHub

Plugin Pembarui Capacitor menyediakan beberapa event yang dapat Anda dengarkan untuk memantau proses pembaruan dan bereaksi terhadap berbagai keadaan.

Untuk mendengarkan event, gunakan addListener metode pada objek: CapacitorUpdater Salin ke clipboard

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

Judul Bagian “Event yang Tersedia”

Judul Bagian “download”

Salin ke clipboard

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

__CAPGO_KEEP_0__

  • percentPersentasi: % - Progres download persentase (0-100)
  • bundleBundleInfo - Informasi tentang bundle yang sedang di download

Dibebaskan ketika cek untuk update menentukan bahwa tidak ada update yang diperlukan.

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

Data Acara:

  • bundleBundleInfo - Informasi tentang bundle saat ini

Dibebaskan ketika update baru tersedia untuk di download.

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

Data Acara:

  • bundleBundleInfo - Informasi tentang bundle pembaruan yang tersedia

Dipicu ketika sebuah bundle download telah selesai dengan sukses.

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

Data Acara:

  • bundleBundleInfo - Informasi tentang bundle yang diunduh

Dipicu ketika pembaruan utama tersedia tetapi diblokir oleh pengaturan auto-update.

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

Data Acara:

  • versionVersi: string - Nomor versi dari pembaruan utama

Dibebaskan ketika pembaruan gagal terpasang pada aplikasi berikutnya.

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

Data Event:

  • bundle: BundleInfo - Informasi tentang bundel yang gagal terpasang

Dibebaskan ketika pengunduhan bundel gagal.

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

Data Acara:

  • version: string - Versi yang gagal diunduh

Ditrigger ketika aplikasi telah di-reload.

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

Data Acara: : Tidak Ada

Ditrigger ketika aplikasi siap digunakan setelah pembaruan.

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

Data Acara:

  • bundle: Informasi Paket - Informasi tentang paket saat ini
  • status : string - Status siap

Banyak acara termasuk BundleInfo objek dengan sifat-sifat berikut:

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
}

Dimana BundleStatus bisa:

  • 'success' - Bundle diunduh dengan sukses
  • 'error' - Pengunduhan/instalasi bundle gagal
  • 'pending' - Bundle sedang menunggu untuk ditetapkan sebagai bundle berikutnya
  • 'downloading' - Bundle sedang diunduh

Berikut adalah contoh pengelolaan alur pembaruan lengkap dengan event:

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. Selalu panggil notifyAppReady(): Ketika menggunakan auto-update, selalu panggil metode ini setelah aplikasi Anda diinisialisasi untuk mencegah rollback.

  2. Tangani kegagalan dengan sopan: Implementasikan penanganan kesalahan yang tepat untuk gagal download dan update.

  3. Berikan feedback kepada pengguna: Gunakan event kemajuan download untuk menampilkan kemajuan update kepada pengguna.

  4. Bersihkan pendengar: Hapuslah pengaturan event ketika mereka tidak lagi diperlukan untuk mencegah kebocoran memori.

  5. Test update skenario: Test berbagai skenario update termasuk gagal, rollback, dan update besar.

Jika Anda menggunakan Events untuk merencanakan kerja plugin native, hubungkannya dengan Menggunakan @capgo/capacitor-updater untuk kemampuan native di Menggunakan @capgo/capacitor-updater, Capgo Direktori Plugin untuk alur kerja produk di Capgo Direktori Plugin, Capacitor Plugin oleh Capgo untuk detail implementasi di Capacitor Plugin oleh Capgo, Mengambah atau Mengupdate Plugin untuk detail implementasi di Mengambah atau Mengupdate Plugin, dan Alternatif Plugin Enterprise Ionic untuk alur kerja produk di Alternatif Plugin Enterprise Ionic.