Инициатива «Люди и разговоры» — это рассчитанная на несколько лет инициатива Android, цель которой — повысить качество людей и разговоров на системных поверхностях телефона. Этот приоритет основан на том факте, что общение и взаимодействие с другими людьми по-прежнему остается наиболее ценной и важной функциональной областью для большинства наших пользователей всех демографических групп.
В Android 11 был представлен ряд функций для поддержки инициативы «Люди и общение».
Разговорное пространство
На портативных устройствах в верхней части панели уведомлений есть отдельный раздел, содержащий только разговоры с людьми в реальном времени (например, звонки и сообщения чата, включая групповые чаты). Уведомления в этом пространстве выглядят и действуют иначе, чем уведомления о неразговоре на многих телефонах:
- Дизайн другой: упор сделан на аватар, представляющий людей, в сочетании с приложением, ведущим разговор.
- Нажатие на уведомление открывает разговор в приложении (или пузырь , если разговор ранее был всплывающим), а нажатие на курсор расширяет новые сообщения в тени до полной длины с полным списком опций.
- Предлагаются действия, специфичные для разговора (некоторые при длительном нажатии):
- Отметить этот разговор как приоритетный
- Поместите этот разговор во всплывающее окно (отображается только в том случае, если приложение поддерживает всплывающие сообщения).
- Уведомления о тишине для этого разговора
- Установите собственные звуки или вибрацию для этого разговора.
Разговоры в пузырях
Начиная с Android 11, Bubbles можно запускать из уведомлений в разделе «Беседы». Всплывать могут только уведомления с соответствующим ярлыком. Разговоры автоматически всплывают, если они помечены как важные или появляются в тени уведомлений.
Ярлыки разговора
Ярлыки разговоров появляются в панели запуска, а также в общей таблице вместе с долгоживущими ярлыками общего доступа.
Рекомендации по API
В этом разделе описаны API-интерфейсы для добавления в ваше приложение поддержки предоставленного системой пространства, в котором отображаются люди и разговоры.
Ярлыки для разговоров
Чтобы участвовать в этой инициативе, ориентированной на общение, приложениям необходимо предоставить системе долговременные ярлыки. Мы настоятельно рекомендуем использовать долгоживущие ярлыки общего доступа . При необходимости вы можете использовать динамические ярлыки в Android 11, но в будущем мы можем удалить эту опцию.
Чтобы опубликовать ярлык для беседы, вызовите методы ShortcutManagerCompat
setDynamicShortcuts()
, addDynamicShortcuts()
или pushDynamicShortcut()
(которые автоматически управляют лимитом ярлыков для разработчика). Этот ярлык должен быть долговечным и к нему должны быть прикреплены данные Person
для одного или нескольких человек, идентифицирующие других участников разговора. Мы также рекомендуем вам установить LocusIdCompat
.
Если разговор больше не существует, приложение может удалить ярлык с помощью removeLongLivedShortcuts()
; в результате система удалит все данные, связанные с разговором. Хотя ярлыки можно удалить, приложения не должны удалять кэшированные ярлыки без крайней необходимости; ярлык, вероятно, кэшируется, поскольку пользователь взаимодействовал с ним, чтобы изменить свой опыт, и удаление ярлыка отменит эти изменения, что приведет к разочарованию пользователя.
Уведомления о разговорах
Уведомление считается уведомлением о беседе, если выполняются следующие условия:
В уведомлении используется
MessagingStyle
.(Только если приложение предназначено для Android 11 или более поздней версии). Уведомление связано с действительным долгоживущим динамическим или кэшированным ярлыком общего доступа. Уведомление может установить эту ассоциацию, вызвав
setShortcutId()
илиsetShortcutInfo()
. Если приложение предназначено для Android 10 или более ранней версии, уведомление не обязательно должно быть связано с ярлыком, как описано в разделе запасных вариантов .Пользователь не понизил уровень беседы из раздела бесед через настройки канала уведомлений на момент публикации.
Используйте локусидкомпат
Интеллект на устройстве определяет разговоры, которые, скорее всего, заинтересуют пользователя. Среди наиболее важных сигналов — давность и частота сеансов разговора в каждом разговоре. Система узнает о взаимодействии с разговором с помощью ярлыков 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
ярлыков разговора запускаются непосредственно в соответствующем разговоре. - Используйте совместимые библиотеки, чтобы удобно настраивать ярлыки, связанные с
conversation
.
- Публикуйте ярлыки для входящих и исходящих разговоров в приложении, которые не отправляют уведомления. Входящие и исходящие сообщения для одного и того же разговора должны иметь один и тот же идентификатор ярлыка. Используйте
Тестирование уведомлений и ярлыков разговоров
Если вы следуете правилам использования пространства для разговоров, разговоры должны автоматически появляться в пространстве для разговоров . Вы можете убедиться, что ярлык правильно интегрирован, нажав и удерживая уведомление. Если интеграция выполнена правильно, в пользовательском интерфейсе отображаются действия, связанные с разговором. Если уведомление не связано с ярлыком, в пользовательском интерфейсе отображается текст о том, что приложение не поддерживает функции разговора.
Добавлено отображение ярлыков при длительном нажатии на панели запуска приложений. Обязательно проверьте, что ярлыки перенаправляют вас в нужное место в приложении.
Добавленные ярлыки общего доступа отображаются в строке прямого общего доступа на общей таблице при совместном использовании контента, который может получить ваш ярлык общего доступа.
Виджеты разговоров
В Android 12 функция «Виджет беседы» основана на функции «Люди и разговоры», представленной в Android 11, позволяя приложениям отображать статус беседы в виджетах беседы.
Виджеты разговоров способствуют взаимодействию с пользователями, позволяя им легко открывать чаты на главном экране. Эти виджеты представляют собой расширенные ярлыки, которые позволяют пользователям эффективно возвращаться к своим разговорам, показывая фрагменты статуса разговора или другую соответствующую информацию.
Убедитесь, что ваше приложение поддерживает виджеты разговоров.
Чтобы убедиться, что ваше приложение поддерживает виджеты разговоров, вам необходимо иметь как минимум два устройства Android (оба под управлением Android 12) и две учетные записи пользователей (по одной на каждом устройстве) для обмена сообщениями. Для целей этой процедуры мы будем называть учетные записи «пользователь А» и «пользователь Б».
Выполните следующие шаги:
- На устройстве пользователя А нажмите и удерживайте кнопку запуска. В средстве выбора виджетов коснитесь нового виджета для разговора, как показано на рисунке 2.
- Перетащите виджет на главный экран. Список активных или недавних разговоров из приложения пользователя А должен быть доступным для выбора.
- Теперь на устройстве пользователя Б отправьте тестовое сообщение пользователю А.
- Вернувшись на устройство пользователя А, убедитесь, что виджет обновлен и отражает уведомление о сообщении от пользователя Б.
- Необязательно: попросите пользователя A и пользователя B установить для разговора разные значения статуса, чтобы их виджеты правильно их отражали. Список значений статуса см. в разделе ConversationStatus .