Транспорт Санкт-Петербурга, приложение под iOS

    Когда 6 марта опубликовали информацию о Транспортном Портале Санкт-Петербурга, я сразу взялся изучать их сайт. Меньше чем через сутки уже была первая версия приложения на основе наспех собранной html страницы, в app store, конечно, в таком виде меня не выпустили, хотя работало все достаточно быстро.

    image


    Под катом расскажу что же из всего этого получилось.
    image image



    Выбор фреймворка


    Гугл запрещает использовать свои карты для подобных платных приложений, поэтому родной map-kit был отвергнут. html-based приложения со скрипом проходят проверку, apple советует переписывать все на html5, но тут же карты со стандартным фреймворком. Да и вообще понятно, что надо искать «нативные» пути.

    В итоге c помощью все того же гугла я остановился на фреймворке route-me, а точнее его форке от Alpstein. Гугл же дает странный ответ на вопрос про слои: предлагается лепить целиком карты одну поверх другой и синхронизировать touch events. Хороший такой, годный бутерброд должен получаться.

    Пришлось переписывать фреймворк для поддержки слоев, исходники пока опубликованы в виде патча, не доходят руки выложить целиком. Alpstein'цы почему-то не хотят перетащить изменения к себе, хотя речь идет, на мой взгляд, о базовой функциональности. Суть модификации сводится к тому, что в UIScrollView добавляется не вьюха с картой, как в оригинальном коде, а вьюха-контейнер. В контейнер складываются вьюхи с картами. Пара методов для добавления новых tileSources и вставки их по заданому индексу, и все.

    Портал


    Тут уже были статьи и про андройд верисию, и про html, но почему-то функциональность этих приложений сводится только к отображению слоев с транспортом. Поэтому я все-таки скажу пару слов о том, как сделать больше.

    Главные инструменты тут – браузер, wget и какой-нибудь сниффер на выбор: ngrep, tcpdump, tcpflow, для ленивых есть еще графический HTTPScoop. Ползая по порталу и изучая запросы, удалось выяснить, что почти все построено на json'е, а таблицы на datatables. Я формировал свои запросы к datatables, на всякий случай вытаскивая информацию кусками по 25 страниц, как это делается на самом портале. Таким образом можно получить список маршрутов, прогноз для остановок, возможно что-то еще.

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

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

    Организационные моменты


    Гос-структуры и работающие с ними компании – это кошмар. Очень трудно объяснить савдеповским секретарям, про какой портал идет речь. Непросто выйти на разработчиков. Невозможно ни о чем с разработчиками договориться: они постоянно меняют настройки сайта, иногда таким образом, что программа перестает работать. Apple публикует новые версии примерно неделю…

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

    Продажи


    Продажи, конечно, смешные, за два месяца куплено около 50 аппликух. Любопытно, что с выходом английской версии сумма продаж по иностранным магазинам иногда превышает продажи в русском. Есть неприятное ощущение, что работа получилась в стол и разработка не окупится. Ну да много ли в Питере людей с айфоном, пользующихся общественным транспортом и готовых потратить целый доллар? Впорос, конечно, риторический.

    Чем еще вас порадовать?



    FXL4M7RJ4XHE
    NN9NW7HJHHL3
    JXN7FLEYLY7W
    TJXW94JH763F
    A7M9XMJ94YTK
    Метки:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 79
    • +1
      >>Ну да много ли в Питере людей с айфоном, пользующихся общественным транспортом и готовых потратить целый доллар?
      Я как представитель людей с айфоном, ездящий в ОТ, заявляю, что о вашей программе просто никто не знает. :-)
      • +1
        А что если договориться с транспортниками и клеить маленькие такие наклейки с описанием приложения и QR-кодом в салоне?
        • +2
          Ой, да можно просто клеить на остановках.
          • 0
            Вот из-за таких хитрых остановки в хламину превращаются.
        • +1
          вот вот, толпы людей с айфонами. нужна реклама просто
          • 0
            Может быть. Но на айфонз.ру хотят 30к за обзор, я как-то сомневаюсь что эта сумма окупится.
            Написал пока тут. =)
            • 0
              ну реклама — двигатель торговли, что Вы хотели? :)
              благо на хабре 30к не просят
              • 0
                Да, правда, прогуляйтесь по районам. Понаклейте на остановках спама и все будет.
                Это явно более таргетированно, чем обзор на айфонс.
                • 0
                  Ага, клеить QR коды, дворники и не осознают, а целевая аудитория во-всю. =) Надо будет подумать.
                  • 0
                    Только QR код — не лучшая идея. Ваша ЦА — это не только айтишники, а вообще все с айфонами.
                    Пишите тупо: «Найди автобус на своем айфоне!» :-)
                • 0
                  На iphones.ru хотят денег? Еще недавно они в [dev story] публиковали абсолютно бесплатно.
                  • 0
                    Я нашел форуме SeaBreeze'а, спросил в личке про возможность публикации. Ответ был несколько удивительным для меня.
                    • 0
                      Я когда публиковался никаких форумов не читал и в личке не общался. У них там где-то написано, что в dev story принимаются бесплатно истории разработки. Написал напрямую Артуру. Разместили на сайте. Ни о каких деньгах речь не шла.
                  • 0
                    мне кажется, что об этом приложении они напишут.
                    им профит будет обширный — там и так читатели ругаются в комментах что у них ничего интересного уже нет, одна желтуха да заказное.

                    а так — им плюс в карму, и вам помогут.
                    • 0
                      Будет время – напишу там в дев стори. Пока времени нет совсем, едва нашел пару минут модифицированные исходники фреймворка нормально выложить. И надо еще обновление публиковать, есть что поправить.
              • 0
                Вы бы вначале графику для ретины адаптировали, а потом в продажу приложение пускали. Выглядит отвратно.
                • 0
                  Вообще поддержка ретины встроена в route-me, правда мне пришлось править этот код, в оригинале он работал некорректно.
                  Расскажите, пожалуйста, подробнее, что не так.
                  • 0
                    Кнопки под картой «квадратичные». Хотя все остальное, вроде, в норме.
                    • 0
                      Это на айфоне или на айпаде? Вероятно надо с иконками разбираться, запишу себе в баги.
                      • 0
                        На айфоне с ретиной.
                        • 0
                          Так откройте эмулятор айфона с ретиной и все видно будет.
                          • 0
                            Да у меня и так оба девайса с ретиной, видимо просто глаз замылился. Спасибо.
                  • 0
                    Серьезный подход к делу. Капельку завидую по-белому.
                    Отличие этой версии от всех других — в наличии цены. Кстати, юридически можно продавать фактически контент бесплатного государственного портала (чистое любопытство)?
                    • +1
                      Разработчики ничего против этого не сказали. На сайте портала я тоже никаких запретов не увидел.
                      Наличие цены обусловленно желанием оплатить работу разработчика, т.е. мою. ;-) Пока, вроде, отбился сертификат.
                      • 0
                        Завидую вашей настойчивости. Я 2 месяца после работы писал похожее приложение, vk.com/minsktrans_wp7, но денег брать не берусь.

                        Каждый раз вспоминаю отцов опенсорса которые годами писали то чем потом тысячи людей пользуются и ни копейки не просили. После этого за детские поделки для телефона стыдно просить что либо.
                        • 0
                          Ваш коммент больше похож на троллинг, но я все-таки отвечу. У меня хватает деятельности, не приносящей прибыль. У меня есть opensorce проекты, например vmbix – я писал его в рабочее время для рабочих нужд и с удовольствием раздаю всем желающим.

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

                          Кроме того цену в $0.99 я считаю символической. Если Вы готовы потратить свои деньги на сертификат, свое время на разработку и раздавать все бесплатно – это Ваше право.
                          • 0
                            Видимо готов, и хочется верить что не один такой.
                            • 0
                              Читал не так давно исследование на тему приносимого счастья. Деньги приносят счастье когда их тратишь на других, а когда просто получаешь гораздо меньше. Не помню деталей уже, но нутром чую что это работает.
                              • 0
                                Ну так чтобы тратить, надо зарабатывать. ;-)
                    • 0
                      Не понял что-то, что делают галочки в списке маршрутов?
                      • 0
                        Добавляют их на карту.
                      • 0
                        Тут уже были статьи и про андройд верисию, и про html, но почему-то функциональность этих приложений сводится только к отображению слоев с транспортом.


                        Уже не только :) Просто нужно было с чего-то начать, а это самое интересное и полезное
                        • 0
                          Упс, я проглядел изменения. Судя по всему маршруты таки текстом вынимаются? Я ленюсь это реализовывать.
                          Кстати я сам больше всего прогнозом пользуюсь, думал еще расписание и нотификации прикрутить, но пока руки не доходят.
                          • 0
                            Маршруты тоже в JSON. А вот расписания по каждой остановке в JSON не нашел, сейчас пока решил просто распарсить html.
                            Кстати, в среду пригласили в комитет по транспорту на беседу с Поповым С.В., буду спрашивать насчет полноценного АПИ и не собираются ли банить подобные приложения.
                            • 0
                              А я с Константином Жебеневым там общался, а потом еще с кем-то. Я так понял – банить не хотят, публиковать не хотят. До окончания тестовой эксплуатации ничего не гарантируют. Хотят свои аппликухи, заинтересованы в сотрудничестве, но связаны по рукам и ногам. Вообще ребята там приятные. =)
                              • 0
                                Надо будет и с ними пообщаться :)
                                • 0
                                  Я с ним месяц втретиться не мог. =)
                                  • 0
                                    Писал как-то через форму на портале:
                                    " Было бы здорово открыть API для интеграции вашего сервиса и сторонних
                                    программ и сайтов. Такие фирмы как 2gis могли бы сделать ваш сервис более
                                    востребованным и эффективным."


                                    Получил ответ:
                                    «Спасибо за Ваше обращение.
                                    Этот вопрос Вам надо адресовать Комитету по транспорту. Он является
                                    владельцем данного ресурса.

                                    С уважением,
                                    Роман Никитин
                                    Начальник отдела развития ИСКАТ
                                    УИТ СПб ГКУ <Организатор перевозок>»

                                    Из Комитета по транспорту ответа не получил =(
                                    • 0
                                      Если есть вопросы кроме АПИ, то пишите, т.к. в среду я иду встречаться с председателем этого самого комитета и постараюсь все выяснить. Кроме АПИ — потому что это и так один из основных вопросов встречи.
                                      • 0
                                        Спросите собираются ли они использовать формат Google Transit Feed Specification? Приложения отлично, но на картах гугл уже был бы совсем другой масштаб. В Турине(Италия) считает до минут маршруты через google =)
                                        • 0
                                          Вопрос принят :)
                                          • 0
                                            Насколько я знаю, «американцам» там не рады. Вроде даже яндексу данные отдавать не хотят.

                                            PS: Спросите, пожалуйста, когда уже закончится тестовая эксплуатация. Пару недель назад они ограничили доступ по user agent, мой апп перестал работать. Сослались на тестовую эксплуатацию, сказали, что предупреждали. На мою просьбу добавить моего агент в список ответили согласием, но до сих пор ничего не исправили. Я уже обновил апп, притворяюсь фаерфоксом, но полторы недели пользователи жиили с неработающей программой, а я набрал негативных отзывов.
                                            • 0
                                              Спрошу.
                                              • 0
                                                Кстати, спросите про расписание, может выдадут в json'е. ;-)
                                                • 0
                                                  Этот вопрос меня тоже волнует, так что уже записано :)
                                • 0
                                  Кстати да, расписание в html меня не порадовало, оно еще и вида странного. Я нашел как вычленить эту html таблицу, но отображать ее как есть – глупо. Надо растаскивать на свои объекты и в инфе про остановку отображать.
                                  • 0
                                    Ну да, именно так.
                                    А вот насчет прогноза — я им еще не занимался в плане реализации (хотя с запросом разобрался), но даже если просто на портале смотреть информацию — ее просто нет в большинстве случаев.
                                    • 0
                                      Она то есть, то ее нет. На 1, 7, 128, 6 – вполне себе. Трамвами, троллейбусы – явно хуже.
                                      Вообще разработчики говорят, что охвачено 96% автобусов.
                              • 0
                                Кстати, транспорт, ползающий под слоем маршрутов – знакомая история. ;-)
                                • 0
                                  Странно, мне казалось, что фиксил этот бажок. Наверное на винфоне исправил, а на андроиде проглядел.
                                  • 0
                                    Я на скриншоте разглядел. На андроид ставил еще первую версию, а потом куда-то дел телефон, не могу найти.
                                • 0
                                  А есть в приложении делать дамп карты, чтобы на ходу её не грузить, а подгружать только треки транспорта и по возможности только нужных маршрутов(для минимизации трафика)?
                                  • 0
                                    дамп имеется ввиду из osm или еще как-нибудь
                                    • 0
                                      Собственно дампа нет, но карта кешируется. Слои с автобусами/трамваями/троллейбусами можно отключать индивидуально. Кстати, тогда оставшиеся слои будут обновляться чаще: слои обновляются «по кругу», раз в 5 секунд. Т.е. когда все три слоя включены они все обновляются за 15 секунд, как и на сайте самого портала.
                                      • +1
                                        Я, когда посмотрел на работу сайта, сделал примерно так же — три (ну или две, в зависимости от выбора) разных картинки, но потом подсказали, что запрос работает и вот так: LAYERS=vehicle_bus,vehicle_tram,vehicle_trolley
                                        Т.е. запрашиваем одну картинку, на которой есть все, что нам нужно. Экономия трафика для тех, у кого он не анлим.
                                        • +1
                                          О, спасибо, очень дельный совет! Попровлю в следующей версии.
                                  • –3
                                    Вы бы хотя бы логотип покрасивей сделали…
                                    А то пока приложение купить хочется только из жалости.
                                    • 0
                                      Буду благодарен конкретным предложениям. Потому как мне экарус нравится, я его 4 дня рисовал. =)
                                      • –1
                                        Рисовали Икарус, получился Экарус, я понял ;)
                                        • 0
                                          Я не дизайнер, да и IPhone видел только со стороны, но попробую сформулировать, что резануло глаз мне:
                                          — Если иконка с бликом, то бликует она целиком, а не только фон.
                                          — Можно подумать, что три прикольные наклейки наклеены на стекло. Но реалистичности для такого эффекта всё же не хватает.
                                          — Проработка трёх транспортных средств какая-то неоднородная. Икарус явно аккуратнее своих соседей.
                                          — Непонятное нечто в правом верхнем углу. Ни по виду, ни по смыслу не вяжущееся ни с чем больше на иконке. Можно, конечно, догадаться, что хотел показать автор. Но всё же мешать разные метафоры таким образом на одной иконке — плохая идея.

                                          Я бы оставил только икарус, сделал его крупнее, выкинул всё остальное, включая фон. И поигрался бы с «наклеечным» стилем.
                                        • 0
                                          Приложение защищать не буду, а вот за автора заступлюсь. Я всегда за конструктивную критику, есть что критиковать критикуй, а не унижай. А Вам, жалостливый Вы наш, рекомендую тогда показать уровень своих работ и разработок. Вдруг Вы действительно светило дизайна и разработки под iOS, а мы тут не разглядели.
                                          • –3
                                            Я искренне не понимаю, за что тут платить деньги автору?
                                            На сайт можно зайти и в Safari и точно так же посмотреть, где едет транспорт.
                                            • 0
                                              А автор Вас и не заставляет. И про Safari, я тоже соглашусь. Приложение автору надо было делать бесплатным, и монетезировать рекламой. Охват аудитории был бы больше, лично мое мнение такое. Мне кажется, что надо критиковать приложение, а не автора и не переходить на личности (это я про Ваш коммент про жалость).
                                              • 0
                                                А я, например, понимаю. Сам пытался заходить через сафари на сайт — отстой.
                                          • 0
                                            Крутая программа. Еще под android скомпилить её надо =)
                                            • 0
                                              Так есть под андроид, может быть даже будет функциональнее. Я эту разработку уже месяц не открывал.
                                              Посмотрите по тегу.
                                            • 0
                                              Кстати, это только у меня или у всех?
                                              При восстановлении пароля на сайте ТПСК он возвращает пароль в открытом виде О_О, надо только знать email…
                                              • 0
                                                Вернее сказать он открыто отдает измененный пароль, но это уязвимость не отменяет. Алсо я писал на сайт об этой баге.
                                              • 0
                                                Требуется iOS 5.1? Джеилбрейкеры шлют лучики ненависти :(
                                                • 0
                                                  Я даже полез проверять в itunes и в xcode. Видимо настройки слетели, я все обкатывал в симуляторе версии 4.3 – девайсы у меня только на 5.1 и 3.1.3, рад бы и 3.1.3 поддерживать, но сам фреймворк на этой версии не живет.
                                                  Ждите апдейт через недельку-полоры. =)
                                                • 0
                                                  А offline оно не работает, значит? Пусть без движения транспорта, но маршруты посмотреть было бы полезно без траты денег.
                                                  • 0
                                                    Список маршрутов – несколько килобайт. Остановки – тоже. А вот отрисовка маршрутов – это еще один графический слой, фактически еще одна карта. И кушировать ее нельзя, потому что цвета каждый раз могут быть разными.
                                                    Т.е. можно подумать про выкачивание базы маршрутов и остановок, но без карт.
                                                    • 0
                                                      Не совсем понял, цвета чего вы имеете в виду?
                                                      • 0
                                                        Цвета линий, которыми отрисовываются маршруты. Если отобразить сразу три маршрута, они будут разных вцетов. Если больше, цвета уже будут пересекаться.
                                                  • 0
                                                    Советую посмотреть приложение GoThere.sg

                                                    На мой взгляд именно таким должен быть поиск транспорта. Мне кажется вам есть чему поучиться у этиз ребят. Так-же у них есть веб приложение gothere.sg
                                                    • 0
                                                      Для Москвы нет чего-нибудь подобного?
                                                      • 0
                                                        Я ничего про Москву не нашел. Знаю что этот же сервис может со временем появиться во всех «миллионниках», тогда можно будет адаптировать имеющиеся аппликухи.
                                                      • 0
                                                        Ну че автор молодец. Приложение уже на 34 месте в общем ТОПе.
                                                        • 0
                                                          Это, видимо, публикация в айпланете. У меня пока в статистике довольну глухо все. Посмотрим, отобьется ли эта реклама.

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