이벤트
설치 단계와 이 플러그인의 전체 마크다운 가이드를 포함한 설정 지시를 복사할 수 있습니다.
Capacitor 업데이터 플러그인은 업데이트 프로세스를 모니터링하고 다양한 상태에 반응하는 데 사용할 수 있는 여러 이벤트를 제공합니다.
이벤트 리스너 설정
이벤트 리스너 설정이벤트를 듣기 위해 사용하는 메소드는 addListener 객체에 있습니다: CapacitorUpdater 클립보드 복사
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();사용 가능한 이벤트
이벤트 리스너 설정download
다운로드 섹션다운로드 프로세스 중에 발생하는 이벤트입니다. 다운로드 진행 정보를 제공합니다.
CapacitorUpdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`); console.log('Bundle info:', event.bundle);});이벤트 데이터:
percent: 다운로드 진행률(0-100)bundle: 다운로드 중인 패키지 정보
noNeedUpdate
업데이트 필요 없음 섹션업데이트 확인 중에 업데이트가 필요하지 않음을 결정할 때 발생하는 이벤트입니다.
CapacitorUpdater.addListener('noNeedUpdate', (event) => { console.log('App is up to date'); console.log('Current bundle:', event.bundle);});이벤트 데이터:
bundle: BundleInfo - 현재 버전의 정보
updateAvailable
업데이트 가능새로운 업데이트가 다운로드 가능할 때 발생합니다.
CapacitorUpdater.addListener('updateAvailable', (event) => { console.log('Update available'); console.log('New bundle:', event.bundle); // You can trigger a download here if needed});이벤트 데이터:
bundle: BundleInfo - 업데이트 가능한 패키지 정보
downloadComplete
: BundleInfo - 다운로드 가능한 업데이트의 정보다운로드 완료
CapacitorUpdater.addListener('downloadComplete', (event) => { console.log('Download completed'); console.log('Downloaded bundle:', event.bundle); // You might want to set this bundle as next});이벤트 데이터:
bundle: BundleInfo - 다운로드한 버전의 정보
majorAvailable
메이저 업데이트가 있는 경우메이저 업데이트가 있지만 자동 업데이트 설정으로 인해 차단됩니다.
CapacitorUpdater.addListener('majorAvailable', (event) => { console.log('Major update available:', event.version); // Notify user about major update});이벤트 데이터:
version이벤트 데이터:
업데이트 실패
CapacitorUpdater.addListener('updateFailed', (event) => { console.error('Update failed to install'); console.log('Failed bundle:', event.bundle); // Handle rollback or retry logic});이벤트 데이터:
bundle: 패키지 정보 - 설치에 실패한 패키지에 대한 정보
downloadFailed
다운로드 실패다운로드 실패 시 발생하는 이벤트
CapacitorUpdater.addListener('downloadFailed', (event) => { console.error('Download failed for version:', event.version); // Handle download retry logic});이벤트 데이터:
version: string - 다운로드에 실패한 버전
appReloaded
앱 다시 로드앱이 다시 로드되었습니다.
CapacitorUpdater.addListener('appReloaded', () => { console.log('App has been reloaded'); // Perform any necessary reinitialization});이벤트 데이터: 없음
appReady
앱 준비업데이트 후 앱이 사용할 준비가 되었을 때 발생하는 이벤트.
CapacitorUpdater.addListener('appReady', (event) => { console.log('App is ready'); console.log('Current bundle:', event.bundle); console.log('Status:', event.status);});이벤트 데이터:
bundle: BundleInfo - 현재 버전의 정보status: string - 준비 상태
BundleInfo 객체
많은 이벤트는 BundleInfo 객체를 포함합니다.수많은 이벤트는 BundleInfo 객체를 포함합니다. BundleInfo 속성으로 구성된 객체:
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}클립보드 복사 BundleStatus 업데이트 이벤트
'success'어디에'error'있을 수 있나요?'pending'- 성공적으로 패키지 다운로드'downloading'- 패키지 다운로드/설치 실패
- 다음으로 설정될 패키지 준비 중
- 현재 패키지 다운로드 중예시: 업데이트 완료 흐름
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 }}실패를 유연하게 처리하십시오
복사-
최선의 방법
notifyAppReady()최선의 방법 -
항상 이 메소드를 초기화 후에 호출하여 롤백을 방지하십시오.: 다운로드 및 업데이트 실패 시 적절한 오류 처리를 수행하세요.
-
사용자 피드백 제공: 다운로드 진행 이벤트를 사용하여 사용자에게 업데이트 진행 상황을 표시하세요.
-
리스너 정리: 더 이상 필요하지 않은 이벤트 리스너를 제거하여 메모리 누수를 방지하세요.
-
업데이트 시나리오 테스트: 업데이트 실패, 롤백, 주요 업데이트 등 다양한 업데이트 시나리오를 테스트하세요.
계속하기
계속하기이러한 기능을 사용하는 경우 Events Events @capgo/capacitor-업데이터 Capgo native 기능을 사용하는 @capgo/capacitor-업데이터에 대해 Capgo 플러그인 디렉토리 Capgo 제품 워크플로우에서 플러그인 디렉토리. Capacitor Capgo Capacitor 플러그인 구현 세부 사항을 위해 Capgo에 의해 구현됩니다. 플러그인 추가 또는 업데이트 플러그인 추가 또는 업데이트 아이오닉 엔터프라이즈 플러그인 대안 아이오닉 엔터프라이즈 플러그인 대안