메뉴로 이동

이벤트

GitHub

Capacitor 업데이터 플러그인은 업데이트 프로세스를 모니터링하고 다른 상태에 대한 응답을 제공하기 위해 듣기 위한 여러 이벤트를 제공합니다.

이벤트 리스너 설정

이벤트 리스너 설정 섹션

이벤트를 듣기 위해 사용하는 addListener 메소드를 CapacitorUpdater 객체에:

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

사용 가능한 이벤트

사용 가능한 이벤트 섹션

다운로드 프로세스 중에 발생하는 이벤트입니다. 다운로드 진행 정보를 제공합니다.

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

이벤트 데이터:

  • percent__: number - 다운로드 진행률 (0-100)%
  • bundle__: BundleInfo - 다운로드 중인 번들에 대한 정보

업데이트가 필요하지 않음을 확인할 때 발생합니다.

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

이벤트 데이터:

  • bundle__: BundleInfo - 현재 다운로드 중인 번들에 대한 정보

새로운 업데이트가 다운로드 가능할 때 발생합니다.

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

다운로드 완료

다운로드 완료 시 발생하는 이벤트.

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 - 다운로드한 번들에 대한 정보

복사하기

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

__CAPGO_KEEP_0__

  • version: string - 메이저 업데이트의 버전 번호

앱이 다음으로 시작할 때 업데이트가 설치되지 않은 경우 발생합니다.

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

이벤트 데이터:

  • bundle: BundleInfo - 설치에 실패한 배포에 대한 정보

downloadFailed

다운로드 실패

배포 다운로드가 실패한 경우 발생합니다.

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

이벤트 데이터:

  • version: string - 다운로드 실패한 버전

앱이 다시 로드된 경우에 발생하는 이벤트입니다.

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

이벤트 데이터: 없음

앱이 업데이트 후 사용할 준비가 된 경우에 발생하는 이벤트입니다.

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

이벤트 데이터:

  • bundle: BundleInfo - 현재 번들에 대한 정보
  • status: string - __CAPGO_KEEP_0__

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

__CAPGO_KEEP_0__ BundleStatus __CAPGO_KEEP_0__

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

Best Practices

Best Practices
  1. 항상 호출하세요 notifyAppReady(): 앱 초기화 후에 항상 이 메서드를 호출하여 롤백을 방지하세요.

  2. 실패를 잘 처리하세요: 다운로드 및 업데이트 실패 시 적절한 오류 처리를 구현하세요.

  3. 사용자에게 피드백을 제공하세요: 다운로드 진행 이벤트를 사용하여 사용자에게 업데이트 진행률을 표시하세요.

  4. 리스너를 정리하세요: 이벤트 리스너를 더 이상 필요하지 않으면 제거하여 메모리 누수를 방지하세요.

  5. 테스트 업데이트 시나리오: 업데이트 시나리오를 테스트하세요. 이에는 실패, 롤백 및 주요 업데이트 등이 포함됩니다.

이벤트에서 계속

이벤트에서 계속

이러한 기능을 사용하고 계신가요? 이벤트 이벤트를 사용하여 네이티브 플러그인 작업을 계획하고, 이를 @capgo/capacitor-업데이터 @capgo/capacitor-업데이터를 사용하여 네이티브 기능과 함께 Capgo 플러그인 디렉토리 Capgo 플러그인 디렉토리를 사용하여 제품 워크플로우 Capacitor 플러그인들에 의해 Capgo Capacitor 플러그인들에 의해 Capgo의 구현 세부 사항에 대해 플러그인 추가 또는 업데이트 플러그인 추가 또는 업데이트의 구현 세부 사항에 대해, 및 아이오닉 엔터프라이즈 플러그인 대체 아이오닉 엔터프라이즈 플러그인 대체의 제품 워크플로에 대해.