我现在已经编程了一段时间,在处理通过Firebase来自服务器的通知时遇到了问题。
问题是,如果我在关闭应用程序或在后台运行时收到通知,并且我没有点击,则不会触发任何代码来解释传入的数据。另一方面,当它处于前台或被单击时,一切正常。 显然,这不是Firebase的问题。
那么当未单击通知数据时如何处理?
例如:当我在网络上时,我收到另一个用户的聊天消息。如果我不单击通知以打开聊天(将其丢弃或忽略并手动打开该应用程序),则该消息将不会保存在本地数据库中。
仅当用户单击通知时,才会调用onResume和onLaunch函数。
我曾考虑过检查应用履历表中是否有未读的通知,但我不知道如何执行此操作。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:3)
有两个types of messages in Firebase Cloud Messaging:
- 通知消息,有时被称为“显示消息”。这些由FCM SDK自动处理。
- 数据消息,由客户端应用处理。
当您的应用程序未激活时,系统会显示通知消息。如果用户没有单击该通知,则您的应用程序将无法知道是否曾经收到过该消息。
如果用例要求您的应用知道此类消息,则应使用数据消息。总会交付给您的应用程序。这也意味着您的应用程序可以决定是否向用户显示通知。
第三个选项是发送组合的通知/数据消息。为此,您可以在发送到FCM的消息有效负载中同时具有notification
和data
属性。