Хорошие новости, это несколько возможно.
Фоновые задачи в двух словах
На Android
вы бы использовали WorkManager
.Вы можете попросить инфраструктуру Android
запланировать вашу задачу где-то в будущем (точные часы не поддерживаются).
При iOS
вы включаете Background Fetch
в XCode или вручную редактируете файл Info.plist
.
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
</array>
</key>
Плагин WorkManager
Поскольку существует множество церемоний для объединения всего, есть удобный плагин Flutter
, который поможет вам.
Плагин flutter_workmanager поддерживает как WorkManager
, так и performFetch
в одном унифицированном API-интерфейсе Dart.
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());
}