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

В 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, обязаны также реализовать Important conversations. Однако реализация Conversations может быть согласована с концепциями OEM аналогичного характера. В целом, партнеры имеют свободу согласовывать раздел conversation с их конкретным System UI. Партнеру не нужно изменять или реализовывать 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. Приложения, которые полностью поддерживают API Conversation, видят свои уведомления в новом разделе и могут настраивать эти уведомления по разговору, а не по общему 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: Разговоры, отображаемые в виджетах разговоров

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

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

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

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

  • Партнеру не нужно изменять или внедрять код HAL/драйвера/ядра.
  • Для реализации используется API статуса, который позволяет приложениям добавлять информацию о статусе или доступности в беседу и связанный с ней виджет.
  • Процесс одинаков как при внедрении новых устройств, так и при внедрении обновлений.
  • Функция Conversation Widgets зависит от новой функции, запущенной в 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/

Настройка

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

Проверка

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

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

    widget_picker

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

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

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

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

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

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

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