我在Android应用中使用Firebase推送通知。我可以使用自定义图标正确发送通知,但是我无法播放自定义声音。我总是得到我设备的默认声音。

{
    "registration_ids": "myToken",
    "notification": {
        "body": "my body",
        "title": "my title",
        "icon": "ic_notification",
        "sound": "mysound.mp3" // I tried "mysound", "mysound.wav"...

    },
    "priority": "high"

}

自定义声音位于/res/raw

我已经能够使用onMessageReceived和Firebase数据消息来播放自定义声音,但是不能使用Firebase通知消息来播放。

我的android设备是Xiaomi Mi A1和Oreo 8.1。,也尝试过使用Xiaomi Mi A2获得相同的结果。

我尝试用php和curl,用node.js ...总是一样的问题,我得到了我的默认声音。

更新

使用此代码,node.js也不起作用:
var registrationToken = 'xxxxxx';

var message = {

    notification: {
      title: 'my title',
      body: 'my body',
    },
    android: {
      ttl: 3600 * 1000,
      notification: {
        color: '#ff0000',
        sound: 'mysound.mp3'
      }
    },
    token: registrationToken

};

最佳答案

终于我找到了解决方案。对于Android 8.0及更高版本,有必要在您的应用中创建一个通知 channel :

NotificationChannel channel = new NotificationChannel('my_id', name, importance);
(更多信息:https://developer.android.com/training/notify-user/channels#java)
然后,当您发送通知时:
var registrationToken = 'xxxxxx';

var message = {

    notification: {
      title: 'my title',
      body: 'my body',
    },
    android: {
      ttl: 3600 * 1000,
      notification: {
        color: '#ff0000',
        sound: 'mysound.mp3',
        channel_id: 'my_id' // important to get custom sound
      }
    },
    token: registrationToken

};

09-25 19:23
查看更多