Инициатива «Люди и разговоры» — это многолетняя инициатива 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
. - Предоставляйте пользователям высококачественные аватары (104dp); в противном случае система будет использовать инициалы человека, что будет менее интересным опытом.
- Не
cancel
уведомление о разговоре, пока пользователь не увидит сообщение. Одним из примеров этого является отмена уведомления при открытии приложения в представлении, где пользователь не может увидеть или ответить на сообщение. Если пользователю не предоставлена возможность прочитать или ответить на сообщение, отмененное уведомление и связанный с ним пузырь удаляются, что приводит к потере контекста разговора. - Укажите URI
data
для метаданных MIME, связанных с сообщениями, что позволит вам расширить возможности уведомлений. - Используйте API
Android 12 status
чтобы сделать виджеты бесед более интересными. - Воспользуйтесь следующими рекомендациями по сокращению разговора .
- Публикуйте ярлыки для входящих и исходящих разговоров в приложении, которые не отправляют уведомления. Входящие и исходящие сообщения для одного и того же разговора должны иметь одинаковый идентификатор ярлыка. Используйте
pushDynamicShortcut()
для публикации ярлыков и создания отчетов об использовании. - Чтобы избежать непреднамеренного обрезания вашего аватара ярлыка, предоставьте
AdaptiveIconDrawable
для значка ярлыка. Подробнее см. в разделе Предоставление изображения ярлыка . - Чтобы помочь системе продвигать ваш ярлык, следуйте рекомендациям по получению наилучшего рейтинга . Ваш ярлык ранжируется в различных системных поверхностях, включая таблицу обмена Android, если это ярлык для обмена.
- Убедитесь, что
intents
ярлыков беседы запускаются непосредственно в соответствующей беседе. - Используйте библиотеки Compat для удобной настройки сочетаний клавиш, связанных с
conversation
.
- Публикуйте ярлыки для входящих и исходящих разговоров в приложении, которые не отправляют уведомления. Входящие и исходящие сообщения для одного и того же разговора должны иметь одинаковый идентификатор ярлыка. Используйте
Тестирование уведомлений и сочетаний клавиш разговора

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

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

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