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

GCM推送自定义铃声异常:Cordova混合安卓APP无铃声仅振动

解决Cordova混合APP GCM推送铃声不生效问题

我之前也碰到过类似的Cordova推送铃声不触发的坑,折腾了好一阵子才捋顺,结合你的情况给你几个具体的排查和解决方向:

1. 先确认推送插件的通知渠道配置(Android O+必看)

从Android 8.0(API 26)开始,所有通知必须归属到通知渠道,渠道的铃声设置会直接覆盖推送 payload 里的 sound 参数。如果你的插件没有正确配置渠道,或者渠道没绑定铃声,就算payload里写对路径也没用。

如果你用的是主流的cordova-plugin-fcm-with-dependecy-updated插件,可以直接在config.xml里配置渠道铃声:

<plugin name="cordova-plugin-fcm-with-dependecy-updated" spec="^7.4.0">
    <variable name="ANDROID_FCM_CHANNEL_ID" value="app_notifications"/>
    <variable name="ANDROID_FCM_CHANNEL_NAME" value="App Notifications"/>
    <variable name="ANDROID_FCM_CHANNEL_SOUND" value="notify"/> <!-- 这里只传文件名,不要带.mp3后缀 -->
</plugin>

如果是自定义插件或者需要原生代码配置渠道,你可以在APP启动时创建渠道并绑定铃声:

// 原生Android代码示例,可放在Cordova的插件初始化逻辑里
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String channelId = "app_notifications";

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(
        channelId,
        "App Notifications",
        NotificationManager.IMPORTANCE_DEFAULT
    );
    // 绑定raw目录下的铃声文件
    Uri soundUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notify);
    AudioAttributes audioAttrs = new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_NOTIFICATION)
        .build();
    channel.setSound(soundUri, audioAttrs);
    notificationManager.createNotificationChannel(channel);
}

2. 修正推送payload里的sound参数格式

你之前试的几个路径格式都不对,Android资源的正确URI格式应该是:

android.resource://[你的APP包名]/raw/notify

注意几个关键点:

  • 必须替换[你的APP包名]为实际的包名(比如com.yourcompany.yourapp)
  • 不需要带.mp3后缀,Android会自动识别资源文件
  • 文件名必须是全小写(Android资源文件名不允许大写字母)

所以你的PHP推送代码里,sound参数应该改成:

'sound' => "android.resource://com.yourcompany.yourapp/raw/notify"

3. 核对铃声文件的实际位置和命名

  • 确认notify.mp3确实放在res/raw目录下(注意是res/raw,不是www/res/raw,Cordova打包时会把res目录下的资源打包到APK的原生资源目录)
  • 文件名必须是notify.mp3,不能有大写、空格或特殊字符(比如Notify.mp3或者notify sound.mp3都会导致资源找不到)
  • 可以解压APK文件,检查res/raw目录下是否存在这个文件,确认打包时没有被遗漏

4. 检查系统层面的声音设置

有时候问题不在代码,而是设备设置:

  • 确保设备的媒体音量不是静音(通知铃声走的是媒体音量通道)
  • 进入设备的「设置-应用和通知-你的APP-通知」,确认对应的通知渠道铃声已开启,并且没有被设置为静音

按这几步排查下来,应该能解决铃声不响的问题。我当时就是因为没注意Android O的通知渠道要求,折腾了好久才发现问题所在。

内容的提问来源于stack exchange,提问作者asad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:15:30