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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...