Инициатива «Люди и общение» — это многолетняя программа Android, направленная на улучшение взаимодействия с людьми и общения в системных интерфейсах телефона. Этот приоритет основан на том, что общение и взаимодействие с другими людьми по-прежнему являются наиболее ценной и важной функциональной областью для большинства наших пользователей всех демографических групп.
В Android 11 был представлен ряд функций в поддержку инициативы по взаимодействию с пользователями и организации диалогов.
Пространство для общения

На портативных устройствах в верхней части панели уведомлений есть отдельный раздел, содержащий только сообщения в режиме реального времени (например, звонки и сообщения в чате, включая групповые чаты). Уведомления в этом разделе выглядят и работают иначе, чем уведомления, не относящиеся к разговорам, на многих телефонах:
- Дизайн отличается от привычного, с сильным акцентом на аватаре, представляющем людей, в сочетании с самим приложением, ведущим диалог.
- При нажатии на уведомление открывается диалог в приложении (или всплывающее окно , если диалог ранее отображался во всплывающем окне), а при нажатии на курсор новые сообщения в верхней панели разворачиваются на весь экран со списком доступных опций.
- Для выполнения действий в диалоге предлагаются соответствующие действия (некоторые из них выполняются долгим нажатием):
- Отметьте этот разговор как приоритетный.
- Повысить статус этой беседы до уровня всплывающих окон (отображается только в том случае, если приложение поддерживает всплывающие окна).
- Отключить уведомления для этой беседы
- Настройте звуковые эффекты или вибрацию для этого разговора.
Разговоры в пузырях

Начиная с Android 11, всплывающие уведомления можно запускать из раздела «Разговоры». Всплывать могут только уведомления, к которым привязан ярлык. Разговоры автоматически всплывают, если они помечены как важные или если их всплывание происходит в панели уведомлений.
Сочетания клавиш для общения
Ярлыки для доступа к беседам отображаются в панели запуска, а также рядом с уже существующими ярлыками для обмена данными в меню «Поделиться».
рекомендации по API
В этом разделе описаны API для добавления в ваше приложение поддержки предоставляемого системой пространства для отображения людей и диалогов.
Быстрые команды для диалогов
Для участия в этой инициативе, ориентированной на общение, приложениям необходимо предоставлять системе долгоживущие ярлыки. Мы настоятельно рекомендуем использовать долгоживущие ярлыки для обмена данными . При необходимости вы можете использовать динамические ярлыки в Android 11, но в будущем мы можем удалить эту опцию.
Чтобы опубликовать ярлык для беседы, вызовите методы ShortcutManagerCompat setDynamicShortcuts() , addDynamicShortcuts() или pushDynamicShortcut() (который автоматически управляет ограничением на количество ярлыков для разработчика). Этот ярлык должен быть долговременным и содержать данные Person для одного или нескольких участников беседы. Также рекомендуется установить параметр LocusIdCompat .
Если диалог больше не существует, приложение может удалить ярлык с помощью removeLongLivedShortcuts() ; это приведет к удалению всех данных, связанных с диалогом. Хотя ярлыки можно удалить, приложениям не следует удалять кэшированные ярлыки, если это не абсолютно необходимо; ярлык, вероятно, кэшируется, потому что пользователь взаимодействовал с ним, чтобы изменить свой опыт, и удаление ярлыка отменит эти изменения, что приведет к разочарованию пользователя.
Уведомления о разговорах
Уведомление считается уведомлением из беседы, если выполняются следующие условия:
В уведомлении используется
MessagingStyle).(Только если приложение ориентировано на Android 11 или выше) Уведомление связано с действительным динамическим или кэшированным ярлыком для обмена данными, сохраняющим свой статус длительное время . Уведомление может установить эту связь, вызвав
setShortcutId()илиsetShortcutInfo(). Если приложение ориентировано на Android 10 или ниже, уведомление не обязательно должно быть связано с ярлыком, как описано в разделе резервных вариантов .На момент публикации пользователь не понизил статус беседы в разделе «Обсуждения» через настройки канала уведомлений.
Используйте LocusIdCompat
Встроенная в устройство информация определяет, какие диалоги, скорее всего, заинтересуют пользователя. Среди наиболее важных сигналов — новизна и частота сеансов общения в каждом диалоге. Система знает о взаимодействиях с диалогом из ярлыков Launcher или из уведомлений, если они правильно помечены. Однако система не знает о диалогах, которые происходили полностью в приложении, если эти взаимодействия также не помечены. Поэтому мы настоятельно рекомендуем добавить LocusIdCompat к ярлыку и аннотировать внутриигровое действие или фрагмент соответствующим LocusIdCompat . Используйте LocusIdCompat , чтобы система подсказок правильно ранжировала диалоги и отображала правильное время последнего взаимодействия пользователя (включая внутриигровые взаимодействия) с диалогом. Если вы используете setShortcutInfo() для связывания диалога с ярлыком, система диалогов автоматически добавит соответствующий LocusIdCompat .
Требования к пространству для диалогов в приложениях, ориентированных на Android 10 или более ранние версии.
Если приложение не ориентировано на Android 11, его сообщения всё равно могут отображаться в диалоговом окне. Однако приложение должно соответствовать определённым требованиям. В этом разделе описаны требования к таким приложениям, а также резервный вариант поведения, если приложение не соответствует этим требованиям.
Основное требование для участия в мессенджере — приложение должно реализовывать уведомления MessagingStyle , а уведомления должны ссылаться на долговременный ярлык из уведомления, публикуемый в момент его отправки. Уведомления, отвечающие этим требованиям, отображаются в чате со следующим поведением:
- Уведомление отображается в виде диалога.
- Кнопка "Всплывающее окно " предлагается, если она будет реализована.
- Функции, специфичные для диалога, предлагаются непосредственно в тексте.
Если уведомление не соответствует этим требованиям, платформа использует резервные варианты форматирования. Если уведомление соответствует требованиям любого из резервных вариантов, оно отображается в пространстве беседы со специальным форматированием. Если уведомление не соответствует ни одному из резервных вариантов, оно не отображается в пространстве беседы.
Резервный вариант: если используется MessagingStyle, но ярлык не указан.
Если приложение ориентировано на Android 10 или более ранние версии, и уведомление использует MessagingStyle , но не связывает сообщение с ярлыком, уведомление отображается в пространстве диалога со следующим поведением:
- Уведомление отображается в виде диалога.
- Кнопка с пузырьками не предлагается.
- Встроенные функции, не предназначенные для ведения диалога, отсутствуют.
Резервный вариант: Если MessagingStyle не используется, но приложение является распознанным приложением для обмена сообщениями.
Если уведомление не использует MessagingStyle , но платформа распознает приложение как мессенджер, и параметр category уведомления установлен на msg , уведомление отображается в пространстве беседы со следующим поведением:
- Уведомление отображается в старом стиле, существовавшем до Android 11.
- Кнопка с пузырьками не предлагается.
- Встроенные функции, не предназначенные для ведения диалога, отсутствуют.
Руководство, использование и тестирование
В этом разделе представлены общие рекомендации по использованию и тестированию функций ведения диалога.
Когда следует использовать диалоги?
Уведомления о разговорах и связанные с ними ярлыки призваны улучшить пользовательский опыт в режиме реального времени . Например, SMS, текстовые чаты и телефонные звонки — это разговоры в режиме реального времени, где пользователи ожидают быстрой связи. К электронным письмам и действиям, не связанным с разговорами, таких ожиданий не предъявляется.
Мы предоставили пользователям возможность удалять ту или иную беседу из раздела переписки, если они считают, что она находится не в том месте.
Передовые методы
Для повышения вовлеченности пользователей и упрощения взаимодействия с другими пользователями и организации обсуждений в вашем приложении мы рекомендуем следующие лучшие практики.
- Чтобы пропущенные звонки отображались в панели приоритетных разговоров и корректно показывались в виджете конверсий , отформатируйте уведомления о пропущенных звонках как
conversationsс категориейCATEGORY_MISSED_CALL. - Предоставляйте пользователям высококачественные аватары (104 dp); в противном случае система будет использовать инициалы человека, что сделает взаимодействие с пользователем менее привлекательным.
- Не
cancelуведомление о начале разговора, пока пользователь не увидит сообщение. Например, отмена уведомления при открытии приложения в режиме, где пользователь не может увидеть или ответить на сообщение. Если пользователю не предоставляется возможность прочитать или ответить на сообщение, отмененное уведомление и связанный с ним всплывающий диалог удаляются, что приводит к потере контекста разговора. - Укажите URI
dataдля метаданных, связанных с MIME, которые отображаются в сообщениях, что позволит вам предоставлять более информативные уведомления. - Используйте API
Android 12 status, чтобы сделать виджеты для диалогов более привлекательными. - Примените следующие лучшие практики для быстрого установления контакта в разговоре .
- Публикуйте ярлыки для входящих и исходящих внутриприложенийных диалогов, которые не отправляют push-уведомления. Входящие и исходящие сообщения в одном и том же диалоге должны иметь один и тот же идентификатор ярлыка. Используйте
pushDynamicShortcut()для публикации ярлыков и составления отчетов об использовании. - Чтобы избежать непреднамеренного обрезания аватара ярлыка, укажите
AdaptiveIconDrawableдля значка ярлыка. Дополнительные сведения см. в разделе «Предоставление изображений для ярлыков» . - Чтобы помочь системе продвинуть ваш ярлык, следуйте рекомендациям для достижения наилучшего рейтинга . Ваш ярлык ранжируется в различных системных интерфейсах, включая меню «Поделиться» в Android, если это ярлык для обмена файлами.
- Убедитесь, что ярлыки диалога
intentsк нужному диалогу, запускают его непосредственно в нужном месте. - Используйте библиотеки совместимости, чтобы удобно назначать сочетания клавиш в зависимости от
conversation.
- Публикуйте ярлыки для входящих и исходящих внутриприложенийных диалогов, которые не отправляют push-уведомления. Входящие и исходящие сообщения в одном и том же диалоге должны иметь один и тот же идентификатор ярлыка. Используйте
Тестирование уведомлений и ярлыков для диалогов.

Если вы будете следовать рекомендациям по оформлению диалогового пространства, беседы должны автоматически отображаться в нем . Вы можете убедиться в правильной интеграции ярлыка, удерживая уведомление нажатым. Если интеграция выполнена правильно, пользовательский интерфейс отображает действия, связанные с беседой. Если уведомление не связано с ярлыком, пользовательский интерфейс отображает текст, указывающий на то, что приложение не поддерживает функции беседы.
Добавленные ярлыки отображаются при длительном нажатии на панель запуска приложения. Убедитесь, что ярлыки ведут в нужное место внутри приложения.
Добавленные ярлыки для обмена отображаются в строке прямого доступа в меню «Поделиться» при обмене контентом, который может быть получен с помощью вашего ярлыка.
Виджеты для общения

В Android 12 функция «Виджеты разговоров» развивает возможности виджетов «Люди и разговоры» , представленные в Android 11, и позволяет приложениям отображать статус разговора в виджетах «Разговоры».
Виджеты для общения способствуют взаимодействию пользователей, позволяя им легко открывать чаты на главном экране. Эти виджеты представляют собой расширенные ярлыки, которые позволяют пользователям быстро возвращаться к своим беседам, отображая при этом краткие сообщения о статусе разговора или другую важную информацию.
Убедитесь, что ваше приложение поддерживает виджеты для общения.
Для проверки поддержки виджетов для общения в вашем приложении вам потребуется как минимум два устройства Android (оба работают под управлением Android 12) и две учетные записи пользователей (по одной на каждом устройстве) для обмена сообщениями. В рамках этой процедуры мы будем называть эти учетные записи «пользователь A» и «пользователь B».

Выполните следующие шаги:
- На устройстве пользователя А нажмите и удерживайте значок запуска. В окне выбора виджетов выберите новый виджет для диалога, как показано на рисунке 2.
- Перетащите виджет на главный экран. Должен отобразиться список активных или недавних бесед из приложения пользователя A, которые можно будет выбрать.
- Теперь на устройстве пользователя B отправьте тестовое сообщение пользователю A.
- На устройстве пользователя А убедитесь, что виджет обновился и отображает уведомление о сообщении от пользователя В.
- Дополнительно: пусть пользователь A и пользователь B установят разные статусы для диалога, чтобы их виджеты корректно отображали эти статусы. Список значений статуса см. в разделе ConversationStatus .