Люди и разговоры

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

В Android 11 был представлен ряд функций в поддержку инициативы по взаимодействию с пользователями и организации диалогов.

Пространство для общения


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

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

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

Разговоры в пузырях

Если уведомление соответствует требованиям диалога, платформа запускает его в виде всплывающего окна из панели уведомлений.
Рисунок 2 : Уведомление, запускаемое в виде всплывающего окна из панели уведомлений.

Начиная с 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 .

Тестирование уведомлений и ярлыков для диалогов.

Длительное нажатие на диалог открывает меню действий, связанных с этим диалогом.
Рисунок 3 : Вы можете убедиться в правильности настройки уведомления о разговоре, удерживая его нажатым и убедившись, что появилось меню разговора.

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

Добавленные ярлыки отображаются при длительном нажатии на панель запуска приложения. Убедитесь, что ярлыки ведут в нужное место внутри приложения.

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

Виджеты для общения

Диалоги, отображаемые в виджетах диалогов.
Рисунок 1 : Диалоги, отображаемые в виджетах диалогов.

В Android 12 функция «Виджеты разговоров» развивает возможности виджетов «Люди и разговоры» , представленные в Android 11, и позволяет приложениям отображать статус разговора в виджетах «Разговоры».

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

Убедитесь, что ваше приложение поддерживает виджеты для общения.

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

Интерфейс выбора виджетов для добавления нового виджета для диалога.
Рисунок 2 : Интерфейс выбора виджета для добавления нового виджета для диалога.

Выполните следующие шаги:

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