6 votes

Comment exécuter Workmanager toutes les 15 minutes en arrière-plan dans Flutter IOS ?

Je suis en train de travailler sur l'ajout d'un flotteur de gestion du travail à mon projet. Maintenant, il fonctionne parfaitement sur le système Android comme suit :

const fetchBackground = "fetchBackground";

void callbackDispatcher() {
  Workmanager.executeTask((task, inputData) async {
    switch (task) {
      case fetchBackground:
        Position userLocation = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
        notif.Notification notification = new notif.Notification();
        notification.showNotificationWithoutSound(userLocation);
        break;
    }
    return Future.value(true);
  });
}

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(

        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}
class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  void initState() {
    super.initState();

    Workmanager.initialize(
      callbackDispatcher,
      isInDebugMode: true,
    );

    Workmanager.registerPeriodicTask(
      "1",
      fetchBackground,
      frequency: Duration(minutes: 15),
    );
  }

Donc maintenant, toutes les 15 minutes, l'application s'exécutera en arrière-plan dans le suivant et enverra une alerte à l'utilisateur ; c'est parfait. Mais avec IOS je ne peux pas utiliser : registerPeriodicTask.

Workmanager.registerPeriodicTask(
      "1",
      fetchBackground,
      frequency: Duration(minutes: 15),
    );

Dans ce cas, l'application fonctionne pour moi sans utiliser registerPeriodicTask, mais je dois exécuter Debug Simulate Background Fetch manuellement afin d'obtenir l'alerte de XCode. Quelle est donc la solution pour que l'application s'exécute toutes les 15 minutes en arrière-plan sous iOS et Android ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X