Уведомления о беседах и виджеты

В Android 11 добавлена ​​поддержка настройки поведения и размещения уведомлений о беседах на панели уведомлений в зависимости от приоритета и уровня оповещения, что позволяет помечать беседы как важные и запускать всплывающие подсказки для конкретных бесед в области бесед.

Основываясь на этих функциях Android 11, Android 12 предлагает две новые функции беседы:

  • Функция «Недавние разговоры» в настройках позволяет пользователям настраивать поведение уведомлений для последних разговоров, не дожидаясь уведомления.

  • Функция виджета разговоров позволяет пользователям легко открывать чаты на главном экране, обеспечивая быстрый просмотр последних разговоров.

В этом документе описываются аспекты реализации, настройки и проверки уведомлений о диалогах и виджетов.

Обзор уведомлений о беседах

В Android 11 представлен новый системный примитив «Разговор», который представлен существующим объектом ярлыка общего доступа (который был реализован в Android 9).

Примитив Conversations можно использовать следующим образом:

  • Чтобы обмениваться данными разговоров между приложениями в системе через Sharesheet (уже в Android 10).

  • Для вождения пузырей ( ярлыки в Android 11). См. рисунок 1 .

  • Для участия в новом пространстве для бесед поверх шторки уведомлений (реализовано в Android 11). См. Рисунок 2 .

  • Для создания виджетов разговоров (реализовано в Android 12).

    conv_bubbles

    Рисунок 1. Уведомление запускается в виде всплывающей подсказки из панели уведомлений.

    conv_notification

    Рис. 2. Область диалога, расположенная в верхней части шторки уведомлений.

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

Партнеры GMS обязаны реализовать следующее:

  • Новое пространство «Беседы» в виде отдельного раздела поверх шторки уведомлений.
  • Стиль уведомления, который разрешает и поддерживает шаблон пузырьков для определенного диалога.

Партнеры, реализующие беседы, также должны реализовывать важные беседы. Однако реализация Conversations может быть согласована с концепциями OEM аналогичного характера. В целом, партнеры могут свободно согласовывать раздел диалога с пользовательским интерфейсом своей системы. Партнеру не нужно изменять или внедрять HAL/драйвер/код ядра/расширения.

См. следующую эталонную реализацию в разделах SystemUI и PeopleService в AOSP:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

Проверка

Чтобы убедиться, что ваша версия функции работает должным образом, проверьте следующее:

  1. Приложения, полностью поддерживающие Conversation API, видят свои уведомления в новом разделе и могут настраивать эти уведомления по разговору, а не по общему каналу NotificationChannel .

  2. Работают всплывающие подсказки для разговоров.

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

  • тесты СТС.

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • Тесты CTS Verifier.

    cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
    
    

Обзор виджетов бесед

В Android 12 функция виджета бесед основана на представлениях бесед, созданных в Android 11 (как описано в предыдущем разделе), позволяя приложениям предоставлять статус для тех бесед, которые отображаются в виджетах бесед.

conv_widgets

Рисунок 3: Разговоры, отображаемые в виджетах разговоров

Функция виджета разговора в Android 12 способствует установлению связи, позволяя пользователям легко открывать чаты на главном экране. Виджеты представляют собой расширенные ярлыки, которые позволяют пользователям эффективно возвращаться к своим разговорам, показывая при этом фрагменты статусов разговоров.

Партнер должен реализовать следующее:

  1. Виджет, предоставляемый SystemUI.
  2. Процесс добавления этих виджетов с экрана выбора виджетов.
  3. Поддержка изменения размера виджета следующим образом:
    • Используйте onAppWidgetOptionsChanged() , чтобы изменить макет на макет лучшего размера, когда пользователь меняет размер макета или поворачивается в альбомную ориентацию.
    • Используйте maxResizeHeight , maxResizeWidth , minWidth , minHeight , minResizeWidth , minResizeHeight для правильной привязки изменений размера вашего виджета.

Помните о следующих зависимостях при реализации виджетов разговора:

  • Партнеру не нужно изменять или внедрять код HAL/драйвера/ядра.
  • Для реализации используется API состояния, который позволяет приложениям добавлять информацию о состоянии или доступности в диалог и связанный с ним виджет.
  • Процесс одинаков как для новых реализаций устройств, так и для обновлений.
  • Функция виджетов разговоров зависит от новой функции, запускаемой в Android 12, которая кэширует недавно просмотренные разговоры (например, из уведомлений). Эта последняя функция позволяет расширить список разговоров, которые пользователь потенциально может добавить на свой домашний экран.

См. следующую эталонную реализацию в файлах SystemUI и Launcher3:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

Настройка

Функцию виджетов бесед нельзя включить или отключить. Однако партнер может изменить макеты шаблонов виджетов, если выполняются требования GMS.

Проверка

Чтобы убедиться, что ваша версия функции работает должным образом, проверьте следующее:

  1. При длительном нажатии на Launcher новый виджет беседы для беседы можно добавить с помощью средства выбора виджетов. См. рисунок 4 для пользовательского интерфейса средства выбора виджетов:

    widget_picker

    Рисунок 4. Пользовательский интерфейс выбора виджетов для добавления нового виджета беседы

  2. При отправке уведомлений на устройство из выбранной беседы виджет обновляется, отражая эти уведомления.

  3. При применении статусов к этой беседе с помощью API ConversationStatus виджет отражает эти статусы.

  4. Пользователи могут изменять размер виджетов, а виджеты могут изменять свои размеры в зависимости от своего текущего средства запуска. Ваши макеты виджетов должны хорошо работать с различными размерами Launcher на разных устройствах и при изменении размера виджета.

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

  • Тесты CTS (PeopleManagerTest) для поверхностей API.

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • Ручные тесты для требований GMS - Беседы.