Flutter添加推送自定义音效后出现不同音效重复通知如何解决
Flutter 推送后台/终止状态双通知问题解决方案
出现该问题的核心原因是:推送服务触发的系统默认通知,与你自行实现的showNotification方法重复触发,导致两条通知同时弹出。可按以下步骤排查修复:
1. 调整推送消息类型(针对FCM场景)
- 不要发送同时携带
notification字段和data字段的混合消息,FCM收到带notification字段的消息时,会在应用后台/终止状态自动弹出系统默认通知,你在后台回调中又触发了自定义音效的通知,就会出现重复。 - 统一使用*仅数据类型消息(Data-only Message)*发送推送,所有通知的展示逻辑完全由客户端代码控制,禁止系统自动弹通知。
2. 关闭厂商推送通道的自动展示开关
如果使用国内小米、华为、OPPO、VIVO等厂商推送通道:
- 前往对应厂商的推送控制台,关闭后台/离线状态自动展示通知的默认配置。
- 发推送时指定
content-available: 1、mutable-content:1,让所有推送事件都交给你自定义的后台处理逻辑执行,再调用showNotification弹自定义音效的通知。
3. 客户端配置校验
Android端
- 检查
AndroidManifest.xml,不要配置默认通知channel、默认通知展示相关的meta-data参数,避免系统自动读取配置弹默认通知。 - 确认
FirebaseMessaging.onBackgroundMessage回调逻辑中,没有重复调用通知展示方法。
iOS端
- 检查
AppDelegate中的UNUserNotificationCenter代理配置,如果你使用flutter_local_notifications包实现自定义通知,需要禁止系统自动处理推送通知的展示。
排查验证方法
临时注释你自己写的
showNotification调用逻辑,测试应用后台/终止状态收推送,如果还能收到带默认音效的通知,即可确认是推送服务的自动展示逻辑导致,只需按上述步骤关闭自动展示即可,不需要修改自定义通知的实现代码。
内容的提问来源于stack exchange,提问作者Lyba Kashif
相关产品推荐
相关产品推荐

