[expo-notifications][Android]托管工作流EAS构建本地定时通知自定义音效不播放
解决方案
1. 补充通知权限请求逻辑
安卓13及以上系统默认禁用应用通知权限,未授权状态下不会弹出任何通知。你需要在创建通知渠道前先添加权限请求逻辑:
React.useEffect(() => { const initNotification = async () => { const { granted } = await Notifications.requestPermissionsAsync(); if (granted) { setNotificationChannelAsync(); } }; initNotification(); }, []);
2. 清理已存在的旧通知渠道
安卓8.0及以上系统的通知渠道一旦创建,后续代码修改渠道的音效、优先级、震动等配置都不会生效,系统会沿用第一次创建时的配置。你需要完全卸载设备上已安装的测试APK,再重新打包安装,确保新的渠道配置生效。
3. 正确配置自定义音效打包规则
expo-notifications不会自动打包自定义音效文件,需要手动配置才能让音频文件被打包进安装包:
- 在项目根目录创建
assets/sounds文件夹,把adhan.wav放到该目录下 - 打开
app.json,在expo.plugins数组中添加expo-notifications的音效配置:
{ "expo": { "plugins": [ [ "expo-notifications", { "sounds": ["./assets/sounds/adhan.wav"] } ] ] } }
配置完成后需要重新执行expo prebuild或者重新构建APK才能生效。
4. 调整通知参数配置
- 安卓8.0以上的通知音效完全由渠道控制,
scheduleNotificationAsync的content.sound参数不需要填写,避免冲突,直接删除该配置项即可 - 通知颜色不生效的问题:首先确认颜色值格式正确,其次需要在
app.json中配置符合安卓规范的通知小图标,默认图标不支持自定义颜色,配置示例:
{ "expo": { "notification": { "icon": "./assets/icons/notification_icon.png", "color": "#FF231F7C" } } }
图标需要使用背景透明的白色PNG图片,符合安卓通知图标设计规范。
5. 验证音频文件格式
确保你使用的adhan.wav符合安卓通知音效要求:时长不超过30秒,编码、采样率符合系统要求,不要使用压缩率过高的音频文件。
内容的提问来源于stack exchange,提问作者Basit Minhas
相关产品推荐
相关产品推荐

