首页 > 解决方案 > 颤抖每24小时自动更新一次Firebase的最佳方法是什么?

问题描述

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

标签: flutter

解决方案


好消息是有点可能。

后台任务简述

你会Android使用 . WorkManager您可以要求Android框架在未来某处安排您的任务(不支持确切的时间)。

在XCode 中iOS启用Background Fetch或手动编辑Info.plist文件。

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

在此处输入图像描述

WorkManager 插件

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

flutter_workmanager插件同时支持一个统一WorkManagerperformFetchDart API。

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());
}

推荐阅读