メインコンテンツへスキップ
@capgo/capacitor-background-task デバイス 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 アプリで、名前付きタスク、永続的な登録、ステータス確認、登録解除、開発用トリガーを使用して、定期的なバックグラウンドフェッチ処理をスケジュールします。このプラグインは 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 - 1 つのタスクをキャンセルします。
  • isTaskRegisteredAsync - 1 つのタスクの登録状態を確認します。
  • 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 の実装の詳細については、 スタートガイド スタートガイドの実装詳細については、 Capgo プラグインディレクトリ Capgo プラグインディレクトリのプロダクトワークフローについては、 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" からインポートしてください。

@capgo/capacitor-background-task は React、Vue、Angular で動作しますか?

はい。Background Task は Capacitor パッケージなので、Ionic、React、Vue、Angular、Svelte、素の JavaScript など、Capacitor 上で動くあらゆる Web フレームワークで使えます。

@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 から無料でインストールできます。バグ報告やプルリクエストも歓迎します。

App Store の審査を受けずに、Background Task を使っている code を更新できますか?

プラグインのインストールやアップグレードはネイティブの code を変更するため、新しいストアビルドが必要です。その後は、プラグインを呼び出す JavaScript、HTML、CSS の変更を Capgo Live Updates で即座に配信できます。

アプリの審査を待たずにBackground Taskの変更を配信

プラグインをストア用ビルドに組み込めば、Capgo live updates で JavaScript、HTML、CSS の変更を数分でユーザーに配信できます

Capgo から始める