Ответ
Да, работал. В Android можно задавать приоритеты уведомлений через NotificationCompat.Builder.setPriority(). До API 26 использовались константы типа PRIORITY_HIGH, PRIORITY_DEFAULT и т.д. С API 26+ вместо приоритетов используются каналы уведомлений (NotificationChannel), где задается importance (IMPORTANCE_HIGH, IMPORTANCE_DEFAULT и др.). Пример:
// Для API <26
NotificationCompat.Builder(context, CHANNEL_ID)
.setPriority(NotificationCompat.PRIORITY_HIGH)
// Для API 26+
val channel = NotificationChannel(
CHANNEL_ID,
"Channel Name",
NotificationManager.IMPORTANCE_HIGH
)
notificationManager.createNotificationChannel(channel)
Высокий приоритет влияет на отображение (heads-up уведомления), звук и вибрацию.
Ответ 18+ 🔞
А, ну это ж классика, ёпта! Работало, да, как часы, пока не пришли эти ваши каналы с API 26 и всё не перевернули с ног на голову.
Раньше-то, бля, всё было просто, как три копейки. Хочешь, чтобы уведомление выскакивало на весь экран, как назойливая муха? PRIORITY_HIGH ему впендюрь — и поехали, пользователь подскакивает, как ошпаренный. PRIORITY_DEFAULT — ну, тихо себе прилетело в шторку и висит, не дергается. Красота, ядрёна вошь!
А потом эти гомосеки из Google налетели со своей «системностью». Говорят, мол, нефиг, распиздяи, в каждом приложении свои настройки пинать, давайте всё в одно место соберём. И ввели, сука, каналы.
Теперь, чувак, если ты на API 26 или выше, твои старые setPriority() — это как прошлогодний снег. Доверия к ним — ноль, ебать. Они просто игнорируются, понимаешь? Всё решает канал.
Создаёшь ты этот самый NotificationChannel, и там уже кромсаешь его важность (importance). Выбрал IMPORTANCE_HIGH — оп-па, уведомление опять летит в голову, со звуком и плясками. IMPORTANCE_DEFAULT — ну, тихонько так, скромненько.
Вот смотри, как это выглядит в коде, тут без мата, всё чинно-благородно:
// Для старых андроидов (до Oreo) - тут власть была твоя
NotificationCompat.Builder(context, CHANNEL_ID)
.setPriority(NotificationCompat.PRIORITY_HIGH) // Вжух, и высокий приоритет!
// Для новых (Oreo и выше) - тут уже царство каналов
val channel = NotificationChannel(
CHANNEL_ID,
"Channel Name",
NotificationManager.IMPORTANCE_HIGH // Вот тут задаёшь важность, и это закон!
)
notificationManager.createNotificationChannel(channel)
И да, высокий приоритет (или высокая важность) — это не просто буквы. Это, бля, целая философия! Уведомление начинает светить, звенеть, вибрировать и выпрыгивать сверху (это и есть heads-up), пока пользователь не взвоет «Да похуй, я уже увидел, отстань!».
Так что теперь алгоритм, чувак, такой: сначала проверяешь версию андроида. Если старый — рулишь приоритетами по-старинке. Если новый — смиряешься и настраиваешь канал, потому что сопротивление бесполезно, ебись оно конём. Главное — не запутайся, а то получится манда с ушами, и уведомления будут вести себя как попало.