检查Flutter应用上是否有未读的通知

时间:2018-08-22 10:37:40

标签: firebase firebase-cloud-messaging flutter

我现在已经编程了一段时间,在处理通过Firebase来自服务器的通知时遇到了问题。

问题是,如果我在关闭应用程序或在后台运行时收到通知,并且我没有点击,则不会触发任何代码来解释传入的数据。另一方面,当它处于前台或被单击时,一切正常。 显然,这不是Firebase的问题。

那么当未单击通知数据时如何处理?

例如:当我在网络上时,我收到另一个用户的聊天消息。如果我不单击通知以打开聊天(将其丢弃或忽略并手动打开该应用程序),则该消息将不会保存在本地数据库中。

仅当用户单击通知时,才会调用onResume和onLaunch函数。

我曾考虑过检查应用履历表中是否有未读的通知,但我不知道如何执行此操作。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

有两个types of messages in Firebase Cloud Messaging

  
      
  • 通知消息,有时被称为“显示消息”。这些由FCM SDK自动处理。
  •   
  • 数据消息,由客户端应用处理。
  •   

当您的应用程序未激活时,系统会显示通知消息。如果用户没有单击该通知,则您的应用程序将无法知道是否曾经收到过该消息。

如果用例要求您的应用知道此类消息,则应使用数据消息。总会交付给您的应用程序。这也意味着您的应用程序可以决定是否向用户显示通知。

第三个选项是发送组合的通知/数据消息。为此,您可以在发送到FCM的消息有效负载中同时具有notificationdata属性。