Event
Copy sebuah prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
The Capacitor Updater plugin provides several events you can listen to for monitoring the update process and responding to different states.
Pengaturan Pemangku Kebijakan Acara
Pengaturan Pemangku Jalan (Event Listener Setup)Gunakan untuk mendengarkan event, gunakan addListener metode pada CapacitorUpdater objek:
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();Event yang Tersedia
Judul Bagian “Event yang Tersedia”download
Bagian berjudul "Unduh"Ditampilkan selama proses download bundle. Memberikan informasi tentang kemajuan download.
CapacitorUpdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`); console.log('Bundle info:', event.bundle);});Data Acara:
percentPersentasi: __CAPGO_KEEP_0__ - Persentasi kemajuan download (0-100)bundle: Informasi tentang bundle yang sedang diunduh
noNeedUpdate
Bab berjudul “tidakPerluDiupdate”Dibebaskan ketika cek 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:
bundle: Informasi tentang bundle saat ini
updateAvailable
Bab berjudul “updateTersedia”Dibebaskan ketika update baru tersedia untuk diunduh.
CapacitorUpdater.addListener('updateAvailable', (event) => { console.log('Update available'); console.log('New bundle:', event.bundle); // You can trigger a download here if needed});Data Acara:
bundle: BundleInfo - Informasi tentang bundle yang tersedia untuk diupdate
downloadComplete
Judul Bagian “downloadComplete”Dipicu ketika proses download bundle 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:
bundle: BundleInfo - Informasi tentang bundle yang diunduh
majorAvailable
Judul Bagian “majorAvailable”Dipicu ketika update besar 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
updateFailed
Bagian berjudul “updateFailed”Ditrigger ketika pembaruan gagal diinstal 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:
bundleBundleInfo - Informasi tentang bundle yang gagal diinstal
downloadFailed
Bagian berjudul “downloadFailed”Ditrigger ketika download bundle 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
appReloaded
Judul Bagian “appReloaded”Ditrigger ketika aplikasi telah di-reload.
CapacitorUpdater.addListener('appReloaded', () => { console.log('App has been reloaded'); // Perform any necessary reinitialization});Data Acara: Tidak ada
appReady
Judul Bagian “appReady”Ditrigger ketika aplikasi siap digunakan setelah diperbarui.
CapacitorUpdater.addListener('appReady', (event) => { console.log('App is ready'); console.log('Current bundle:', event.bundle); console.log('Status:', event.status);});Data Acara:
bundle: BundleInfo - Informasi tentang bundle saat inistatus: string - Status siap
BundleInfo Object
Bagian berjudul “BundleInfo Object”Banyak event 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 telah diunduh dengan sukses'error'- Pengunduhan/instalasi bundle gagal'pending'- Bundle sedang menunggu untuk diatur sebagai berikutnya'downloading'- Bundle sedang diunduh
Contoh: Alur Pembaruan Lengkap
Judul bagian “Contoh: Alur Pembaruan Lengkap”Berikut adalah contoh penggunaan 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 }}Praktik Terbaik
Bagian berjudul “Praktik Terbaik”-
Selalu panggil
notifyAppReady(): Ketika menggunakan auto-update, selalu panggil metode ini setelah aplikasi Anda diinisialisasi untuk mencegah rollback. -
Tangani gagal dengan baik: Implementasikan penanganan error yang tepat untuk gagal download dan update.
-
Berikan feedback kepada pengguna: Gunakan event kemajuan download untuk menampilkan kemajuan update kepada pengguna.
-
Membersihkan pendengar: Hapuslah event listener ketika mereka tidak lagi diperlukan untuk mencegah kebocoran memori.
-
Test update scenarios: Uji berbagai skenario update termasuk gagal, rollback, dan update besar.