__CAPGO_KEEP_0__

后台任务 Capacitor 插件

在 iOS 和 Android 上使用 Expo 风格任务注册来定期调度后台抓取任务

安装

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 中使用背景任务

在设备上测试

下载 Capgo 应用程序,然后扫描二维码 code

背景任务插件预览二维码 code

使用 @capgo/capacitor-background-task

在具有命名任务、持久注册、状态检查、注销和开发触发器的 Capacitor 应用中定期执行背景 fetch 工作。该插件使用 Android WorkManager 和 iOS BGTaskScheduler。

安装

npm install @capgo/capacitor-background-task
npx cap sync

iOS 设置

向 __CAPGO_KEEP_0__ 添加背景处理支持 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的实现细节 开始使用 查看开始使用的实现细节 Capgo 插件目录 了解Capgo 插件目录中的产品工作流程 Capacitor 由Capgo 提供的插件 查看Capacitor 由Capgo 提供的插件的实现细节 添加或更新插件 查看添加或更新插件的实现细节

常见问题

后台任务插件常见问题

如何在Capacitor应用中安装背景任务插件?

运行"bun add @capgo/capacitor-background-task" (或"npm install @capgo/capacitor-background-task"),然后运行"bunx cap sync",使iOS和Android项目捕获native code。从"@capgo/capacitor-background-task"中导入它到您的应用code。

@capgo/capacitor-background-task与React、Vue和Angular兼容吗?

是的。背景任务是一个Capacitor包,因此它与任何在Capacitor中运行的Web框架兼容,包括Ionic、React、Vue、Angular、Svelte和普通JavaScript。

哪个Capacitor版本支持@capgo/capacitor-background-task?

Capgo插件遵循Capacitor的主要版本:使用与Capacitor主要版本匹配的插件主要版本(例如,插件v8与Capacitor 8)。在GitHub README中列出的维护版本的兼容性表格。

@capgo/capacitor-background-task是否免费和开源?

Yes. The source code is public on GitHub at https://github.com/Cap-go/capacitor-background-task/ and the package is free to install from npm. Bug reports and pull requests are welcome.

是否可以在不经过App Store审查的情况下更新使用背景任务的code?

安装或升级插件会更改native code,因此需要一个新的商店构建。然后,JavaScript、HTML和CSS更改,调用插件的更改,可以立即与Capgo实时更新一起发布。

无需等待应用程序审查即可将背景任务更新

一旦插件添加到您的商店构建中,Capgo即刻将JavaScript、HTML和CSS更改推送给用户。

开始使用Capgo