Решения для мобильных приложений
Мобильное приложение — не уменьшенная копия настольного интерфейса. От него ожидают работы при потере связи, разрядке батареи и занятых руках.
Пригодность мобильного приложения для работы на объекте чаще определяется не дизайном экранов. Гораздо важнее то, что происходит при обрыве связи, когда синхронизируются данные и какое устройство считается приоритетным, если два из них меняют одну и ту же запись.
Выбор платформы и технологии разработки определяется сценарием использования. У полевого приложения, требующего глубокого доступа к аппаратным возможностям устройства, и у приложения, преимущественно отображающего данные, разные правильные ответы.
Приложения, считающие связь обязательным условием, со временем становятся непригодными для использования на объекте.
Подходим ли мы для этой задачи?
Мобильное приложение — не ответ на любую потребность. Если пользователь работает за столом и задача решается в браузере, отдельное приложение лишь добавляет нагрузку по обслуживанию и версионированию, не давая ничего взамен.
Да, давайте обсудим
- Работа выполняется на объекте, стоя и часто одной рукой
- Требуется доступ к аппаратным возможностям устройства — камере, геолокации, сканеру штрихкодов, NFC
- Необходимо вводить данные даже там, где связь отсутствует
Нет, кто-то другой сделает это лучше
- Приложение лишь уменьшит существующий веб-интерфейс
- Количество пользователей и частота использования не оправдывают нагрузку по публикации и версионированию
- Реальная потребность — в отчётности, а это обычно дешевле решается на веб-стороне
Чем мы занимаемся
- Выбор платформы и технологии в зависимости от сценария использования
- Работа офлайн и локальное хранение данных
- Синхронизация данных и разрешение конфликтов
- Проектирование API на стороне сервера
- Доступ к аппаратным возможностям устройства — камере, геолокации, штрихкодам, NFC, Bluetooth
- Инфраструктура push-уведомлений
- Проектирование удобства использования для полевых условий
- Публикация в магазинах приложений и управление версиями
Как мы работаем
Сценарии использования
Мы определяем, где, в каких условиях и с какой частотой будет использоваться приложение. Условия объекта заранее определяют большинство решений по интерфейсу.
Проектирование потока данных
Именно здесь мы решаем, какие данные останутся на устройстве, когда произойдёт синхронизация и как будут разрешаться конфликты.
Контракт API
Мы пишем серверный интерфейс до начала разработки приложения. Благодаря этому обе стороны продвигаются параллельно.
Разработка и полевые испытания
Мы тестируем приложение на реальных устройствах и в реальных условиях эксплуатации. Тестирование только на эмуляторе мы не считаем достаточным.
Публикация и версии
Мы сами занимаемся публикацией в магазинах приложений и совместно с вами определяем политику версий. Совместимость старых версий с сервером мы поддерживаем в течение переходного периода.
Наши технические решения
- Приложение проектируется так, чтобы оставаться полезным даже без сетевого соединения. Полевой персонал может вводить данные там, где связи нет, а при появлении связи данные синхронизируются. Приложения, считающие связь обязательным условием, со временем становятся непригодными для использования на объекте.
- Что произойдёт, если два устройства изменят одну и ту же запись, определяется ещё на этапе проектирования. Если это правило вводится позже, часть накопленных к тому моменту данных уже успевает стать несогласованной.
- Не все пользователи обновляют приложение одновременно. Серверный интерфейс разрабатывается так, чтобы старые версии продолжали работать; иначе пользователи, не обновившие приложение, окажутся вне системы.
- Отслеживание местоположения, фоновая синхронизация и частота уведомлений настраиваются с учётом времени автономной работы устройства. Приложение, быстро разряжающее батарею, пользователь отключает, даже если технически оно работает корректно.