You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:18:02