Flutter - как выполнить функцию в определенное время, когда приложение находится в фоновом режиме?

I want to execute a function at a specific time but when the app is closed. The function will display a notification.

This is the function which I want to execute:

      Future<void> showDailyAtTime() async {
 var reviewTime = Time(17, 05, 40);
 var androidChannelSpecifics = AndroidNotificationDetails(
  'CHANNEL_ID 2',
  'CHANNEL_NAME 2',
  "CHANNEL_DESCRIPTION 2",
  importance: Importance.max,
  priority: Priority.high,
 );
 var iosChannelSpecifics = IOSNotificationDetails();
 var platformChannelSpecifics =
 NotificationDetails(android: androidChannelSpecifics, iOS: iosChannelSpecifics);
 await flutterLocalNotificationsPlugin.showDailyAtTime(
  0,
  'Test Title at ${reviewTime.hour}:${reviewTime.minute}.${reviewTime.second}',
  'Test Body', //null
  reviewTime,
  platformChannelSpecifics,
  payload: 'Test Payload',
 );
}

Edit:

As per the suggestion of Tirth Patel in the post I have implemented it like this:

      void callbackDispatcher() {
 Workmanager().executeTask((taskName, inputData) async {
notificationPlugin.showDailyAtTime();
return Future.value(true);
 });
}

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Workmanager().initialize(callbackDispatcher);
runApp(MyApp());
}

But still, it doesn't work. I am using the flutter local notification package.

Please help me with this.

Thanks for your replies.

1 ответ

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

Решение: нам нужно включить автоматический запуск в настройках приложения, чтобы служба продолжала работать. (Информация о приложении -> Автозапуск -> Включить)

Другие вопросы по тегам