Библиотека фоновой выборки Flutter не запускается после завершения работы приложения

#android #flutter #background-fetch

#Android #flutter #фоновая выборка

Вопрос:

Я пытаюсь реализовать функцию типа push-уведомлений, чтобы напомнить пользователю о некоторых событиях. Я хочу, чтобы мое приложение получало контент с сервера один или два раза в день.

Я пытаюсь использовать библиотеку background_fetch. Проблема в том, что при завершении работы приложения задание не вызывается, даже если я stopOnTerminate: false, установил. Вот мой код настройки:

 var config = BackgroundFetchConfig(
  minimumFetchInterval: 15,
  forceAlarmManager: false,
  stopOnTerminate: false,
  startOnBoot: true,
  enableHeadless: true,
  requiresBatteryNotLow: false,
  requiresCharging: false,
  requiresStorageNotLow: false,
  requiresDeviceIdle: false,
  requiredNetworkType: NetworkType.ANY,

);

BackgroundFetch.configure(config, (String taskId) async {
  print("[BackgroundFetch] Event received $taskId");

  print("my code is here");

  BackgroundFetch.finish(taskId);
}).then((int status) {
  print('[BackgroundFetch] configure success: $status');

}).catchError((e) {
  print('[BackgroundFetch] configure ERROR: $e');
});
  

Мой класс MainActivity:

 public class MainActivity extends FlutterActivity implements PluginRegistry.PluginRegistrantCallback{

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    BackgroundFetchPlugin.setPluginRegistrant(this);
}


@Override
public void registerWith(PluginRegistry registry) {
    GeneratedPluginRegistrant.registerWith((FlutterEngine) registry);
}
}
  

Я также добавил xmlns:tools="http://schemas.android.com/tools" и tools:replace="android:label" в манифест.

Я имитирую работу с помощью этой команды: adb shell cmd jobscheduler run -f com.mycompany.appname 999 .
Когда приложение активно или находится на переднем плане, моя функция вызывается командой снова и снова (без проблем, работает хорошо), но когда я завершаю работу своего приложения, команда выдает мне это сообщение: Could not find job 999 in package com.mycompany.appname / user 0 ,
иногда оно выдает мне Running job [FORCED] только один раз, но на самом деле моя функция не вызывается, и напри другом запуске он сообщает мне, что задания нет.

Я слышал, что это не работает в режиме отладки, поэтому я запускаю свое приложение с flutter run --release помощью . Ну, безуспешно.

В чем может быть проблема? Заранее спасибо.

Ответ №1: