如何解决Flutter Workmanager:callbackDispatcher 函数不执行已注册的任务
我想执行定期的本地通知。我正在使用 Flutter_local_notification 和 Flutter Workmanager。问题是 callbackdispatcher 函数中的 executeTask 函数无法执行显示通知的代码,尽管它执行了例如调试消息。它没有给我任何错误或异常,工作结果是成功。我想知道可能是什么问题。显示本地通知的代码已经过测试,并且运行良好。 这是我对 Flutter Workmanager 的包装:
void callbackdispatcher() {
Workmanager.executeTask((taskName,inputData) async {
try {
print ("WorkManagerFactory::callbackdispatcher::executeTask()");
await notification.showNotification(inputData['title'],inputData['body']);
}
catch (e) {
print("There is indeed a problem with executing the notification code");
}
return Future.value(true);
}
);
}
void init() async {
print("WorkManagerFactory::init()");
WidgetsFlutterBinding.ensureInitialized();
await Workmanager.initialize(callbackdispatcher,isInDebugMode: true);
}
void registerMorningTask() async {
await Workmanager.registerPeriodicTask(
'1','periodicMorningMessage',frequency: Duration(minutes: 15),inputData: {'title': 'title for Now','body': 'body for Now'},);
}
void init() async {
print("Notification()::init()");
WidgetsFlutterBinding.ensureInitialized();
const AndroidInitializationSettings androidInitializationSettings = AndroidInitializationSettings('app_icon');
InitializationSettings initializationSettings = InitializationSettings(android: androidInitializationSettings);
await FlutterlocalnotificationsPlugin.initialize(initializationSettings,onSelectNotification: (String payload) async {
if(payload != null)
debugPrint('notification payload: ' + payload);
}
);
}
Future<void> showNotification(String inTitle,String inMessage) async {
print('Notification::showNotification()');
const AndroidNotificationDetails androidplatformChannelSpecifics =
AndroidNotificationDetails(
'your channel id','your channel name','your channel description',importance: Importance.max,priority: Priority.high,showWhen: true,styleinformation: BigTextStyleinformation(''),ongoing: false,playSound: true,enableVibration: true
);
const NotificationDetails platformChannelSpecifics =
NotificationDetails(android: androidplatformChannelSpecifics);
await FlutterlocalnotificationsPlugin.show(
0,inTitle,inMessage,platformChannelSpecifics,payload: 'item x');
return;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。