Транспорт Томска strikes back

Спустя два года после выпуска версии 1.6 своего приложения «Транспорт Томска» написал новое, в той же тематике, но с учетом современной ситуации. С началом 2017 года мэрия заставила-таки автобусы публиковать свои координаты!

Технологии

В сравнении с предыдущей версией список зависимостей расширился значительно: с 6 до 16. Тут всё самое модное и популярное: ButterKnife и RxJava, Immutables и Retrofit, Dagger и JodaTime. Изначально был ещё Conductor, но в силу простой навигации (фактического её отсутствия) обошлось без него. Можно было бы выкинуть половину библиотек, но желание пробовать новое берёт верх. Уж такая у нас индустрия: перестал учиться, вмиг закостенел.
Побочным эффектом стал размер приложения. Хоть размер APK сравнимый у старой и новой версий — около четырёх мегабайт, — распаковывается новая во все двадцать пять. Отличный повод расчехлить ProGuard и почикать лишнее.

Сервер

Сервер в этот раз использую чужой. «Центр организации перевозок» на мои письма не отвечает и новые данные в старый стрим не пишет. Теперь вот и старый сервер, что они мне выделили на своей территории, повис, и перезагрузить его некому. Ну что же, пойдём тем же путём, с которого всё и начиналось: будем тянуть данные с постороннего сервера. С моральной точки зрения, считаю, я чист: ссылку на сайт даю (вот и она), да и данные вроде как муниципальные, то есть оплаченные из кармана обычного люда, так что и прятать их никто не имеет права.
Сервер у них умеет два варианта ответов: REST API и long polling (sic!). Почему long polling, а не вебсокеты, непонятно, но на ws:// клиент получает код 400 и благополучно fallback’ится на long polling. А? 2017 год на дворе, говоришь? Ничего, и так сойдёт. Судя по работе сайта задумано, что клиент должен сначала подтянуть полное стартовое состояние через API, а потом по вебсокету добирать обновления. В принципе, очень логичный и рациональный по ресурсам подход. К сожалению (или к счастью MS?), для вебсокетов используют SignalR, библиотека для Android которого обновлялась два года назад и держит кучу issue’в, поэтому я не стал пытаться разобрать тамошний протокол и просто перезапрашиваю API по таймеру. Думаю, при разумном кэшировании тем же nginx перегрузить сервер будет проблематично.

Оценки

С этим приложением вообще интересно: в очередной раз подтвердилась истина, что сделай людям безвозмездное добро, они потребуют у тебя добавки в ультимативном порядке. И наставят оценок по одной звезде, если вдруг что сломается. Порадовал особенно один «кадр»: в очередное зависание сервера оставил одну звезду и отзыв вида «два года пользовался, отличное было приложение, а теперь испортилось». Друг! Ну ведь ты пользовался им два года, ездил на всех троллейбусах и трамваях, каких бы ни захотел, а теперь одна звезда? Спасибо тебе большое, дорогой! Ещё было некоторое количество отзывов типа «сделайте мне фичу N, поставлю пять звёзд, а пока только одна». Мою реакцию на такое отлично демонстрирует картинка с Пикабу: figure

Статистика

Возвращаясь снова к старой версии. Сейчас это самое моё массовое приложение. За три года его скачали 12,5 тысяч раз, оно установлено на 3,6 тысячах активных устройств. Дневная аудитория в будни — 500 человек. Новых пользователей в день в среднем 20 человек, но бывают пики и по 100 (неизвестно почему, в новостях всплывает?). Кроме того, какие-то добрые люди нажертвовали $21,22! Снять их я всё равно не могу, Google определяет минимальную сумму в $100, так что это, конечно, скорее символ, что существуют такие люди на свете, которые понимают, что бесплатного ничего не бывает, и что бесплатные приложения пишут другие люди, которые тоже любят совсем даже небесплатные шоколадки. Впрочем, вопрос тут не в деньгах, ибо это просто само по себе приятно — чувствовать себя и свои навыки полезными для общества.

Итого

Короче, выложил. Исходники традиционно доступны всем желающим на GitHub. Дальше буду смотреть по ситуации, ибо муниципальные ребята пару месяцев назад обещали объявить конкурс на разработку собственного приложения, и моё может в таком случае стать неактуальным. Ну а пока люди пользуются, пускай лежит.

Один комментарий к “Транспорт Томска strikes back

  1. Лидия

    Михаил, хочу выразить вам огромную благодарность за ваше приложение! Спасибо! Как хорошо, что есть такие замечательные разработчики, готовые на голом энтузиазме писать весьма полезные приложения! Радуйте нас новыми разработками чаще 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Поставьте галочки правильно (как бы защита от спама):

Я бот

Я не бот