Connect with us

Разработка

Реализация Критических оповещений на Android

Критические оповещения — это уведомления, которые обходят выключатель звука и настройки «Не беспокоить» на устройстве, гарантируя, что пользователь получит важные уведомления независимо от настроек на устройстве.

Фото аватара

Опубликовано

/

     
     

Критические оповещения — это уведомления, которые обходят выключатель звука и настройки «Не беспокоить» на устройстве, гарантируя, что пользователь получит важные уведомления независимо от настроек на устройстве. В то время как Apple представила эту функцию около 2018 года, Android еще не полностью интегрировал ее. В этой статье мы рассмотрим, как реализовать подобные критические оповещения на Android-устройствах.

Запрос разрешения на отмену DND

Чтобы включить критические оповещения на Android, нам нужно отменить режим «Не беспокоить» (DND) и режимы звонка на устройстве. Для этого необходимо получить от пользователя разрешение на отмену режима DND. В отличие от рантайм разрешений, это разрешение (ACCESS_NOTIFICATION_POLICY) должно быть объявлено в манифесте приложения и доступно через системные настройки.

Чтобы запросить разрешение на отмену DND, мы используем следующий фрагмент кода:

fun openDNDPermissionSettings() {
    val intent = Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS)
    ActivityCompat.startActivity(this, intent, Bundle())
}

Этот код открывает экран «Do not disturb override permission», где пользователи могут предоставить разрешение все таки беспокоить их определенным приложениям.

Реализация Критических оповещений на Android

Переопределение режима DND для уведомлений

Получив разрешение на переопределение DND, мы можем переопределить режим DND специально для критических уведомлений, установив notificationChannel.setBypassDnd(true). Это не изменит настройки режима DND устройства, а просто обойдет режим DND только для уведомлений, отправленных по этому каналу.

Переопределение режима тишины/вибрации

Чтобы гарантировать, что звук уведомления будет воспроизводиться для критических сигналов, перед запуском notificationManager.notify проверьте режим звонка устройства с помощью audioManager.ringerMode. Если необходимо, установите нормальный режим звонка, отрегулируйте громкость, а затем вернитесь к исходным настройкам после воспроизведения звука уведомления.

val audioManager = getSystemService(ContextWrapper.AUDIO_SERVICE) as AudioManager
var originalRingMode = audioManager.ringerMode

Помните, что на некоторых устройствах при включении режима DND режим звонка становится беззвучным, хотя он нормальный. Поэтому проверьте также громкость уведомлений, если она больше 0, то можно предположить, что первоначальный режим звонка не является беззвучным.

Выводы

Реализация критических оповещений на Android предполагает получение разрешения на отмену DND, настройку каналов уведомлений для обхода DND, а также управление настройками устройства для регулировки звука и громкости. Хотя эта функция может иметь ограничения в управляемых профилях, пользователи личных профилей могут предоставить права на отмену режима “Не беспокоить”, чтобы критические оповещения работали как положено.

Полный код и подробности проекта можно найти в репозитории GitHub.

Спасибо за прочтение!

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: