如何在 Awesome notifications Flutter 中按下操作按钮时打印有效负载数据

问题描述 投票:0回答:1

我想在很棒的通知中按下操作按钮时打印或访问有效负载数据。 onReceivedActionMethod 提供对receivedAction 的访问,但不提供对remoteMessage 的访问。如果有人有任何解决方案,请帮助我。

我尝试从 receiveAction 访问它,但没有提供数据。我也尝试在该函数中传递remoteMessage,但它也是不允许的。

flutter notifications awesome-notifications
1个回答
0
投票

很棒的通知不允许您访问远程消息。只能通过fcm前台和后台监听器获取 -

// foreground listener. You can put this in the main method
FirebaseMessaging.onMessage.listen(
    (RemoteMessage message) async {
      // function to handle the remote message.
      await _messageHandler(message);
    },
  );

// background listener. put it outside your main method
@pragma('vm:entry-point')
Future<void> _fcmBackgroundHandler(RemoteMessage message) async {
  await _messageHandler(message);
}
// you can also put this line inside your main method or where you want the listener to be registered
FirebaseMessaging.onBackgroundMessage(_fcmBackgroundHandler);

当您通过消息处理程序获取有效负载时,您可以使用共享首选项来持久化它,如下所示 -

Future<void> _messageHandler(RemoteMessage message) async {
  final String messageData = message.data['message'];
  final prefs = await SharedPreferences.getInstance();
  await prefs.setString('messageData', messageData);
}

因此,在您的通知控制器中,您可以获取您保留的消息数据

@pragma("vm:entry-point")
static Future<void> onActionReceivedMethod(
    ReceivedAction receivedAction) async {
  if (receivedAction.buttonKeyPressed == 'KEY YOU SET') {
    final prefs = await SharedPreferences.getInstance();
    await prefs.reload();
    final String? messageData = prefs.getString('messageData');
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.