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,提问作者十市将伍
相关产品推荐
相关产品推荐

