Ejecución Estabilizada de Tareas en Segundo Plano en Flutter con WorkManager y BGTaskScheduler

Las optimizaciones de batería de Android e iOS suelen suspender o cancelar las tareas en segundo plano en las aplicaciones Flutter.
Explicamos cómo utilizar el paquete WorkManager, aislar callbacks con @pragma('vm:entry-point'), configurar Info.plist y depurar mediante comandos de CLI.
Puntos Clave
- Mecanismos del Sistema: Android utiliza WorkManager con restricciones y restricciones de red; iOS depende de BGTaskScheduler con límites de ~30 segundos.
- Separación de Isolates: Las tareas se ejecutan en un isolate independiente. Es obligatorio anotar el punto de entrada con
@pragma('vm:entry-point').- Restricciones en iOS: iOS no garantiza la ejecución a horas fijas; depende del estado de la batería y patrones de uso.
- Depuración por CLI: Permite forzar la ejecución de tareas usando ADB y LLDB sin esperar.
1. Código de Ejemplo
import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';
@pragma('vm:entry-point')
void callbackDispatcher() {
Workmanager().executeTask((taskName, inputData) async {
return Future.value(true);
});
}
Conclusión
El uso correcto de WorkManager e Isolates garantiza una sincronización en segundo plano sólida en ambas plataformas.