如何在Flutter应用程序后台防止显示FCM通知?

3
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  print('Handling a background message ${message.messageId}');
}

FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

我可以使用以下代码片段显示后台通知。但是,有没有办法不显示某些特定的后台通知呢?
例如,我不想显示带有 data = {title = "call"} 的通知。

找到解决方案了吗?我也有同样的问题。 - Ali Izadyar
2个回答

5

从发送设备只需发送数据通知。

await http.post(
          Uri.parse('https://fcm.googleapis.com/fcm/send'),
          headers: <String, String>{
            'Content-Type': 'application/json; charset=UTF-8',
            'Authorization': 'key=$serverKey',
          },
          body: jsonEncode(
            <String, dynamic>{
              'data': <String, dynamic>{
                'id': '2',
                'status': 'done'
              },
              'to': userToken,
              "collapse_key": uid,
            },
          ),
        );

仅包含数据的通知,如果设备重新启动,将不会在iOS上显示。如果用户打开应用程序,则会再次显示。 - PeakGen
@PeakGen 数据通知的目的不是为了显示,我在安卓上测试过这种方法,可以正常工作,但我不确定在IOS上是否有效。 - Husen

-3
在您的_firebaseMessagingBackgroundHandler中添加条件,例如:
    Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {

if(message.data["title"]=="Call")
{
// show nothing
}
else
{
// show notifications
}
      
    }

_firebaseMessagingBackgroundHandler 函数中,我们没有实现任何显示通知的内容,如果我们将空函数传递给 FirebaseMessaging.onBackgroundMessage,则会自动显示通知。 - saeid
如果您根本没有编写该函数,那么此方法与此主题无关,通知将出现!因此它没有帮助... - Benyamin Beyzaie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接