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

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

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

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

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

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