флаттер, как лучше всего обновлять Firebase каждые 24 часа автоматически? - PullRequest
0 голосов
/ 05 декабря 2018

Я бы хотел обновлять Firestore document каждый день в 6 часов утра автоматически.
Например, есть приложение для котировок и каждое утро обновлять котировку, чтобы пользователь мог видеть разныецитаты.
Я не возражаю против выполнения кода на устройстве iOS или Android, потому что у меня есть оба телефона.
Но я хочу, чтобы приложение обновляло документ, даже если я сплю.
Что такоелучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 01 августа 2019

Хорошие новости, это несколько возможно.

Фоновые задачи в двух словах

На Android вы бы использовали WorkManager.Вы можете попросить инфраструктуру Android запланировать вашу задачу где-то в будущем (точные часы не поддерживаются).

При iOS вы включаете Background Fetch в XCode или вручную редактируете файл Info.plist.

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

enter image description here

Плагин 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());
}
0 голосов
/ 05 декабря 2018

Извините, в этом случае вам нужно будет использовать WorkManager на Android.Это способ использовать фоновый сервис для этого случая.В iOS я не знаю как.

Я думаю, что невозможно создать фоновые службы во Flutter, потому что они запускаются в другом контексте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...