Как создавался TMDriver для iPhone — беглый очерк разработчика

avatar Павел
Овчинников
25.07.2013, 15:31
комментировать

TMDriver

Ижевские разработчики порадовали iOS новым приложением — TMDriver. Это приложение для мобильных устройств, позволяющее водителю такси производить расчет стоимости каждой поездки и всегда быть на связи с диспетчерской, клиентами и другими водителями. Приложение работает исключительно в связке с модулем системы Такси-Мастер «Связь с водителями», использование которого избавляет службу такси от раций и ускоряет процесс обработки заказов. Вот что о приложении рассказывает сам разработчик — Олег Шулаков, программист компании БИТ Мастер

Зачем таксистам приложение для iPhone? Такой вопрос я слышал неоднократно в процессе создания приложения. Я сам не часто пользуюсь услугами такси, но подозреваю, что отсутствие современных смартфонов у водителей не в последнюю очередь связано с отсутствием ПО для их работы. И цель нашей компании, и меня в том числе, обеспечить их таким ПО.

Подробнее о процессе разработки. Никакого техзадания изначально не было и не предполагалось, поэтому оценить трудоемкость проекта на начальном этапе было сложно. Зато были исходники для Android и Windows Mobile. что было большим плюсом.

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

Предметная область была для меня нова, поэтому внутреннюю модель приложения я решил максимально приблизить к версии Windows Mobile. По сложившейся в компании практике, нововведения вводятся именно в нее. Схожесть исходников так же дает преимущества в дальнейшей поддержке приложения.

Еще одна удобная библиотека, которая используется в программе — InAppSettingsKit. Она позволяет быстро и удобно сделать окно настроек внутри приложения. На вход ей подается Root.plist, похожий на тот, который кладется в Settings.bundle при выводе настроек в стандартном приложении Settings.app. В итоге, с минимумом кодинга, получается окно настроек, которое можно показывать в приложении.

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

Если кому-то интересен вопрос дизайна приложения, то его нет и обсуждать здесь нечего:)

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

Не скупитесь на ретвиты ↓
  • http://twitter.com/smolnikov Sergey Smolnikov

    > Если кому-то интересен вопрос дизайна приложения, то его нет и обсуждать здесь нечего:)

    а что тогда обсуждать? кода-то тут нет.

    • http://twitter.com/apodkin Andrew Podkin

      >> а что тогда обсуждать?

      А что бы вы хотели обсудить?

      >> кода-то тут нет.

      Так же, как и код клиента ivi.ru не был приложен к соответствующему посту. Там это вам, Сергей, почему-то не показалось странным.

      • http://twitter.com/smolnikov Sergey Smolnikov

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

        Андрей, мы, конечно, лично не знакомы, но на ижайти ко мне вполне можно обращаться на «ты». Это в любом случае лучше, чем «вы» с маленькой буквы :)

        • http://twitter.com/apodkin Andrew Podkin

          Сообщил Олегу, в ближайшее время он появится и что-нибудь ответит :-)

  • vva

    А какими причинами была продиктована работа с сокетом именно в асинхронном режиме?

Get Cloud PHP Hosting on CatN