引言
在使用Flutter开发移动应用时,我们常常会集成多种服务来提升用户体验。Firebase Cloud Messaging (FCM) 用于推送通知,Awesome Notifications 则用于处理本地通知。然而,当这两个服务结合使用时,可能会遇到一个有趣但困扰的问题:同一推送消息在设备上显示两次。本文将通过分析问题原因并提供解决方案,帮助开发者们顺利解决这一常见问题。
问题分析
根据参考内容,我们注意到:
- FCM 配置:在FCM的初始化中,我们设置了前台和后台的通知处理逻辑。
- Awesome Notifications:在Awesome Notifications中,我们初始化了通知渠道,并设置了点击通知后的行为。
当FCM接收到一个推送消息时,无论应用程序在前台、后台还是关闭状态,消息都会被处理两次:
- FCM直接显示通知:FCM本身会根据其设置显示一个通知。
- Awesome Notifications处理:FCM的处理逻辑会触发Awesome Notifications的
showNotification方法,再次显示一个几乎相同的通知。
解决方案
1. 使用数据消息而不是通知消息
FCM提供了两种消息类型:通知消息和