Lebih lanjut ke konten

Acara

GitHub

Plugin Pembaruan 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 Salinan 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();

Dipicu selama proses download bundle. Memberikan informasi kemajuan download.

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

Data Acara:

  • percent: Persentase kemajuan download (0-100)
  • bundle: BundleInfo - Informasi tentang bundle yang sedang diunduh

Dipicu ketika periksa 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: BundleInfo - Informasi tentang bundle saat ini

Dibebankan ketika ada pembaruan baru yang 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 pembaruan yang tersedia

Dibebankan ketika proses pengunduhan bundle 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:

  • bundle : Informasi Bundle - Informasi tentang bundle yang diunduh

Dibebankan ketika ada pembaruan besar yang 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:

  • version : string - Nomor versi pembaruan besar

Dibebankan 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 Acara:

  • bundle: BundleInfo - Informasi tentang paket yang gagal terpasang

Ditetapkan ketika pengunduhan paket 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

Ditetapkan ketika aplikasi telah di-reload.

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

Data Acara: None

Dipicu ketika aplikasi sudah 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 ini
  • status: string - Status siap

Beberapa acara termasuk BundleInfo objek dengan 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' - Paket diunduh dengan sukses
  • 'error' - Pengunduhan/penginstalan paket gagal
  • 'pending' - Paket akan ditetapkan sebagai berikutnya
  • 'downloading' - Paket sedang diunduh

Contoh berikut menunjukkan cara menghandle alur pembaruan lengkap dengan acara:

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
}
}

Bab berjudul “Praktik Terbaik”

Selalu panggil
  1. : Ketika menggunakan pembaruan otomatis, selalu panggil metode ini setelah aplikasi Anda diinisialisasi untuk mencegah rollback. notifyAppReady()Copy to clipboard

  2. Menghadapi kegagalan dengan sopan: Melakukan penanganan kesalahan yang tepat untuk kegagalan download dan update.

  3. Menginformasikan pengguna: Menggunakan event kemajuan download untuk menampilkan kemajuan update kepada pengguna.

  4. Menghapus pendengar: Menghapus pendengar event ketika tidak diperlukan lagi untuk mencegah kebocoran memori.

  5. Menguji skenario update: Menguji berbagai skenario update termasuk kegagalan, rollback, dan update besar.

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