使用 @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- 取消一个任务。isTaskRegisteredAsync- 检查一个任务的注册状态。getRegisteredTasksAsync- 查看已注册的任务名称。getStatusAsync- 检查本地背景任务的可用性。triggerTaskWorkerForTestingAsync- 在开发环境下触发已注册的任务。addExpirationListener- 在 iOS 中响应任务过期事件。
示例用途
在模块范围内定义任务,使其在系统唤醒应用时可用:
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背景处理。
完整参考
- GitHub: https://github.com/Cap-go/capacitor-background-task/
- 文档:/docs/plugins/background-task/
继续使用@capgo/capacitor-background-task
如果您正在使用 使用@capgo/capacitor-background-task 规划原生插件工作的@__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-background-task 连接到@capgo/capacitor-background-task 为 @capgo/capacitor-background-task 的实现细节 开始使用 为 Getting Started 的实现细节 Capgo 插件目录 为 Capgo 插件目录 的产品工作流程 Capacitor 插件由 Capgo 提供 为 Capacitor 插件由 Capgo 提供 的实现细节 添加或更新插件 为添加或更新插件 的实现细节