我想每天早上6点自动更新Firestore
document
。
例如,有一个报价应用程序,每天早晨将报价更新为新的报价,以便用户可以看到不同的报价。
我不介意在iOS设备或Android上执行代码,因为我有两部手机。
但是即使我在睡觉,我也想要一个应用来更新文档。
最好的方法是什么?
答案 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>
由于有很多将所有内容连接在一起的仪式,因此有一个方便的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());
}