Кейс
Почему люди перестают писать в чате вашего приложения
Когда чат в приложении неудобен или ненадёжен, люди перестают им пользоваться. Вот что мы узнали, исправляя такие проблемы в своих приложениях, и что вы можете проверить сами.
Главное
- Ненадёжный чат тихо отталкивает людей от вашего приложения.
- Поле чата должно очищаться сразу при нажатии «Отправить», а не после ответа сервера.
- Неотправленные сообщения должны оставаться на виду с ясными вариантами повторить, изменить или удалить.
- Чат всегда должен открываться на самом новом сообщении.
- Вы можете проверить эти проблемы сами, прежде чем просить разработчика о помощи.
Когда чат в приложении работает ненадёжно — сообщения застревают в поле, ответы пропадают или последнее сообщение скрыто, — люди тихо перестают им пользоваться. Эти сбои не показываются как ошибки, но из-за них ваша компания может выглядеть неотзывчивой, и со временем люди пишут всё реже.
Что наполовину работающий чат делает с бизнесом
Чат, который ведёт себя не так, как ждут люди, заставляет их сдаться ещё до того, как они увидят хоть какую-то ошибку. Если поле ввода не очищается после нажатия «Отправить», люди могут отправить сообщение дважды или задуматься, ушли ли их слова вообще. Когда переписка открывается где-то в середине старого разговора, человек может пропустить новые ответы и почувствовать, что его игнорируют. Если неудачный ответ тихо исчезает, кажется, что никто не слушает. Ни один из этих сбоев не вызывает оповещений или отчётов об ошибках — они просто заставляют людей перестать писать, часто не объясняя почему.
На что жаловались пользователи наших приложений
Мы видели эти проблемы в своих мобильных приложениях, где есть чат для клиентов и сотрудников. Люди замечали, что после нажатия «Отправить» их слова часто остаются в поле, и они отправляли сообщение снова. Некоторые чаты открывались на старом сообщении, и человеку приходилось каждый раз прокручивать вниз. Отправить второе сообщение было нельзя, пока не завершится первое. Если ответ не отправлялся, он тихо возвращался в поле, без всякого признака, что пошло не так. Если выйти из чата, пока сообщение ещё отправляется, оно могло потеряться совсем. На iPhone с последней версией системы приложение иногда зависало посреди ответа и дважды подряд закрывалось само.
Как зависание привело к повседневным сбоям
Мы начали с того, что разобрали зависание на iPhone: отчёты самого телефона показывали, что приложение переставало отвечать, пока его экран продолжал пересчитывать свою разметку. Поле ввода чата делилось позицией курсора с остальным приложением, но на новейшей системе iPhone поле могло сообщать позиции, которых не существует, и оба начинали бесконечно пытаться исправить друг друга. Когда мы это решили, открылась более глубокая картина: каждый экран чата ждал сервер, прежде чем показать хоть какое-то изменение. Поле очищалось только после ответа сервера, а вся переписка перерисовывалась после каждой проверки новых сообщений, и читателя отбрасывало наверх. Если человек выходил из чата посреди отправки, сообщение терялось. Второе сообщение не могло уйти, пока не завершится первое, а если отправить дважды одно и то же короткое слово (например, «ок»), неудачное второе сообщение просто игнорировалось. Чтение старых сообщений тоже могло вернуть человека наверх чата.
Правило, вокруг которого мы перестроили каждый чат
Мы перестроили каждый чат в наших приложениях по одному правилу: показывать действие человека сразу, а сети давать догнать в фоне. Теперь нажатие «Отправить» мгновенно очищает поле и сразу добавляет сообщение в переписку. Сообщения уходят по порядку, каждое со своей пометкой, так что повторная попытка не отправит одно и то же дважды. Если сообщение не доставлено, оно остаётся в переписке красным с вариантами «Повторить», «Изменить» или «Удалить» — и никогда не исчезает тихо и не прыгает обратно в поле. Сообщения продолжают отправляться, даже если человек вышел из чата или переключил вкладку, а неотправленное сообщение сохраняется на устройстве. Каждая переписка открывается на самом новом сообщении, а если человек прокрутил вверх, он остаётся на месте, и кнопка показывает новые сообщения. На iPhone мы сделали собственное поле ввода, которое следит только за своими словами и держит свой размер, поэтому оно больше не может заморозить приложение.
На каком этапе эти изменения
Каждый экран чата в наших приложениях для iPhone и Android перестроен по этим правилам. Эти изменения — в следующих версиях приложений: до всех они дойдут, когда новая версия для iPhone будет одобрена для App Store, а новая версия для Android уже доступна в Google Play. На наших тестовых телефонах поле чата очищается в момент нажатия «Отправить», каждый чат открывается на самом новом сообщении, неудачные ответы ждут красным с вариантами действий, и даже тот ответ, что когда-то замораживал приложение, теперь печатается плавно.
Что вы можете проверить сами
- Отправьте сообщение на медленном соединении и посмотрите, очищается ли поле сразу.
- Откройте чат с долгой историей и проверьте, открывается ли он на самом новом сообщении.
- Включите режим полёта, отправьте ответ и поищите ясный признак, что сообщение не отправлено, и способ повторить попытку.
- Отправьте сообщение, сразу выйдите из чата, затем вернитесь и проверьте, дошло ли оно.
- Наберите длинный ответ с исправлениями и эмодзи на телефоне с последней версией системы и посмотрите, успевает ли приложение за вами плавно.
Что делать дальше
Если чат в вашем приложении тормозит, теряет ответы или открывается не там, где нужно, это не просто мелкие неудобства — они стоят вам доверия. Попробуйте проверки выше. Если вы видите какие-то из этих сбоев, попросите разработчика вашего приложения посмотреть, как обрабатываются сообщения чата и показываются ли действия сразу, а не только после ответа сервера. Такой работой — находить и исправлять невидимые сбои в чатах и комментариях — инженеры Tech Concierge занимаются для приложений и сайтов клиентов.
Частые вопросы
Почему поле чата в моём приложении остаётся заполненным после нажатия «Отправить»?
Если поле чата остаётся заполненным после нажатия «Отправить», пользователь видит свои слова на месте и может отправить сообщение снова. Обычно это значит, что приложение не обновляет поле, пока не получит ответ от сервера, а это ощущается медленно и сбивает с толку.
Почему чат открывается на старых сообщениях, а не на последнем?
Если чат открывается где-то в прошлом, возможно, он заново перерисовывает всю переписку или не помнит, где вы остановились. Из-за этого пользователям приходится прокручивать, и они могут пропустить новые ответы.
Что должно происходить, когда сообщение в приложении не отправляется?
Неотправленное сообщение должно оставаться видимым в переписке, ясно помеченным (например, красным), с вариантами повторить, изменить или удалить его. Оно не должно исчезать или тихо возвращаться в поле ввода.
Почему моё приложение зависает, когда я печатаю длинный ответ на новом iPhone?
В некоторых приложениях поля ввода плохо работают с новейшими системами iPhone, особенно если они передают данные о курсоре или разметке так, как больше не поддерживается. Это может вызывать бесконечные пересчёты и замораживать приложение.
Может ли сообщение отправиться дважды, если первое шло медленно?
Если приложение неправильно обрабатывает повторные попытки, отправка сообщения снова, пока первое ещё в пути, может привести к дублям или к незамеченным неудачным сообщениям. У сообщений должны быть пометки, чтобы повторять отправку безопасно, без дублей.