1

我想执行定期本地通知。我正在使用flutter_local_notification 和flutter Workmanager。问题是 callbackDispatcher 函数中的 executeTask 函数无法执行显示通知的代码,尽管它执行了例如调试消息。它没有给我任何错误或异常,并且工作人员的结果是成功的。我想知道问题可能是什么。显示本地通知的代码已经过测试,并且运行良好。这是我对颤振 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;
  }
4

0 回答 0