メインコンテンツへスキップ

スタートガイド

GitHub

@capgo/capacitor-background-task Capacitor アプリで、同期、キャッシュの更新、アナリティクスの送信、その他のバックグラウンドでのフェッチ操作などのために、定期的なジョブを登録できます。

AIアシストによるセットアップでプラグインをインストールできます。以下のコマンドを使用して、お使いのAIツールに Capgo のスキルを追加してください:

ターミナル
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

次に、以下のプロンプトを使用します:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-background-task` plugin in my project.

手動セットアップを希望する場合は、以下のコマンドを実行してプラグインをインストールし、下記のプラットフォーム別の手順に従ってください:

ターミナル
npm install @capgo/capacitor-background-task
npx cap sync

バックグラウンド処理モードと許可されたタスク識別子を以下に追加します: 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';
  • モジュールのスコープ: 登録 defineTask の前に registerTaskAsync.
  • iOSのID: 一致させる BGTaskSchedulerPermittedIdentifiers エントリ。
  • 実行間隔: OSにより、以下の時間を超えてジョブが遅延する場合があります minimumInterval.

コールバックをモジュールスコープで定義してください。これにより、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;
}
});

呼び出す 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 });

開発やQA環境でテストトリガーを使用できます。登録されているすべてのタスクが即座に呼び出されます。

await BackgroundTask.triggerTaskWorkerForTestingAsync();
await BackgroundTask.unregisterTaskAsync(SYNC_TASK);

iOSでは、JavaScriptの処理が完了する前にバックグラウンドタスクが停止されることがあります。クリーンアップやチェックポイントの保存が必要な場合は、expiration イベントをリッスンしてください。

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,
});
  • バックグラウンドのスケジューリングは正確ではなく、実行可能なタイミングで行われます。
  • 処理は短時間で、べき等性を保つようにしてください。
  • タスクを終了する前に、必要な状態をすべて永続化してください。 BackgroundTaskResult.Success.
  • ユーザーに表示される期限やアラームの実行を、バックグラウンドタスクに依存しないでください。

Getting Startedの続きを進める

「Getting Started からの続き」セクション

使用している場合 スタートガイド ネイティブプラグインの作業を計画するには、次と連携してください: @capgo/capacitor-background-task の使い方 「Using @capgo/capacitor-background-task」のネイティブ機能については、 Capgo プラグインディレクトリ Capgo プラグインディレクトリのプロダクトワークフローについては、 Capgo による Capacitor プラグイン Capgo による Capacitor プラグインの実装詳細については、 プラグインの追加または更新 プラグインの追加または更新における実装詳細については、および Ionic Enterprise プラグインの代替案 Ionic Enterprise プラグインの代替案におけるプロダクトワークフローについては。