Авторизация
Забыли пароль?
Сброс пароля
Вернуться к авторизации

Приложения для экосистемы детских устройств

01 ноября ‘24

Заказчик: Aimoto
Страница кейса/результат: https://www.aimoto.tech/

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

Агентство-исполнитель кейса

flaton

Мы разрабатываем IoT проекты для бизнеса и стартапов

1. Вводная задача от заказчика, проблематика, цели

AIMOTO — российская компания, которая уже 10 лет разрабатывает умные гаджеты и сервисы для всей семьи. В 2019 году, согласно исследованию аналитического агентства Counterpoint Research, компания заняла десятое место в рейтинге ведущих мировых брендов, производящих детские умные часы.

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

Также клиент предоставил нам полуготовое мобильное приложение на Flutter, которое нужно было доработать, а также реализовать новые бизнес-требования.

Общие проблемы проекта:

  • Большой технический долг: Низкокачественная кодовая база, множество ошибок и отсутствие единой архитектуры.
  • Устаревшие технологии и инструменты: Привязка к конкретным не самым удобным инструментам.
  • Проблемы с репозиторием: Беспорядок в репозитории и в миграциях SQLAlchemy.
  • Сложности локальной разработки: Трудности с развертыванием проекта на локальной машине.
  • Нерентабельный глобальный рефакторинг: Из-за большого объема кода и отсутствия общей архитектуры.

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

Aimoto Connect

2. Описание реализации кейса и творческого пути по поиску оптимального решения

Процесс работы

1.Проектирование

В работе над проектом с нашей стороны участвовали четыре человека: один Python разработчик, один разработчик на Flutter, менеджер проекта и тестировщик.

Для разработки серверной части было решено продолжить использовать Python, так как проект был написан на этом языке. Для разработки клиентской части был выбран Flutter по той же причине.

2.Разработка

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

  • Можно выделить несколько основных этапов работы над приложением:
  • Исправление проблем легаси приложения.
  • Осуществить миграцию механизмов оплаты с Google Play и App Store на Yookassa.
  • Доработать мобильное приложение Aimoto Connect. (описать что это)
  • Реализация звонков с часов на Aimoto Connect и обратно.
  • Верстка и инициализация Aimoto Kids. (описать что это)
  • Реализация работы в фоновом режиме Aimoto Kids.

Доработка Aimoto Connect

Aimoto Connect - это умные часы, которые оснащены функциями: встроенный микрофон и динамик, GPS-трекер, кнопка SOS, мониторинг здоровья и напоминания о приёме лекарств. Данные часы предназначены для взрослых и пожилых людей, чтобы их родственники или опекуны могли отслеживать разные показания владельца часов через приложение Aimoto Connect.

Реализация звонков с часов на Aimoto Connect и обратно

Одной из самых длительных задач была настройка обмена звонками между умными часами для детей и приложением для родителей Aimoto Connect.

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

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

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

В процессе работы над задачей:

  • Мы многократно перенастраивали Janus, чтобы добиться стабильной работы.
  • Сервер управлял созданием и завершением сессий, а также передачей учетных данных и параметров сессии между устройствами.
  • Переписали механизм взаимодействия с Janus на стороне приложения, обеспечив корректную работу звонков.
  • Для реализации звонков мы использовали библиотеку flutter_callkit_incoming, которая предоставляет интерфейс для входящих звонков, аналогичный системному приложению телефона.
  • Периодически возникали ошибки, связанные с соединением и передачей данных, которые было сложно отладить из-за сложности взаимодействия с Janus.

Несмотря на исходные трудности с Janus WebRTC, в конечном итоге мы смогли настроить и оптимизировать систему до уровня, обеспечивающего удовлетворительную работу. Однако, проект потребовал постоянного внимания и доработок из-за возникающих проблем.

Доработка Aimoto Kids

Aimoto Kids оснащены схожим функционалом: GPS-трекер, кнопка SOS, совершение и приём звонков, геозоны, камера, будильник и напоминания. Данные часы предназначены для детей, управление происходит через приложение Aimoto Kids App.

Реализация в фоновом режиме Aimoto Kids

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

Однако мы не смогли найти готовое решение на Flutter, которое бы полностью подходило для нашего приложения. Поэтому нам пришлось использовать библиотеку carp_background_location, которая выполняет схожие функции, и адаптировать её под требования нашего приложения.

Реализация звонков с часов на Aimoto Connect

Доработка Aimoto Kids

3. Результаты сотрудничества

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

Дмитрий Н.

CTO, Aimoto

Мы работаем с командой по модели T&M, для нас это идеальная система в нашем продукте, получилось хорошее соотношение цена/качество. Мы смогли запустить MVP для новой поставки за пару месяцев и продолжаем сотрудничество с командой

4. Заключение

Разработали мобильное приложение

Агентство-исполнитель кейса

flaton

Мы разрабатываем IoT проекты для бизнеса и стартапов