颤抖每24小时自动更新一次Firebase的最佳方法是啥?
Posted
技术标签:
【中文标题】颤抖每24小时自动更新一次Firebase的最佳方法是啥?【英文标题】: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 上执行代码,因为我有两部手机。
但我想要一个应用程序来更新文档,即使我在睡觉。
这样做的最佳方法是什么?
【问题讨论】:
这些似乎是您可能想要在服务器端而不是客户端做的事情。 How to schedule background tasks in 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 中同时支持 WorkManager
和 performFetch
。
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以上是关于颤抖每24小时自动更新一次Firebase的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
从 Firebase 到 BigQuery 的实时或每小时数据同步