【问题标题】:flutter what is the best way to update Firebase every 24 hours automatically?颤抖每24小时自动更新一次Firebase的最佳方法是什么?
【发布时间】:2019-05-07 01:25:51
【问题描述】:

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

【问题讨论】:

标签: flutter


【解决方案1】:

好消息有点可能。

后台任务简介

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

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

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

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

【讨论】:

    【解决方案2】:

    抱歉,在这种情况下,您需要在 Android 上使用 WorkManager。这是一种在这种情况下使用后台服务的方法。在 iOS 中我不知道怎么做。

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

    【讨论】:

    • 在移动设备上执行这些逻辑不是一个好主意吗?我的意思是后台执行。
    • 当你有办法做到这一点时,这是个好主意。目前,我没有找到只使用 Flutter 的方法。
    • 你认为这行得通吗? [pub.dartlang.org/packages/background_fetch
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多