내용으로 건너뛰기

Getting Started

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

설치

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

iOS 설정

설치

__CAPGO_KEEP_0__ 앱에 배경 처리 모드 및 허용된 작업 식별자를 추가하십시오. 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 상태 확인

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

클립보드에 복사

Task를 해제하는 방법
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();

리액트 네이티브 백그라운드 작업 호환성

Section titled “리액트 네이티브 백그라운드 작업 호환성”

플러그인은 앱이 Capacitor로 마이그레이션하는 경우에도 작은 호환성层를 노출합니다. 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 하게 유지하세요.
  • __CAPGO_KEEP_0__ 상태를 저장한 후 반환하세요. BackgroundTaskResult.Success.
  • 사용자에게 보이는 마감일이나 알람을 위해 배경 작업에 의존하지 마세요.

Getting Started에서 계속하세요.

Getting Started에서 계속하세요.

Capacitor를 사용하는 경우 Getting Started Capacitor를 사용하는 경우 native plugin 작업을 계획하는 경우, @capgo/capacitor-background-task를 사용하여 Using @capgo/capacitor-background-task에서 native capability를 사용하는 경우 Capgo Plugin Directory 제품 워크플로우에 대한 Capgo 플러그인 디렉토리에서 Capacitor 플러그인에 대한 Capgo 제품 워크플로우에 대한 Capacitor 플러그인에 대한 Capgo 플러그인을 추가하거나 업데이트 플러그인을 추가하거나 업데이트에 대한 구현 세부 정보 아이오닉 엔터프라이즈 플러그인 대체 제품 워크플로우에 대한 아이오닉 엔터프라이즈 플러그인 대체