본문 바로가기
@capgo/capacitor-background-task Device API 오픈 소스

백그라운드 작업 Capacitor 플러그인

Expo 스타일 태스크 등록으로 iOS와 Android에서 주기적인 백그라운드 fetch 작업을 스케줄링하세요

설치

bun add @capgo/capacitor-background-task bunx cap sync
npm, pnpm 또는 yarn
  • npm install @capgo/capacitor-background-task
  • pnpm add @capgo/capacitor-background-task
  • yarn add @capgo/capacitor-background-task

가이드

Capacitor에서 Background Task 사용법

기기에서 테스트하기

Capgo 앱을 다운로드한 후 QR code을 스캔하세요.

Background Task 플러그인 미리보기 QR code

@capgo/capacitor-background-task 사용하기

Capacitor 앱에서 이름이 지정된 작업, 영구 등록, 상태 확인, 등록 해제, 개발용 트리거를 사용해 주기적인 백그라운드 fetch 작업을 스케줄링하세요. 이 플러그인은 Android WorkManager와 iOS BGTaskScheduler를 사용합니다.

설치

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

플러그인이 제공하는 기능

  • defineTask - 이름이 지정된 태스크의 JavaScript 콜백 정의
  • registerTaskAsync - 주기 태스크 저장 및 스케줄링
  • unregisterTaskAsync - 특정 태스크 취소
  • isTaskRegisteredAsync - 특정 태스크의 등록 상태 확인
  • getRegisteredTasksAsync - 등록된 태스크 이름 목록 조회
  • getStatusAsync - 네이티브 백그라운드 태스크 사용 가능 여부 확인
  • triggerTaskWorkerForTestingAsync - 개발용으로 등록된 태스크를 즉시 트리거
  • addExpirationListener - iOS에서 태스크가 만료될 때 대응

사용 예시

OS가 앱을 깨울 때 사용할 수 있도록 태스크를 모듈 스코프에 정의하세요:

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

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

상태와 등록된 태스크 이름 확인:

const status = await BackgroundTask.getStatusAsync();
const tasks = await BackgroundTask.getRegisteredTasksAsync();

console.log({ status, tasks });

개발용 실행 트리거:

await BackgroundTask.triggerTaskWorkerForTestingAsync();

작업 취소:

await BackgroundTask.unregisterTaskAsync(SYNC_TASK);

플랫폼 참고 사항

  • 백그라운드 작업 스케줄은 정확한 타이머가 아니라 기회가 될 때 실행됩니다.
  • Android의 주기적 작업은 최소 15분의 간격이 필요합니다.
  • iOS는 minimumInterval 를 가장 빠른 시작 시간으로 간주하며, 실제 실행은 더 늦어질 수 있습니다.
  • iOS 백그라운드 프로세싱은 실제 기기에서 테스트하세요.

전체 레퍼런스

@capgo/capacitor-background-task 사용하기에서 계속하기

사용 중이라면 @capgo/capacitor-background-task 사용하기 네이티브 플러그인 작업을 계획하려면, 이를 다음 항목과 연결하세요: @capgo/capacitor-background-task @capgo/capacitor-background-task의 구현 세부 사항은, 시작하기 Getting Started의 구현 상세 내용은 Capgo 플러그인 디렉토리 Capgo Plugin Directory의 제품 워크플로우에 맞춰, Capgo의 Capacitor 플러그인 Capgo의 Capacitor Plugins 구현 세부 사항 및 플러그인 추가 또는 업데이트 플러그인 추가 또는 업데이트의 구현 세부 사항은.

자주 묻는 질문

Background Task 플러그인 FAQ

Capacitor 앱에 Background Task 플러그인을 어떻게 설치하나요?

"bun add @capgo/capacitor-background-task"(또는 "npm install @capgo/capacitor-background-task")를 실행한 다음 "bunx cap sync"를 실행해 iOS와 Android 프로젝트가 네이티브 code를 가져오도록 하세요. 앱 code에서 "@capgo/capacitor-background-task"로부터 import 하면 됩니다.

@capgo/capacitor-background-task는 React, Vue, Angular에서 동작하나요?

네. Background Task는 Capacitor 패키지라서 Ionic, React, Vue, Angular, Svelte, 일반 JavaScript 등 Capacitor 안에서 실행되는 모든 웹 프레임워크에서 동작합니다.

@capgo/capacitor-background-task은 어떤 Capacitor 버전을 지원하나요?

Capgo 플러그인은 Capacitor의 메이저 버전을 따릅니다. 사용 중인 Capacitor 메이저 버전과 일치하는 플러그인 메이저 버전을 사용하세요 (예: Capacitor 8에는 플러그인 v8). 유지 관리되는 버전은 GitHub README의 호환성 표에서 확인할 수 있습니다.

@capgo/capacitor-background-task는 무료 오픈 소스인가요?

네. code 소스 코드는 GitHub의 https://github.com/Cap-go/capacitor-background-task/에 공개되어 있고, npm에서 무료로 설치할 수 있습니다. 버그 리포트와 pull request는 환영합니다.

App Store 심사 없이 Background Task를 사용하는 code를 업데이트할 수 있나요?

플러그인을 설치하거나 업그레이드하면 네이티브 code가 변경되므로 새로운 스토어 빌드가 필요합니다. 그 이후에는 플러그인을 호출하는 JavaScript, HTML, CSS 변경 사항을 Capgo live updates로 즉시 배포할 수 있습니다.

앱 리뷰 대기 없이 Background Task 변경사항 배포

스토어 빌드에 플러그인이 포함되면, Capgo live updates로 JavaScript, HTML, CSS 변경 사항을 몇 분 만에 사용자에게 푸시할 수 있습니다.

Capgo로 시작하기