Улучшаем пользовательский опыт. Новый облик программного сканера штрих-кодов

Ситуация

Компания разрабатывает решения для управления мобильной торговлей: мобильное приложение для торговых агентов и товароведов (мерчендайзеров), а также модули подключения к учётным системам на платформе «1С: Предприятие».

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

Окно сканера штрих-кодов в момент чтения линейного кода EAN-13

Проблема

Пользоваться существующим решением неудобно:

  • низкая скорость запуска,
  • медленное чтение кодов,
  • одиночный режим чтения кодов: нет возможности сканировать несколько кодов подряд,
  • нельзя использовать вспышку мобильного устройства для подсветки объекта,
  • нет поддержки инвертированного кода DataMatrix, который используется системой маркировки «Честный знак».

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

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

Решение

Используемая библиотека сканирования не поддерживает инвертированный код DataMatrix, поэтому мы приняли решение её сменить. Это сразу решило часть проблем: сканер стал запускаться быстрее, полная поддержка кодов DataMatrix, высокая скорость чтения.

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

Пакетное сканирование — это возможность сканировать множество кодов без закрытия сканера. Позволяет нам экономить около трёх секунд на чтении каждого кода.

Простым исключением повторного запуска сканера мы получили прирост скорости считывания кодов в два раза
Но для этого нам пришлось идти на компромисс — в сценарий одиночного сканирования добавился один шаг, что добавило целую секунду ко времени всего цикла

Реализация

Запишем требования к интерфейсу:

  • портретный режим,
  • кнопка «включить» / «выключить» фонарик,
  • пакетный режим сканирования кодов.

Мы решили запускать сканер сразу в пакетном режиме и не делать дополнительного переключателя режимов.

Всего получается три экрана:

  1. Сканирование кода.
  2. Сообщение об успешном сканировании и информация о добавленном в документ товаре.
  3. Сообщение об ошибке.

Сканирование кода

После запуска сканер сразу переходит в режим сканирования кодов.

В первом варианте был минимум элементов: видоискатель, панель с кнопками «включить фонарик» и «закрыть сканер». Сканер работает в режиме автоматического определения типа кода.

Этот подход имел два недостатка:

  1. Возможна ситуация, когда два различных кода размещены рядом, например, блоки сигарет с маркировкой «Честный знак». В этом случае невозможно гарантировать чтение нужного кода.
  2. Автоматический выбор типа кода снижал скорость сканирования.

Ещё мы выяснили, что код в системе «Честный знак» содержит в себе и код EAN-13 (GS1-128), то есть для работы с маркированной продукцией достаточно чтения кодов DataMatrix. А там, где используется только код EAN-13 или GS1-128 кода маркировки нет. Поэтому мы решили сделать переключение режимов сканирования: 1D (EAN, GS1 и т.п) и 2D (QR-Code, DataMatrix и т. п.).

Во втором варианте в верхнюю часть экрана мы добавили переключатель режимов. Также режимы можно было переключать смахиванием (swipe).

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

Эволюция экрана сканирования кода

Успешное чтение кода

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

Ещё во время тестирования библиотеки мы обнаружили, что неудобно пользоваться бесконтрольным потоковым сканированием. То есть когда сканер сканирует все, что есть вокруг — мы решили дать пользователю возможность самостоятельно запускать поиск кодов.

Все эти нюансы мы учли во второй версии экрана: сообщение об успешном добавлении позиции стало всплывающим и переехало в верхнюю часть экрана. Кнопки «отмена» больше нет. Оно просто выводит информацию о добавленном товаре и не блокирует работу со сканером.

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

Код считан успешно, позиция добавлена в каталог

Сообщение об ошибке

Ошибки это важно. При ошибке мы блокируем работу со сканером и ждём от пользователя подтверждения о том, что он прочитал.

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

При чтении кода или добавлении позиции в каталог произошла ошибка
Дизайн-макет

Результат

Приложение

Заключение

Нам удалось сделать удобный и востребованный инструмент сканирования штрих-кодов на базе мобильного приложения, возрастом 15 лет.

Из-за того, что цена используемой библиотеки зависит от количества активных пользователей, нам пришлось сделать доступ к новому сканеру по подписке.

Перейти на страницу продукта на сайте компании

Команда

Идея, концепт и прототип в Figma — Саша Дегтярев

Программисты:

  • Саша Лещёв
  • Максим Сёмин
  • Дима Макеев

Советы и тестирование — Серёжа Кузьменко

Продакт — Искандер Мильгизин

Поделиться
Отправить
Запинить