Конкурс для разработчиков под Android, второй этап

Реакции на сообщения

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

Ресурсы

  • Архив с дизайном всех необходимых экранов приложения можно скачать здесь. В архив также включены видеоролики со всеми анимациями, которые показывают правильное поведение интерфейсов.
  • Подробное описание новой схемы находится здесь.
  • Необходимая схема поддержана в dev-ветке исходного кода.

Описание функционала

Нажимая на сообщение в личном чате, группе или канале, пользователь может выбрать одну из анимированных эмодзи в качестве реакции.

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

1. Установка реакции

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

Изначально в списке статично отображается первый кадр анимированных реакций, для каждой статичной реакции каждые полсекунды с вероятностью 25% начинает выводиться анимация подергивания. После однократного воспроизведения анимации подергивания, реакция снова становится статичной.

Видеоролик: Private Messages.mp4

Макеты: Reactions Actions.png

2. Быстрые реакции

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

3. Просмотр реакций

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

Макеты: Reactions List.png, Reactions List Scrolled.png, Reactions List Filtered.png

Видеоролик: Reactions Menu.mp4

4. Отображение реакций для разных типов контента

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

В личных диалогах реакции всегда выводятся слева от времени отправки в уменьшенном формате.

В каналах реакции являются анонимными. Ни участники, ни администраторы канала не могут просмотреть список отреагировавших.

Макеты: Reactions Channel 1.png, Reactions Channel 2.png, Reactions Group.png, Reactions PM.png, Reactions View Single.png

Видеоролик: Channel.mp4

5. Фотографии пользователей в группах

Для каждого сообщения сервер возвращает фотографии трёх последних пользователей, которые оставили реакцию.

Видеоролик: Emotion.mp4

6. Определение набора реакций для групп и каналов

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

Макеты: Channel Edit.png, Channel Edit Off.png, Reactions Allowed.png, Reactions Disabled.png

Видеоролик: Enable Reactions.mp4

7. Отмена реакции

Для отмены реакции пользователю необходимо сделать двойное быстрое нажатие на сообщение.

В группах и каналах также возможно отменить реакцию при помощи повторного нажатия на уже выбранную реакцию.


Тестирование

Рекомендуется начать тестирование нововведения в тестовом окружении. После того как на тестовом датацентре удалось достичь удовлетворительных результатов, стоит переходить к тестированию в основном окружении. Переключение между окружениями осуществляется с помощью функции Switch Backend в отладочных настройках приложения.

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

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

  • Samsung Galaxy S10 Android 11
  • Samsung Galaxy A51 Android 11
  • Xiaomi Redmi Note 8 Pro Android 10

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

Группы и каналы для тестирования

Для удобства участников, в тестовом окружении существуют канал @ReactionsChannel
и группа @ReactionsChat, в которых чуть позже можно будет увидеть сообщения с большим количеством реакций.


Подача работ

Для подачи работы на конкурс необходимо будет отправить боту @ContestBot.

  1. Необходимо собрать APK со своим package_id, а также подставить собственные api_id / api_hash, зарегистрированные по инструкции https://core.telegram.org/api/obtaining_api_id

  2. Итоговая сборка должна подключаться к основному окружению по умолчанию (не к тестовому).

  3. Используйте release сборку.

  4. Убедитесь, что APK может устанавливаться параллельно с основным приложением. (Проблема с разрешениями для карт и версией Gradle были исправлены.)

  5. Также необходимо приложить ссылку на репозиторий с вашим кодом на GitHub (публичный форк репозитория Telegram).

Для отправки работы, отправьте /start боту @ContestBot и выберите пункт “November 2021 Android Contest”.

Вопросы и неполадки

Задать вопросы о конкурсе и сообщить о технических проблемах с заданием можно в официальной группе Конкурсы Telegram.

Предыдущие разработки

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