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

Flutter应用发布后自定义通知音失效问题求助

自定义通知音发布后失效的排查与解决

针对你遇到的Flutter应用本地测试自定义通知音正常、发布后失效的问题,可从以下方向逐一排查解决:

1. 音频资源未被正确打包进发布APK

  • 确认资源位置:自定义音频文件必须放在android/app/src/main/res/raw/目录下,文件名需全小写、无空格或特殊字符(你的new_sos_sound命名符合要求)。
  • 验证APK内容:用Android Studio的Build > Analyze APK功能打开发布包,查看res/raw/目录下是否存在对应的音频文件。如果缺失,说明打包时资源未被正确包含,需检查原生资源目录配置。

2. R8/ProGuard混淆删除了音频资源

发布时R8可能误判未被直接代码引用的音频资源为无用资源并删除,需在android/app/proguard-rules.pro中添加规则保留相关资源:

# 保留通知音相关类
-keep class com.dexterous.flutterlocalnotifications.RawResourceAndroidNotificationSound { *; }
# 保留音频资源文件
-keepresourcefiletype **.mp3
-keepresourcefiletype **.ogg
# 保留raw资源目录(可选)
-keepresourcedir res/raw/**

3. 通知渠道创建的异步执行问题

你的代码调用_createNotificationChannel时未使用await,可能导致渠道未完全初始化就接收推送,虽渠道已创建但配置未生效。修改代码确保异步执行完成:

try {
  await _createNotificationChannel("sos", "sos_channel", "緊急通報用", "new_sos_sound");
  await _createNotificationChannel("claim", "claim_channel", "クレーム用", "new_claim_sound");
  await _createNotificationChannel("default", "default_channel", "通常の通知", "default");
  print('************************* Success created notification channel *****************************');
} catch (e) {
  print('*************************Error(createNotificationChannel): $e *****************************');
}

4. 音频文件格式兼容性问题

Android设备对通知音格式有严格要求,确保你的音频满足:

  • 支持格式:MP3、OGG(优先推荐OGG,兼容性更好)
  • 采样率≤44.1kHz,比特率≤128kbps
  • 时长≤30秒(通知音无需过长)

5. 设备缓存与渠道重置

发布后设备可能保留旧渠道缓存,尝试:

  • 卸载应用并清除设备应用缓存
  • 重新安装发布版应用
  • 进入设备设置,重新确认对应通知渠道的声音配置

补充验证Firebase推送配置

确认推送payload中的channelId与应用内创建的渠道ID完全匹配(你的代码已对应sos/claim/default,此步骤可快速排除ID匹配错误)。

内容的提问来源于stack exchange,提问作者十市将伍

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:16:22