Советы по уведомлениям в Android

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024

Комментарии • 38

  • @AndroidBroadcast
    @AndroidBroadcast  3 года назад +4

    📰 Telegram канал с полезными материалами для Android разработчиков ttttt.me/android_broadcast
    💰 Поддержать проект через Boosty boosty.to/androidbroadcast или Patreon bit.ly/2TBOzlu

  • @maxsimpleapps
    @maxsimpleapps 3 года назад +7

    Спасибо большое, как всегда годнота 😊
    Эх, нам бы в эфире побольше таких ребят, как Кирилл и жизнь бы проще стала на порядок.

  • @danieldefo7801
    @danieldefo7801 3 года назад +4

    Спасибо! Информативно. Хочется еще!

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +2

      Примерно через неделю будет новый выпуск. Просто как избавить от try-catch для асинхронных операций

  • @tequilaonelove
    @tequilaonelove 3 года назад +4

    Большое спасибо за видео, хотелось бы увидеть еще выпуски про Service() , вместе с применением этих самых уведомлений:
    1) Запуск и остановка Service() с корректным взаимодействием с уведомлениями и работа в background.
    2) Как правильно убирать/запускать/обновлять уведомление, чтобы не получить ANR из-за "закрученных гаек" Android'а или из-за случайно( или нет) забытой разработчиком остановкой работы сервиса в background и есть ли какие то хаки?
    Из своего опыта есть история, длинною в жизнь.. о применении к уведомлению стиля, например androidx.media.app.NotificationCompat.MediaStyle(), который в свою очередь тащит за собой MediaSession и другие надстройки и костыли, для того чтоб уведомление и текст начал вычисляться и окрашиваться из "LargeIcon" в который собственно отправляется Bitmap в виде обложки музыкальной композиции..И это просто боль)) . После всех настроек и подготовки, код готового Notification.Builder в конечном итоге стал дико огромным... Да и плюс еще PendingIntent'ы, которые привязывают кнопки управления плеером (Play/Pause, Previous, Next) и т.д. В конечном итоге развернул всё в модуле Koin и спрятал, чтоб глаза больше не видели...И вроде бы всё хорошо, но за всё время использования и тестирования работы уведомлений, так до конца и не стало понятно, как разрешить или запрещать смахивать уведомление свайпом (Например смахивать только когда воспроизведение остановлено, и запретить это при активном воспроизведении). На что именно влияют флаги START_NOT_STICKY, STAR_STICKY и др.., возвращаемые методом onStartCommand() в Service и что будет если вернуть вместо флагов строку super.onStartCommand(...) ?
    При этом после того как убрали уведомление (или до этого?), необходимо не забыть остановить работу в background, либо вовсе убить сервис, иначе можно получить ANR (может произойти случайно, на разных версиях ОС, и не понятно что именно привело к этому, так как краш-лог не очень информативен) опять таки из-за закрученных гаек Android'ом, о работе сервиса в background.
    В общем сделать нужный и правильный билдер , + вывести уведомление с внешним видом который требуется, + всё это без обращения к customViews стало головной болью и оставило долгозаживающие шрамы в памяти..

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +5

      По поводу темы Service я подумаю, но мне кажется что лучше будет раскрыть фоновую работу в современной Android разработке.
      История - супер! Очень нравится когда слышишь реальные проблемы

    • @sonicCat
      @sonicCat 3 года назад +1

      По поводу запрета смахивания уведомления если аудио проигрывается, достаточно подробно написано в официальной доке: developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice. Т.е. достаточно запустить foreground service, который подразумевает наличие уведомления. Если сделать все как там написано и обработать нажатие на кнопки как описано здесь developer.android.com/guide/topics/media-apps/audio-app/mediasession-callbacks уведомление будет смахиваться только если аудио не проигрывается. Сам по этому гайду player писал.

  • @valeryklachkov7062
    @valeryklachkov7062 3 года назад +3

    Кирилл, спасибо за библиотеку! Вчера заиспользовал в своём проекте и очень доволен. Приятная библиотека, хорошая работа была проделана. Единственное, что неочевидно - каналы уведомлений всё так же приходится создавать руками

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +1

      Буду рад услышать обратную связь. Библиотека все еще в разработке, могут быть баги

  • @rustamsitdikov
    @rustamsitdikov 3 года назад +3

    Большое спасибо за интересный выпуск!

  • @iv2649
    @iv2649 3 года назад +3

    Спасибо за интересный обзор! Единственное, в нем не хватило упоминаний про режим DOZE и как с ним жить. Возможно это тема для отдельного обсуждения, но было бы интересно услышать твое мнение и подход к этой "проблеме".

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Doze - это про работу приложений в режими экономии энергии, а видео было про API уведомлений. Возьму на заметку тему про эту тему

  • @AndreyDerkach8
    @AndreyDerkach8 3 года назад +1

    побольше таких роликов, молодец Кирилл

  • @yakovweber9596
    @yakovweber9596 3 года назад +3

    Как всегда топ видео.

  • @user-sankarsana
    @user-sankarsana 3 года назад +2

    Круто! Спасибо.

  • @fliker2309
    @fliker2309 2 года назад

    Спасибо за видео и библиотеку!✌️👍

  • @alekseishcherbakov785
    @alekseishcherbakov785 3 года назад +6

    передал в ivi =)

  • @channelsecondname
    @channelsecondname 3 года назад

    Хорошо и понятно излагает, рекомендую.

  • @pavloffme
    @pavloffme 2 года назад +1

    странно, почему-то нет доступа к Библиотеке Android Notification DSL, просто не скачивается в проект

    • @AndroidBroadcast
      @AndroidBroadcast  2 года назад

      Проверь руководство по настройке github.com/androidbroadcast/Android-Notification-DSL

  • @alexandernifanin7366
    @alexandernifanin7366 3 года назад

    Большое спасибо! Не успел прослушать до конца, может быть, упоминалось:
    1) Раньше значки были монохромными, задавались бело-прозрачным PNG через .setSmallIcon(R.drawable.ic_notification_icon). Сейчас приложения стали выдавать цветные значки. Как это сделать? Также замечал, что цветной значок при неправильной установке на одних устройствах выглядел уменьшенным, на других мог быть белым квадратом.
    2) Есть проблема, что на старых устройствах (Android 4) при получении 10 уведомлений они выстраиваются в ряд в StatusBar. На более свежих Андроидах больше 2 уведомлений группируется.
    3) Можно сделать разное поведение уведомлений при многократном получении. Например, добавлять в очередь или заменять уведомление более свежим.
    4) В Андроиде сделано так, что если открыли приложение из уведомления (открыли активность с параметрами из intent), то мы переходим к какому-то экрану (взятому из intent). Если затем выйти из приложения и открыть его через меню (два раза нажать на квадратную кнопку), оно стартует опять с теми же параметрами и опять переходит к этому экрану. Интересно, это как-то отменяется? Ведь экран уже может быть неактуальным (например, нельзя смотреть информацию по заявке, т.к. она отменена). Наверное, придётся делать проверки в коде.
    5) Вы упомянули про notification и data. Это тоже интересная тема, т.к. с доставкой уведомлений много мороки. Как лучше поступать - слать data или notification + data?
    6) Есть Silent-уведомления и целый раздел работы с чатами через пуши.
    7) Разные производители телефонов могут препятствовать доставке пушей. Иногда время доставки увеличивается до 15 минут.

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +1

      1) Цвет значков зависит от производителя устройства. Google делает их всегда монохромными, а вот тот же Samsung цветными
      2) Есть группировка уведомлений в API, но может быть и часть системой делаться
      3) Из коробки такого нет, только если вы сами будете управлять этим по id уведомлений
      4) Управлять этим можно через специальные флаги в Intent, также можно запустить на Activity из уведомления, а послать Broadcast, который запустит Acitvity
      5) Если у вас простые уведомления - notification, если вам нужны не только уведомления или более сложная логика построения их - data
      6) Не понял.Что за "Silent уведомления"?

    • @alexandernifanin7366
      @alexandernifanin7366 3 года назад

      @@AndroidBroadcast Silent push notification. Сперва они появились на iOS.
      Возможно, для бэкенда ещё есть проблема в разделении пушей по ОС. На web не слать, на iOS - так, на Андроид - так.

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      В Android они были сколько я помню Push уведомления

    • @alexandernifanin7366
      @alexandernifanin7366 3 года назад

      @@AndroidBroadcast Недавно узнал, что уведомления могут сигнализировать не только о том, что они доставлены или прочитаны, но и о том, что их смахнули, не открывая. Странно, что об этом почти нет информации и мало кто использует.

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +1

      Да, вообще плохо используют возможности (

  • @ruslanerdenoff7866
    @ruslanerdenoff7866 3 года назад

    Добрый день, спасибо большое за информацию и библиотеку. Столкнулся с такой проблемой, что приложение получает FCM сообщения но через 15 минут уходит в background там оно стопится и даже FCM сообщения не приходят, пробовал запрашивать permission на отключение "оптимизация батареи" чтобы в whitelist добавить и чтобы Doze не было, но проблему не решило, можете пожалуйста подсказать как здесь быть :(
    P.S. запрос на включены ли уведомления есть)

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Сходу не скажу. Надо знать версию ОС, производителя и пр. аспекты. Каждый вендор делает кучу своих независимых оптимизаций

  • @dimka11ggg
    @dimka11ggg 3 года назад

    Что делать с Meizu, Xiaomi и другими системами где, уведомления не приходят без кучи действий со стороны пользователя (включить уведомления, включить фоновый режим, отключить оптимизацию энергопотребления и т.д. и т.п.)

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Включать в приложение инструкцию для пользователя как из включить, по аналогии как это с браузера и делают

  • @user-ee9pg9kd8f
    @user-ee9pg9kd8f 3 года назад

    8

  • @denisk3852
    @denisk3852 3 года назад

    Спасибо за либу

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Она только заброшена, но надо к ней вернуться