Firebase Push Notification воспроизводит первый звук в сыром виде для телефонов выше SDK 26.
- raw
- car_park_empty.m4a
- car_park_full.m4a
remoteMessage.notification
{
"sound":"car_park_full",
"android_channel_id":"default_channel_id",
"data":{"carParkStatus":"true"}
}
воспроизведение звука для Android 8 и выше
soundUri = if (aioNotification.carparkStatus) {
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+ context.packageName + "/" + R.raw.car_park_empty_tr);
} else {
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+ context.packageName + "/" + R.raw.car_park_full_tr);
}
}
val attributes = AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build()
if (soundUri != null) {
chan.setSound(
soundUri,
attributes
)
}
воспроизведение звука для Android 8 и ниже
var soundUri: Uri? = null
if (aioNotification.carparkStatus != null) {
soundUri = if (aioNotification.carparkStatus) {
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+ context.packageName + "/" + R.raw.car_park_empty_tr);
} else {
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+ context.packageName + "/" + R.raw.car_park_full_tr);
}
}
if (soundUri != null) {
notificationCompatBuilder.setSound(soundUri)
}
но уведомление просто воспроизводит первый звук в папке raw.
пример -> - raw 1. car_park_full.m4a
play => car_park_full
- raw
- car_park_empty.m4a
- car_park_full.m4a
play => car_park_empty
remoteMessage.notification
{
"sound":"car_park_full",
"android_channel_id":"default_channel_id",
"data":{"carParkStatus":"true"}
}
- raw
- abcde.m4a
- bcdea.m4a
- yery.m4a
Предполагается, что уведомление приходит таким образом и что папка raw - именно таким образом.
Воспроизводимый звук - abcde.m4a. Так что это звук, где первый индекс в необработанной папке.
Уведомление было отправлено с сервера.
Значение звука было отправлено как 'car_park_full.m4a' с сервера, но значение звукапришел как 'car_park_full' к клиенту.
Кто-нибудь знает, в чем причина?