我在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
};