Мы создали каналы уведомлений для устройств, работающих на Oreo и выше, которые используют пользовательский звук уведомлений, который находится в нашей папке /res/raw
.Недавно, когда пользователи обновили наше приложение, звук уведомлений просто перестал работать, и уведомление только вибрирует устройство.
Мы подтвердили, что удаление / переустановка или очистка данных приложения решает проблему.Однако для того, чтобы звуки уведомлений снова работали для всех без переустановки, нам необходимо по существу удалить и заново создать эти каналы.
Мы создаем канал уведомлений следующим образом:
fun initNotificationChannel(channel: PSSNotificationChannel) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val id = channel.id
val name = context.getString(channel.nameResId)
val importance = channel.importance
val channel = NotificationChannel(id, name, importance)
...
// Default sound
val soundUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
context.applicationContext.packageName + "/" + R.raw.notification)
val audioAttributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build()
channel.setSound(soundUri, audioAttributes)
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager?
notificationManager?.createNotificationChannel(channel)
}
}
Я подтвердил, что файл все еще существует в /res/raw
.И коммит, который, казалось, вызвал это, был просто некоторыми добавленными / измененными файлами в папку /res
.