首页 > 解决方案 > 使用条件显示后台通知 - 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 只是一个选项。

有什么想法吗?谢谢你!

标签: firebaseflutternotificationsfirebase-cloud-messaging

解决方案


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

首先,Firebase 为我们提供了两种消息传递方式

  1. 通知消息

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

  2. 数据信息

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

现在,对于您的方案,您应该发送消息,Firebase然后Data Message您可以控制它,否则,如果您发送消息Notification MessageFirebase通知将自动显示。

以下是两种不同类型的示例示例片段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


推荐阅读