Flutter Firebase如何控制应用程序在前台时不显示通知



我有一个带有聊天室功能的flutter应用程序。Firebase消息用于推送远程通知。如果应用程序在前台,并且恰好在即将到来的通知所属的聊天室,我想隐藏通知弹出窗口。

这是你和某人聊天时的常见行为。该消息直接附加到聊天室,而不是弹出窗口。

我的问题是如何在接收时干扰远程通知?我在收到通知的事件上使用了onMessage回调。但无论应用程序在前台、后台还是终端,它总是会弹出。

在firebaseReact Native版本中,它有一个onNotification回调,这正是我想要的。但是,颤动是不等价的。我的研究使我发送数据通知类型的消息。通过这种方式,我需要保持应用程序状态与后端服务器同步(我说得对吗?(。

欢迎任何帮助或建议。非常感谢。

p.S.firebase_messaging 8.0.0-dev.10

更新:

正如op所提到的,在使用到最新的稳定版本(7.0.3(时,这个问题已经得到了修复。那么原因是新开发版本中的一个错误。

GitHub相关问题,链接


原始答案:

从您描述的问题来看,您遇到的问题可能是因为您在开发通道上。

你试着用最新的马厩了吗?(撰写本文时为7.0.3(。这可能是开发通道中的一个错误。

如果问题仍然存在,请尝试发送数据消息而不是通知消息。这将阻止firebase在设备上发送通知。但请注意,您必须手动显示通知。这样,您就可以根据屏幕控制通知的显示,而不必像您提到的那样保持状态与服务器同步。

但这可能在iOS上不起作用,因为根据文档,当应用程序进入前台时,onMessage()将被触发。

查看上面的链接,了解如何在Android和iOS上处理通知消息和数据消息的更多详细信息。

如果onMessage没有处理通知的代码,那么它们就不应该出现。

如果您想在overlayIn App Notification中转换onMessage通知,则效果会更好

我在显示notification时也遇到了同样的问题,并找到了解决方法,我们可以在我们的应用程序中显示In App Notifications

您可以显示overlay,而不是在onMessage方法中显示通知代码,就像instagram在notification到达时显示的那样,

为了将消息附加到直接聊天室,我使用了一些后台帮助

onMessage: (Map<String, dynamic> message) async {
showOverlayNote(message);
},

现在您可以将overlay显示为

showOverlayNote(message){
//your code here for showing the overlay
}

你可以从这个链接获得关于如何使用应用内通知覆盖的详细信息

这个家伙已经更好地解释了这个应用内通知的使用,所以请参阅上面的链接

您从错误的角度考虑它。Firebase消息总是会触发您的onMessage,这取决于您如何在内部处理。

我建议使用状态管理器-Mobx、ChangeNotifier、文件等等-来跟踪用户在哪个屏幕上。当用户进入聊天屏幕时,将其写入您的状态管理器(如有必要,也可以在dispose()方法中"取消写入"(。

然后,在处理onMessage的方法中,检查用户的当前屏幕。如果他们在聊天屏幕上,则退出,如果没有,则执行覆盖。

相关内容

  • 没有找到相关文章

最新更新