Flutter - 当应用程序处于后台时,如何在特定时间执行函数?

问题描述

我想在特定时间但应用程序关闭时执行一个函数。该函数显示通知

这是我要执行的函数

Future<void> dailyNotification() async {
DateTime Now= DateTime.Now();
Time reviewTime = Time(13,02,20 );
DateTime nottime = DateTime(Now.year,Now.month,Now.day,reviewTime.hour,reviewTime.minute,reviewTime.second);
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.zonedSchedule(
   2,'Test Title at ${reviewTime.hour}:${reviewTime.minute}.${reviewTime.second}','Test Body',//null
    nottime,platformChannelSpecifics,payload: 'Test Payload',);
 }

编辑:

根据 Tirth Patel 在帖子中的建议,我是这样实现的:

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

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Workmanager().initialize(callbackdispatcher);
Workmanager().registerPeriodicTask(
  "1","simplePeriodicTask",frequency: Duration(minutes: 15),);
runApp(MyApp());
}

但是还是不行。我正在使用颤振本地通知包。

我还无法解决这个问题。

请帮我解决这个问题。

感谢您的回复

解决方法

某些 Android 设备制造公司不允许 Android 手机在后台运行,我相信您的设备可能是其中之一。

解决方案我们需要在应用设置中启用自动启动以保持服务运行。 (应用信息 -> 自动启动 -> 启用)