Guía
Cómo usar Tarea de fondo en Capacitor
Usando @capgo/capacitor-tarea-de-fondo
Schedule periodic background fetch work in a Capacitor app with named tasks, persistent registration, status checks, unregistering, and a development trigger. The plugin uses Android WorkManager and iOS BGTaskScheduler.
Instalar
npm install @capgo/capacitor-background-task
npx cap sync
iOS Setup
Agregar soporte de procesamiento de fondo a ios/App/App/Info.plist:
<key>UIBackgroundModes</key>
<array>
<string>processing</string>
</array>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>app.capgo.backgroundtask.processing</string>
</array>
Luego ejecutar:
npx cap sync ios
¿Qué expone este plugin?
defineTask- Definir el callback de JavaScript para una tarea nombrada.registerTaskAsync- Persistir y programar una tarea periódica.unregisterTaskAsync- Cancelar una tarea.isTaskRegisteredAsync- Verificar el estado de registro de una tarea.getRegisteredTasksAsync- Listar nombres de tareas registradas.getStatusAsync- Verificar la disponibilidad de tareas de fondo nativas.triggerTaskWorkerForTestingAsync- Desencadenar tareas registradas inmediatamente para desarrollo.addExpirationListener- Reaccionar cuando iOS expira una tarea.
- Ejemplo de Uso
Define the task at module scope so it is available when the OS wakes the app:
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,
});
- Verificar el estado y nombres de tareas registradas:
const status = await BackgroundTask.getStatusAsync();
const tasks = await BackgroundTask.getRegisteredTasksAsync();
console.log({ status, tasks });
- Desencadenar una ejecución de desarrollo:
await BackgroundTask.triggerTaskWorkerForTestingAsync();
- Cancelar la tarea:
await BackgroundTask.unregisterTaskAsync(SYNC_TASK);
Nota de plataforma
- Los horarios de tarea de fondo son oportunistas, no temporizadores exactos.
- El trabajo periódico de Android tiene un intervalo mínimo de 15 minutos.
- iOS trata
minimumIntervalas an earliest begin date and may run later. - Prueba la procesamiento de fondo de iOS en un dispositivo físico.
Referencia completa
- GitHub: https://github.com/Cap-go/capacitor-tarea-de-fondo/
- Documentación: /docs/plugins/tarea-de-fondo/
Sigue adelante desde Usando @capgo/capacitor-tarea-de-fondo
Si estás utilizando Usando @capgo/capacitor-tarea de fondo para planificar el trabajo del plugin nativo, conectarlo con @capgo/capacitor-tarea de fondo para los detalles de implementación en @capgo/capacitor-tarea de fondo, Getting Started para los detalles de implementación en Inicio, Directorio de Plugins de Capgo para el flujo de trabajo del producto en el directorio de plugins Capgo Plugins de Capacitor por Capgo para los detalles de implementación en Plugins de Capacitor por Capgo, y Agregar o Actualizar Plugins para los detalles de implementación en Agregar o Actualizar Plugins.