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

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

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

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

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

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

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

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

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

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

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

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

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

    conv_bubbles

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

    conv_notification

    Рисунок 2. Пространство для разговоров, расположенное над панелью уведомлений.

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

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

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

Партнеры, реализующие беседы, также обязаны реализовать важные беседы. Однако реализация диалогов может быть согласована с аналогичными концепциями 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-тесты.

    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. Поддержка изменения размера виджета следующим образом:

При реализации виджетов бесед учитывайте следующие зависимости:

  • Партнеру не нужно изменять или внедрять код 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. При длительном нажатии на панели запуска можно добавить новый виджет разговора для разговора с помощью средства выбора виджетов. См. рисунок 4 для пользовательского интерфейса выбора виджетов:

    widget_picker

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

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

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

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

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

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

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • Ручные тесты на соответствие требованиям GMS - Разговоры.