Налаштування каналів сповіщень для Android
З Android 8.0 (API 26) кожне сповіщення повинно належати каналу — інакше NotificationManager.notify() молча ігнорується. Користувач керує налаштуваннями звуку, вібрації та відображення окремо для кожного каналу у системних налаштуваннях. Канал створюється один раз при першому запуску додатку.
Створення каналів
val channel = NotificationChannel(
CHANNEL_ID_MESSAGES,
"Повідомлення",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Особисті повідомлення від інших користувачів"
enableLights(true)
lightColor = Color.BLUE
enableVibration(true)
vibrationPattern = longArrayOf(0, 250, 250, 250)
setShowBadge(true)
}
val notificationManager = getSystemService(NotificationManager::class.java)
notificationManager.createNotificationChannel(channel)
Безпечно викликати createNotificationChannel() при кожному запуску додатку — якщо канал уже існує, виклик ігнорується. Винятки: якщо змінити name або description — оновиться. Якщо змінити importance — ні, налаштування користувача мають пріоритет.
Групи каналів
Для додатків з великим числом каналів (агрегатор новин з каналами під кожну рубрику, мессенджер з каналами під тип повідомлень) — використовуємо NotificationChannelGroup. Групує канали у системних налаштуваннях:
notificationManager.createNotificationChannelGroup(
NotificationChannelGroup("group_social", "Соціальні")
)
// Потім у каналу: channel.group = "group_social"
Що нельзя змінювати після створення
Importance, звук, вібрацію — користувач налаштовує сам, додаток не може переопередити. Якщо потрібен інший звук для існуючого каналу — доведеться створити новий канал з новим ID. Старий залишиться у системних налаштуваннях користувача.
Видалення застарілих каналів: notificationManager.deleteNotificationChannel(oldChannelId). Очищення при оновленні версії додатку — хороша практика, інакше користувач бачить давно невикористовувані канали у налаштуваннях.
FCM та канали
Firebase Cloud Messaging з API 26+ вимагає android.channel_id у payload. Якщо канал не вказан або не існує — сповіщення йде у канал за замовчуванням з AndroidManifest.xml:
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id" />
Без цієї запису FCM-сповіщення на Android 8+ не показуються.
Налаштування каналів сповіщень з групами та інтеграцією FCM: 1 день. Вартість рассчитується індивідуально.







