Проект "Люди и чаты" – это многолетняя инициатива 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открывают нужный чат. - Используйте библиотеки совместимости, чтобы удобно настраивать ярлыки, связанные с
conversation.
- Публикуйте ярлыки для входящих и исходящих чатов в приложении, которые не отправляют push-уведомления. Входящие и исходящие сообщения в одном чате должны иметь одинаковый идентификатор ярлыка. Используйте
Тестирование уведомлений о чатах и ярлыков
Если вы будете следовать рекомендациям, чаты будут автоматически появляться в разделе чатов. Чтобы проверить, правильно ли интегрирован ярлык, нажмите на уведомление и удерживайте его. Если интеграция выполнена правильно, в интерфейсе появятся действия, связанные с чатом. Если уведомление не связано с ярлыком, в интерфейсе появится сообщение о том, что приложение не поддерживает функции чата.
Добавленные ярлыки показываются при долгом нажатии на панель запуска приложений. Убедитесь, что ярлыки ведут в нужные разделы приложения.
Добавленные ярлыки показываются в строке быстрого доступа, когда вы делитесь контентом, который можно отправить с помощью ярлыка.
Виджеты разговоров
В Android 12 виджеты разговоров основаны на функциях, связанных с контактами и чатами, которые появились в Android 11. Теперь приложения могут показывать статус чата в виджетах разговоров.
Виджеты разговоров позволяют пользователям легко открывать чаты на главном экране. Эти виджеты представляют собой улучшенные ярлыки, которые позволяют пользователям быстро возвращаться к чатам и видеть фрагменты статуса чата или другую актуальную информацию.
Как проверить, поддерживает ли приложение виджеты разговоров
Чтобы проверить, поддерживает ли ваше приложение виджеты разговоров, вам понадобятся как минимум два устройства Android 12 и два аккаунта пользователя (по одному на каждом устройстве) для обмена сообщениями. Для целей этой процедуры мы назовем аккаунты "пользователь А" и "пользователь Б".
Выполните следующие действия:
- На устройстве пользователя А нажмите и удерживайте панель запуска. В окне выбора виджетов нажмите на новый виджет для чата, как показано на рисунке 2.
- Перетащите виджет на главный экран. Должен быть доступен список активных или недавних чатов из приложения пользователя А.
- Теперь на устройстве пользователя Б отправьте тестовое сообщение пользователю А.
- Вернитесь к устройству пользователя А и убедитесь, что виджет обновился и в нем появилось уведомление о сообщении от пользователя Б.
- Необязательно: попросите пользователей А и Б установить разные статусы для чата, чтобы убедиться, что они правильно отображаются в виджетах. Список значений статуса приведен в разделе ConversationStatus.