Dev Story Мой баланс. История о семейных тратах на сотовую связь

ТЕКСТ: АЛЕКСЕЙ СЕМЕНОВ.
Мысль о необходимости приложения по контролю за состоянием балансов мобильных телефонов возникла после того, как единственное существовавшее приложение подобного функционала перестало поддерживаться разработчиком и было снято с продаж в App Store осенью 2011 года. А потребность следить за состоянием счетов мобильных телефонов семьи, особенно живущих отдельно родителей, все еще оставалась. После безуспешных попыток связаться с разработчиками и не видя иной перспективы, было принято решение создать подобное приложение самостоятельно, хотя ранее опыта программирования именно в Objective-C не было.

Изначально приложение планировалось исключительно для своих нужд, поэтому сначала на счет дизайна особо не задумывался. Понравился способ подачи информации в оригинальном приложении Apple – “Акции”: а именно – сверху список со названиями компаний, а внизу детальная информация по каждой из них. Поэтому за основу была принята данная схема и практически схожий дизайн.

Начало работы

Для программирования был необходим Mac. На тот момент у меня его не было. Вариантов было два: либо покупать Macmini, либо MacBook. В пользу первого был большой экран, что весьма нелишне при работе со StoryBoard, в пользу второго – мобильность. В этот момент на форуме iphones.ru на глаза попадается пост о продаже MacBook 2008 года с небольшой проблемой, но по цене существенно ниже рынка. Еще одной проблемой было то, что продавец был в Москве, а я в Нижнем Новгороде. Но чередой счастливых случайностей бук был доставлен ко мне, проблема оказалась довольно простой и была пофикшена практически бесплатно. Маленький экран MacBooka был компенсирован подключенным к нему, уже имевшегося, внешнего ЖК-монитора 26 дюймов. Надо сказать, что процент подобных случайностей и везения в процессе создания приложения был весьма высок 🙂

При проектировании приложения хотел взять большинство положительных моментов предыдущего приложения и добавить по максимуму дополнительных функций. До прочтения гайдлайнов удивлялся – почему эти простые и нужные функции ранее не воплощались в жизнь. После же – пришлось урезать часть функционала, т.к. оно либо не укладывалось в предъявляемые, как оказалось, весьма жесткие, рамки, либо требовало исполнения части на стороннем сервере, либо вообще невозможно было реализовать в рамках существующего SDK iOS. Так пришлось отказаться от автоматического обновления баланса без запуска самого приложения, графика расходования средств, push-нотификации, добавление функционального виджета в “Центре нотификаций” и т.п. Данный факт, конечно, слегка огорчил, но унывать не стал. Основные же функции, такие как: отображение значения баланса, его последнего изменения, текущего тарифного плана, автоматического определения оператора при вводе номера, показ значения баланса на иконке – вполне вписывались в предъявляемые Apple требования.

Но вот отсутствие опыта в Objective-C слегка пугало, поэтому принял решение найти кого-нибудь поопытней для консультаций в данной области. И данный специалист, как по заказу, нашелся совершенно случайно на непрофильном форуме при обсуждении техники Apple. Разговорились, встретились, рассказал ему про свою задумку и предложил поучаствовать в создании. Еще раз прошлись по всем лицензионным соглашениям, гайдлайнам и прочим документам, регулирующим процесс размещения приложений в App Store, для верности связались с ревьюверами Apple – уточнили, нет ли ограничений на размещение подобного приложения…

Читайте также  Apple представляет iBalls

После этого накидали “на бумажке” примерный интерфейс, механизм работы и стали думать 🙂 Весьма полезным оказалось создание mock-up-а приложения. “Нащелкав” скриншотов оригинального приложения Apple “Акции” и вооружившись простейшим графическим редактором создал первые виды рабочих экранов нашего приложения. Затем используя iOS-приложение MockUp: App Interface Designer от компании Redbot Sofware Inc, прямо на своем iPhone создал собственно сам mock-up, чтобы в действии увидеть то, что должно было в итоге у нас получиться.

Процесс

Основные работы ожидались по двум фронтам: это создание собственно парсера, который будет “собирать” данные о значениях балансов и создание UI/UX (User Interface/User Experience) – собственного того, что видит пользователь приложения при работе с ней. Предполагали, что основные сложности возникнут с созданием парсера, но на удивление, первую версию удалось написать довольно быстро. Это нас, конечно, вдохновило, однако радость оказалась преждевременной. Мы конечно предполагали, что операторы периодически будут производить какие-то изменения на своих серверах, но чтобы так часто… В итоге, первый парсер одного из операторов, который стабильно работал целых три дня в режиме командной строки – перестал “приносить” баланс. Анализ работы парсера показал, что оператор всего лишь чуть чуть изменил схему авторизации – ранее они генерировали cookie и втыкали ее в hidden-поле в форме при первой загрузке страницы. А теперь каждый раз после загрузки страницы нужно было дергать еще один скрипт, который эту cookie для данной конкретной сессии освежает. Но этого оказалось достаточно, чтобы авторизация не проходила. Или был еще случай, когда оператор вставил обычный баннер в окне личного кабинета – и опять парсер по данному оператору переставал работать корректно, хотя авторизация прошла нормально. Более того, после того, как переделали парсер с учетом данного баннера, оператор через пару дней вернулся к старому виду 🙂 И такие ситуации – на неделе раза по два-три…

Но как бы то ни было, к середине мая стабильно работающий парсер был готов и оставалось только создать UI/UX, чтобы “прикрутить” к ней созданный парсер. И тут я обнаруживаю на Developer форуме iphones.ru и соответственно в App Store платное приложение со схожим функционалом. Мотивы автора приложения практически совпадают с моими – то же, приложение “для себя”, но правда платное. Для интереса, устанавливаю его приложение и до меня доходит понимание, что все же с нашей стороны “не заморачиваться на дизайне” – было не очень хорошей мыслью 🙂 Для iPhone приложение просто обязано быть красивым и приятным в использовании! Обзваниваю знакомых дизайнеров – и вновь удача – мой старый знакомый по бывшей работе как раз интересуется дизайном приложений под iPhone, хотя бы для своего порт-фолио. Однако есть проблема – человек до этого в жизни не держал iPhone в руках. Пересылаю ему наброски существующего приложения, объясняю “на пальцах” что куда должно идти, указываю на размеры стандартных элементов и даю базовые гайдлайны, затем вручаю на неделю собственный iPhone для изучения интерфейса и получаю результат в виде текущего дизайна! По сравнению с предыдущим вариантом – конечно небо и земля.

Читайте также  Apple возвращает деньги за Lion

Правда с дизайном иконки случилась заминка – никак не могли найти нужный образ практически до момента отправки приложения на рассмотрение в App Store. Очевидная мысль – сочетание мобильного телефона и монетки не вдохновляла. В итоге приняли решение использовать для первой версии нейтральный вариант, а в дальнейшем сменить на более удачный. Кстати, если среди читателей данной истории окажется дизайнер с дельным предложением по новой иконке – буду рад пообщаться.

Почитав отзывы на приложение конкурента, приходим к выводу, что оно может быть интересно не только нам самим, на него есть определенный спрос и возможно, стоит добавить способы монетизации нашего. По этой же причине решаем добавить новые функции, такие как: защита паролем, встраиваем справку о получении пароля по каждому оператору и расширяем список поддерживаемых операторов. Изначально планировали работу только с местными операторами, которыми пользуемся сами, теперь же решили охватить всю “большую тройку” Билайн, МТС, Мегафон, а также Теле2 и НСС по всей России. Друзья из Екатеринбурга попросили еще добавить их местного оператора – МОТИВ. В связи с этим пришлось переделывать парсер, но опыт уже был, поэтому процесс пошел по накатанной.

Через неделю получаем psd-шки с новым дизайном, переделываем код со старым интерфейсом и начинаем прикручивать новый UX. Благо переделывать пришлось не очень много, основные элементы управления остались на тех же местах. Небольшое огорчение – шрифты в Xcode и соответственно, впоследствии, в iPhone сильно отличаются от тех, которые есть в файлах *.psd, присланных нам дизайнером.

Приходится подбирать на месте: меняем гарнитуры и размеры шрифта, компилируем и заливаем приложение из Xcode на iPhone и сравнивая со изображениями дизайна в *.psd – добиваясь большей степени схожести. И так практически со всеми полями, где используются шрифты, а затем и общим видом. Но увы – добиться 100% соответствия, все же, не удается. А жаль – дизайн на картинках был весьма хорош… 🙂

Далее решаем вопрос по поводу монетизации. Коллега предлагает сделать две версии: полную платную и ограниченную бесплатную. Я же склоняюсь к мысли, что стоит сделать полнофункциональную бесплатную версию, но на небольшое (3-4) кол-во номеров и добавить в нее возможность апгрейда количества поддерживаемых номеров через систему встроенных покупок InAppPurchases. В результате обсуждений, принимаем мой вариант, но с добавлением рекламного баннера для бесплатной версии 🙂 Денег особых с баннера, конечно, не заработаешь, но зато по статистике показов можно судить о востребованности приложения.

Забегая вперед скажу, что в день появления приложения в App Store было около 200 показов, т.е, соответственно, и запусков приложения, во второй 520, в четвертый – более 600 и это при условии, что в эти дни не было никаких обзоров приложения. На данный момент количество показов рекламного баннера установилось в районе 700-800 в день.

Попутно на форуме iphones.ru связываюсь с Артуром Малосиевым, с вопросом – можно ли надеяться на обзор приложения на сайте. Ответ, что приложения такого рода не интересны – огорчает до глубины души 🙂 Ибо, на мой взгляд, приложение должно быть интересно пользователям, но с другой стороны понимаю и Артура – ему таких “нужных и интересных приложений” на дню штук по 100 наверное присылают 🙂 В конце концов, договариваемся, что как приложение появится в App Store, я присылаю текст для dev story, согласно требованиям на сайте и если оно подойдет, то опубликуют.

Читайте также  Дополнительная подзарядка от Apple

К середине июня была готова альфа версия приложения. Раздаем друзьям и знакомым для тестирования. Отлавливаем баги интерфейса, парсер тоже не дает заскучать – операторы не перестают нас удивлять, внедряя разные “вредности” и заставляя переделывать парсер практически каждую неделю… 🙂

Плюс добавляются проблемы с InAppPurchases – периодически отваливаются. Захожу на внутренний девелоперский форум Apple: проблема известна, наблюдается по всему миру в разных вариациях, время решения – не известно. Остается только ждать, когда пофиксят. К концу июня ситуация с ними стабилизировалась и вот наконец, к 26 июня принимаем решение отправить приложение на ревью в App Store. И примерно в это же время у Apple начинаются новые проблемы – с “незапуском” обновлений, скачанных из App Store. Не знаю, по этой ли причине, но до ревью наше приложение шло почти две недели и наконец 10 июля появилось в App Store.

Результат

Получившимся в итоге приложением доволен. Конечно, есть еще над чем работать, добавлять новые функции, фиксить баги и т.п. Но есть такое приятное чувство – чувство созидателя: не было ранее такого приложения, а теперь оно есть. И причастен к нему именно я 🙂

Некоторые из багов, кстати, проявились уже после размещения приложения в App Store: к примеру, то, что временный пароль Билайна требуется обязательно сменить на постоянный. Мы то тестировали на постоянном пароле, а мысль, что временный может не работать даже не приходила в голову. Причем наличие этой проблемы узнали от пользователя приложения – он написал нам на е-майл через встроенную систему отправки баг-репортов. Временно решили проблему – прописав эту необходимость в описании приложения, а на прошлой неделе отправили на рассмотрение ревьюверам App Store апдейт 1.0.1., где включили это уведомление в справку о пароле. ()

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

Финансовые показатели пока скромные, в среднем при 10 долларах и 250 установках в день – за две недели мы получили 137 долларов с 2874 установок.

С момента запуска приложение держится в российском ТОР-25 в категории «Утилиты», правда до общего ТОРа пока далеко.

Но, при прямых расходах в виде покупки годовой девелоперской лицензии стоимостью 99 долларов, подержанного MacBook за 8000 р и оплатой услуг дизайнера в размере 5000 рублей, думаю и это неплохо. Лицензия на данный момент уже окупилась, думаю и остальные статьи расходов скоро покроются.

Цена: Freemium [iTunes link]

Данная история опубликована в рамках рубрики Developer Story, где разработчики делятся секретами своей внутренней кухни.
Источник: iphones.ru

TRAVEL