Работал ли с NotificationChannel

Ответ

Да, работал. NotificationChannel появились в Android 8.0 (API 26) для управления группами уведомлений. Каждый канал имеет уникальный ID, имя, важность и другие настройки.

Пример создания канала:

val channel = NotificationChannel(
    "channel_id",
    "Channel Name",
    NotificationManager.IMPORTANCE_HIGH
).apply {
    description = "Channel Description"
    enableVibration(true)
}

val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)

После создания канал нельзя изменить программно - пользователь может настроить его только в системных настройках. Для Android версий ниже 8.0 каналы игнорируются.

Ответ 18+ 🔞

А, работал, блядь! Ну это ж классика, ёпта. NotificationChannel ввели, когда в Android 8.0 приперлись, чтобы с этими группами уведомлений хоть какой-то порядок был. Каждый такой канал — это как отдельная личность, у него свой ID, имя, важность и прочие прибамбасы.

Вот смотри, как его наколдовать:

val channel = NotificationChannel(
    "channel_id",
    "Channel Name",
    NotificationManager.IMPORTANCE_HIGH
).apply {
    description = "Channel Description"
    enableVibration(true)
}

val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)

И вот тут самое интересное, ядрёна вошь: после того как ты его создал — всё, приехали. Программно его уже не поменяешь, хоть тресни. Пользователь может там в настройках системы его покрутить, а ты сиди и смотри. И да, для старых девайсов, где андроид ниже восьмёрки, эти каналы — просто пыль, их нихуя не существует, игнорируются на раз. Вот такая хитрая жопа получилась.