如何使用awesome_notifications处理Flutter中后台的通知操作按钮点击?

8oomwypt  于 2023-01-02  发布在  Flutter
关注(0)|答案(1)|浏览(250)

我在Flutter中使用了令人敬畏的通知来显示本地通知。我的计划是在通知中有一个操作按钮,当按下时,它会在后台(不打开应用程序)更改共享首选项中的一些值。这甚至有可能做到吗?
在初始化了令人敬畏的通知之后,我尝试在主函数中使用onActionReceivedMethod-listener和getInitialNotificationAction-method:

AwesomeNotifications().setListeners(onActionReceivedMethod: (action) async{
  print(action.body);
});

// OR

ReceivedAction? receivedAction = await AwesomeNotifications().getInitialNotificationAction(
    removeFromActionEvents: false
);
if (receivedAction?.body != null){
  print(receivedAction.body);
}

这两个工作(单独使用)只有当应用程序已经启动,但他们也给出了这个错误:
出色的通知:无法在Dart中处理后台消息,因为未注册Dart后台处理程序。(BackgroundService:58)
但是当应用程序没有打开的时候,我怎么能让它工作呢?我能创建一个没有Firebase的backgroung处理程序吗?或者有没有其他方法可以实现这一点?
下面是我的代码,我如何创建通知:

static Future<void> createSimpleNotification() async {
  await AwesomeNotifications().createNotification(
    content: NotificationContent(
        id: 1,
        channelKey: 'important_channel',
        title: 'Title',
        body: 'Test',
        largeIcon: 'asset://assets/iconPhoto.png'),
    actionButtons: [
      NotificationActionButton(
          key:'key',
          label: 'label',
          actionType: ActionType.SilentBackgroundAction)]
  );
}
rryofs0p

rryofs0p1#

我从这里找到了答案:Cannot find AwesomeNotifications().actionStream
我是这样实现的:

@pragma("vm:entry-point")
Future<void> _onActionReceivedMethod(ReceivedAction action) async {
  print('It works');
}

无论应用程序在后台还是在前台,它都能正常工作。

相关问题