내용으로 건너뛰기

시작하기

@capgo/capacitor-background-task Capacitor 앱이 동기화, 캐시 갱신, 분석 데이터 전송 및 다른 배경 데이터 가져오기 작업을 위해 주기적으로 등록할 수 있도록 합니다.

설치

설치
터미널 창
npm install @capgo/capacitor-background-task
npx cap sync

iOS 설정

설치

배경 처리 모드를 추가하고 허용된 작업 식별자를 ios/App/App/Info.plist:

<key>UIBackgroundModes</key>
<array>
<string>processing</string>
</array>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>app.capgo.backgroundtask.processing</string>
</array>

그런 다음 다음 명령어를 실행하세요.

터미널 창
npx cap sync ios
import { BackgroundTask, BackgroundTaskResult } from '@capgo/capacitor-background-task';

모듈 스코프에서 콜백을 정의하여 앱이 운영 체제에 의해 시작되면 즉시 등록되도록 하세요.

import { BackgroundTask, BackgroundTaskResult } from '@capgo/capacitor-background-task';
const SYNC_TASK = 'sync-offline-data';
BackgroundTask.defineTask(SYNC_TASK, async () => {
try {
await fetch('https://api.example.com/sync', { method: 'POST' });
return BackgroundTaskResult.Success;
} catch {
return BackgroundTaskResult.Failed;
}
});

스케줄 등록

스케줄 등록 섹션

앱이 충분한 컨텍스트를 갖춘 후 배경 작업을 호출하세요. registerTaskAsync 스케줄이 등록된 후 앱이 충분한 컨텍스트를 갖춘 후 배경 작업을 호출하세요.

await BackgroundTask.registerTaskAsync(SYNC_TASK, {
minimumInterval: 30,
requiresNetwork: true,
});

minimumInterval Android는 15분 이상의 최소 시간을 강제로 적용합니다. iOS는 값을 가장 빠른 시작 날짜로 처리하고 나중에 실행할 수 있습니다.

상태 확인

상태 확인
const status = await BackgroundTask.getStatusAsync();
const isRegistered = await BackgroundTask.isTaskRegisteredAsync(SYNC_TASK);
const registeredTasks = await BackgroundTask.getRegisteredTasksAsync();
console.log({ status, isRegistered, registeredTasks });

클립보드 복사

await BackgroundTask.triggerTaskWorkerForTestingAsync();

클립보드 복사

클립보드 복사
await BackgroundTask.unregisterTaskAsync(SYNC_TASK);

iOS는 JavaScript 작업이 완료되기 전에 백그라운드 작업을 중단할 수 있습니다. cleanup 또는 checkpointing이 중요할 때는 만료 이벤트를 듣도록 하세요.

const expiration = await BackgroundTask.addExpirationListener((event) => {
console.warn('Background task expired', event.taskName, event.taskId);
});
await expiration.remove();

클립보드 복사 react-native-background-task.

import { BackgroundTask } from '@capgo/capacitor-background-task';
BackgroundTask.define(async () => {
await fetch('https://api.example.com/sync', { method: 'POST' });
});
await BackgroundTask.schedule({
period: 1800,
});

백그라운드 스케줄링은 정확하지 않습니다.

작업을 짧고 idempotent하게 유지하세요.
  • iOS Expiration
  • Section titled “iOS Expiration”
  • __CAPGO_KEEP_0__ BackgroundTaskResult.Success.
  • __CAPGO_KEEP_0__