我想在很棒的通知中按下操作按钮时打印或访问有效负载数据。 onReceivedActionMethod 提供对receivedAction 的访问,但不提供对remoteMessage 的访问。如果有人有任何解决方案,请帮助我。
我尝试从 receiveAction 访问它,但没有提供数据。我也尝试在该函数中传递remoteMessage,但它也是不允许的。
很棒的通知不允许您访问远程消息。只能通过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');
}
}