使用条件显示后台通知 - Flutter

Show background notification using conditions - Flutter

我正在开发一个应用程序,如果有其他用户喜欢他的照片,该用户将收到通知。

我能够毫无问题地处理应用内通知和应用我的条件。

很遗憾,我无法处理后台通知。

这是我目前所做的:

 FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  if (1 > 1) {
    print('send it');
    return true;
  } else {
    print('don\'t send it');
    return false;
  }
}

无论我在 _firebaseMessagingBackgroundHandler 下做什么,通知都会显示。

我的处理程序被触发,我可以在控制台中看到 print

我相信 FCM SDK 中还有另一个处理此通知的句柄,FirebaseMessaging.onBackgroundMessage 只是一个选项。

有什么想法吗?谢谢!

您尝试处理后台消息的方式很好,但还有更多内容需要了解 FCM 的真正工作原理。

首先,Firebase 为我们提供了两种类型的消息

  1. 通知消息

    FCM 代表客户端应用程序自动向最终用户设备显示消息。通知消息有一组预定义的用户- 可见键和自定义键值对的可选数据负载

  2. 数据信息

    客户端应用负责处理数据消息。数据消息有 只有没有保留键名的自定义键值对

现在对于您的场景,您应该从 Firebase 发送消息作为 Data Message 然后您可以控制它,否则,如果您从 Firebase 发送 Notification Message ] 通知会自动显示。

以下是两种不同类型 Firebase Message

的示例片段
  1. 通知消息:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

  1. 数据信息

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

最后,我建议你看看官方文档About FCM message