每24小时自动更新Firebase的最佳方法是什么?

时间:2018-12-05 12:59:32

标签: flutter

我想每天早上6点自动更新Firestore document
例如,有一个报价应用程序,每天早晨将报价更新为新的报价,以便用户可以看到不同的报价。
我不介意在iOS设备或Android上执行代码,因为我有两部手机。
但是即使我在睡觉,我也想要一个应用来更新文档。
最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

对不起,在这种情况下,您将需要在Android上使用WorkManager。这是一种在这种情况下使用后台服务的方法。在iOS中,我不知道如何。

我认为在Flutter中创建后台服务是不可能的,因为它是在其他上下文中运行的。

答案 1 :(得分:0)

好消息,这在某种程度上是可能的。

概述背景任务

Android上,您将使用WorkManager。 您可以要求Android框架将任务安排在将来的某个地方(不支持确切的时间)。

iOS上,您可以在XCode中启用Background Fetch或手动编辑Info.plist文件。

<key>UIBackgroundModes</key>
  <array>
    <string>fetch</string>
  </array>
</key>

enter image description here

WorkManager插件

由于有很多将所有内容连接在一起的仪式,因此有一个方便的Flutter插件可以为您提供帮助。

flutter_workmanager插件在一个统一的Dart API中同时支持WorkManagerperformFetch

void callbackDispatcher() {
  Workmanager.executeTask((backgroundTask) {
    switch(backgroundTask) {
      case Workmanager.iOSBackgroundTask:
      case "firebaseTask":
        print("You are now in a background Isolate");
        print("Do some work with Firebase");
        Firebase.doSomethingHere();
        break;
    }
    return Future.value(true);
  });
}

void main() {
  Workmanager.initialize(callbackDispatcher);
  Workmanager.registerPeriodicTask(
    "1",
    "firebaseTask",
    frequency: Duration(days: 1),
    constraints: WorkManagerConstraintConfig(networkType: NetworkType.connected),
  );
  runApp(MyApp());
}