Задача в режиме headless не запускаестя после закрытия приложения

Моё приложение должно отсылать уведомление пользователю, когда его батарея садится до указанного им уровня. Всё так и работает, пока не убирешь приложение из "Недавних". Тогда уведомления просто не приходят.

Код функции main()

void main() {
  runApp(App());
  BackgroundFetch.registerHeadlessTask(checkBatteryInfo);
  BackgroundFetch.configure(
      BackgroundFetchConfig(
          minimumFetchInterval: 15,
          stopOnTerminate: false,
          enableHeadless: true,
          startOnBoot: true),
      checkBatteryInfo);
}

Код колбэка

void checkBatteryInfo(String taskId) async {
  FlutterLocalNotificationsPlugin flnp = new FlutterLocalNotificationsPlugin();
  AndroidInitializationSettings android =
      new AndroidInitializationSettings('@mipmap/ic_launcher');
  InitializationSettings settings =
      new InitializationSettings(android: android);
  flnp.initialize(settings);
  AndroidNotificationDetails androidPlatformChannelSpecifics =
      new AndroidNotificationDetails('battery_notifications',
          'Уведомления о батарее', 'Уведомления при разряде батареи',
          importance: Importance.max, priority: Priority.high);
  NotificationDetails platformChannelSpecifics = new NotificationDetails(
    android: androidPlatformChannelSpecifics,
  );
  var batteryInfo = await BatteryInfoPlugin().androidBatteryInfo;
  SharedPreferences prefs = await SharedPreferences.getInstance();
  if (batteryInfo.batteryLevel < prefs.getDouble('warnValue') &&
      batteryInfo.chargingStatus != ChargingStatus.Charging) {
    flnp.show(0, 'У тебя садится батарея!', 'Поставь телефон на зарядку',
        platformChannelSpecifics);
  } else if (batteryInfo.batteryLevel < prefs.getDouble('recommendValue') &&
      batteryInfo.chargingStatus != ChargingStatus.Charging &&
      !prefs.getBool('shownRecommend')) {
    flnp.show(0, 'Рекомендую зарядить батарею', 'На всякий случай ;)',
        platformChannelSpecifics);
  } else {
    prefs.setBool('shownRecommend', false);
  }
  BackgroundFetch.finish(taskId);
}

Могу ещё кода добавить, если надо.


Ответы (0 шт):