メインコンテンツにスキップ
プラグインに戻る
@capgo/capacitor-バックグラウンドタスク
チュートリアル
by github.com/Cap-go

バックグラウンドタスク

iOSとAndroidでExpoスタイルのタスク登録を使用して、定期的なバックグラウンドフェッチタスクをスケジュールします。

ガイド

バックグラウンドタスクのチュートリアル

@capgo/capacitor-バックグラウンドタスクを使用して

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>

Then run:

npx cap sync ios

What This Plugin Exposes

  • defineTask - 名前付きタスクのJavaScriptコールバックを定義します。
  • registerTaskAsync - 期間限定タスクを保存してスケジュールします。
  • unregisterTaskAsync - 1つのタスクをキャンセルします。
  • isTaskRegisteredAsync - 1つのタスクの登録状態を確認します。
  • getRegisteredTasksAsync - 登録されたタスク名の一覧を表示します。
  • getStatusAsync - ネイティブバックグラウンドタスクの利用可能性を確認します。
  • triggerTaskWorkerForTestingAsync - 開発用に登録されたタスクを即時実行します。
  • addExpirationListener - iOSがタスクを期限切れとして扱ったときに反応します。

Example Usage

モジュールスコープでタスクを定義して、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を使用している場合 Capgoを使用してnativeプラグインの作業を計画する場合、@capgo/capacitor-background-task @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-background-task nativeプラグインの実装詳細については、@capgo/capacitor-background-task for the implementation detail in @capgo/capacitor-background-task, Getting Startedの実装詳細については、 Capgo プラグイン ディレクトリ Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, and __CAPGO_KEEP_0__ プラグイン __CAPGO_KEEP_1__