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

[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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:06:07