Uso de @capgo/capacitor-background-task
Programa tareas periódicas de background fetch en una app Capacitor con tareas con nombre, registro persistente, comprobaciones de estado, desregistro y un trigger de desarrollo. El plugin usa Android WorkManager e iOS BGTaskScheduler.
Instalar
npm install @capgo/capacitor-background-task
npx cap sync
iOS Setup
Añade soporte de procesamiento en segundo plano 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 ejecuta:
npx cap sync ios
Lo que expone este plugin
defineTask- Define el callback de JavaScript para una tarea con nombre.registerTaskAsync- Persiste y programa una tarea periódica.unregisterTaskAsync- Cancela una tarea.isTaskRegisteredAsync- Comprueba el estado de registro de una tarea.getRegisteredTasksAsync- Lista los nombres de tareas registradas.getStatusAsync- Comprueba la disponibilidad de tareas en segundo plano nativas.triggerTaskWorkerForTestingAsync- Dispara las tareas registradas inmediatamente para desarrollo.addExpirationListener- Reacciona cuando iOS expira una tarea.
Ejemplo de uso
Define la tarea en el ámbito del módulo para que esté disponible cuando el SO despierte la 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,
});
Comprueba el estado y los nombres de tareas registradas:
const status = await BackgroundTask.getStatusAsync();
const tasks = await BackgroundTask.getRegisteredTasksAsync();
console.log({ status, tasks });
Dispara una ejecución de desarrollo:
await BackgroundTask.triggerTaskWorkerForTestingAsync();
Cancelar la tarea:
await BackgroundTask.unregisterTaskAsync(SYNC_TASK);
Notas de la plataforma
- Los horarios de las tareas en segundo plano son oportunistas, no temporizadores exactos.
- El trabajo periódico en Android tiene un intervalo mínimo de 15 minutos.
- iOS trata
minimumIntervalcomo fecha de inicio más temprana y puede ejecutarse más tarde. - Prueba el procesamiento en segundo plano de iOS en un dispositivo físico.
Referencia completa
- GitHub: https://github.com/Cap-go/capacitor-background-task/
- Docs: /docs/plugins/background-task/
Continúa desde Usando @capgo/capacitor-background-task
Si estás usando Uso de @capgo/capacitor-background-task para planificar el trabajo con plugins nativos, conéctalo con @capgo/capacitor-background-task para el detalle de la implementación en @capgo/capacitor-background-task, Primeros pasos para los detalles de implementación en Primeros pasos, Directorio de plugins de Capgo para el flujo de trabajo del producto en Capgo Plugin Directory, Plugins de Capacitor por Capgo para los detalles de implementación en Capacitor Plugins de Capgo, y Añadir o actualizar plugins para los detalles de implementación al añadir o actualizar plugins.