Как стать автором
Обновить

Опыт разработки для WP7 или gMaps тру стори

Время на прочтение 10 мин
Количество просмотров 4.8K
Мы — Алексей Страх и Александр (часто Алексей :) ) Сороколетов — авторы gMaps, одного из самых популярных приложений для Windows Phone 7 в Европе. Занимаемся любимым делом — разработкой приложения для WP7 и хотим поделиться своим опытом и историей создания gMaps. Приходите на Windows Phone Camp 5 сентября – мы там лично все расскажем и ответим на Ваши вопросы.

Кто мы такие и чем занимаемся


Мы оба белорусы, но один из нас неожиданно для себя начал работать в России. Так как Marketplace в Беларуси закрыт, то зарегистрированы на российском рынке (но это уже другая история, как гражданину Беларуси зарегистрироваться в российском Marketplace)

Около года назад решили съездить в Москву, чтобы посмотреть презентацию Windows Phone 7. Заинтересовала возможность писать на Silverlight под телефон, а так как скилов в нем у нас достаточно, то решили незамедлительно и попробовать. Заодно хотели посмотреть, насколько телефон быстр будет и удобен (пришлось даже подписать несколько бумажек, но в конце концов поигрались). Результат был положительный, очень понравилась скорость и платформа. Мы считаем, что именно низкий порог вхождения стал катализатором такого бурного роста WP7 Marketplace. C#, Silverlight/XNA и Microsoft developers community сделали своё дело!

gMaps и почему он


А вот c чего все началось: «Искал искал, ждал ждал… не смог найти… пришлось написать самому Google Maps for WP7...».

В момент написания были платные (только) аналоги gMaps, но им чего-то не хватало и мы решили заморочиться и написать свою версию. Собственно, gMaps и есть гуглокарты для Windows Phone 7. Кроме простого отображения карт, есть следующие удобняшки:
  1. геокодинг и реверсивный геокодинг — (поиск по адресу, поиск адреса по координатам)
  2. local search — о, да, теперь найти ближайший бар или заправку еще проще. Так же можно прочитать отзывы о найденном объекте, можно проложить маршрут или позвонить.
  3. маршруты (от текущего места, a-b, пешком, на машине, на велосипеде)
  4. несколько слоев в дополнение к стандартным — пробки и публичный транспорт
  5. возможность поделится картой и местоположением — очень удобная вещь, намного лучше того, что предлагают гуглокарты даже для ондроеда
  6. Следование и поворот карты при режиме водителя (Driver mode)



Статистика, отзывы, скачивания


С первого раза, как это обычно и бывает, приложение не прошло сертификацию из-за отсутствующей настройки для отключения GPS внутри приложения. На самом деле и хорошо, что не прошло, так как gMaps были в ужасной обертке – кривые иконки, сделанный за 10 секунд splashscreen и падающее из-за любого необычного ответа гугла приложение.
Когда gMaps принял более приемлемый вид, попал в Marketplace и появилась первая статистика, то обнаружилось, что в первый день публикации приложение скачали около 3к раз. Приложение сразу же обогнало все вместе взятые наши приложения, существующие на тот момент в Marketplace и это было классно.

В течение месяца gMaps обогнал даже youtube, а на конференции DevCon 11 нам был вручен приз за самое скачиваемое приложение в Marketplace.

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

Благодаря активной коммуникации с пользователями мы нашли несколько энтузиастов. Один из них Stephane Rosi, который помогает нам разбираться с UserVoice форумом, за что ему отдельное спасибо!

Так же у нас появился дизайнер из Бразилии – Diego Eis, который сказал, что наш дизайн, мягко говоря, никуда не годится и предложил новый вариант. Как выяснилось потом, Diego довольно известный человек в Бразилии, со своей компанией по созданию сайтов, дизайна к ним. Теперь мы периодически сотрудничаем с ним, для разработки дизайна новых функциональных возможностей, таких как интеграция с Latitude, навигация Turn by Turn и так далее.

Общайтесь с пользователям – им это нравится и Вам это будет полезно!

И немного статистики. На текущий момент gMaps приближается к 300к скачиваний и уже имеет около 5к ревью со средним рейтингом 4.1. Мы используем google analytics для анализа использования приложения и некоторых его фич. В день мы имеем в среднем 17к активных пользователей (около 50к запусков приложений)


Проблемы, с которыми столкнулись


Вне всякого сомнения, проблемы были и это хорошо. Сложности закаляют.

Медленная работа MapControl


Родное приложение Maps работает на порядок быстрее, там более приятная анимация. MapControl не позволяет получить аналогичную скорость и анимацию, к сожалению. В бете Mango скорость улучшили, но beta 2 вернула её к прежнему уровню. Кроме того, расширяемость MapControl оставляет желать лучшего.

Невозможность простого добавления Offline-режима

Из-за той же расширяемости, добавить работу карт оффлайн оказалось довольно сложным делом. Эту функциональность мы отложили в пользу более востребованных.

Поворот карты

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

Ошибки с мультитачем

Ошибка «Unspecified error» из недр MapControl которая так же мистически фиксилась (убиранием Stroke у одного из Path в шаблоне пушпина с текущей позицией)
Ошибка воспрозводилась при максимальном приближении, опять же непонятно откуда, зачем и почему.

Реализовать Tap & Hold на карте оказалось непросто — перепробовали все возможные варианты — и готовые, и самописные — в итоге используем TouchPanel из XNA с допилом для поддержки пейзажного режима.

Гуглосервисы

О, хваленая апишка гугла дала нам много работы :)
Оказывается, много чего умеет гугл, и много чего не умеет его апишки. Local search гугл с прошлого ноября не поддерживает (до 2012-го еще будет работать). Places API, предлагаемый как альтернатива Local Search, не возвращает необходимых результатов.
Кроме интеграционных вопросов, после нескольких дней скачиваний возник вопрос с лимитами запросов.
Временно помогло привязывание карточки к аккаунту гугла, а также создание платной версии приложения. Гугл считает запросы по HTTP заголовку Referer, который в Windows Phone 7.0 сменить нельзя, и который зависит от идентификатора приложения.
Выкупить большой пакет запросов оказалось какой-то невозможной задачей. Представители г-корпорации предлагали пакет “все вместе, что нужно для счастья”, в том числе и много вещей, которые нам не нужны были. Просто увеличить лимит запросов на геокодинг нельзя. :(
Ждем манго, там проблему с лимитами можно будет решить другим способом.

При интеграции с Google Latitude тоже появились закорячки:
— oauth2 перестал в IE работать, хорошо что поддержка предложила временное решение
— получить локации друзей и отобразить их на карте из-за privacy нельзя. Точнее так, гугл не может предоставить третьим лицам доступ к данным, однако может отображать их на карте сам. Ищем обходные пути, хотим latitude на Windows Phone.



Обратная связь

В лучшие времена приходило 100+ писем в день, попробуйте это осознать, прочесть и обработать. Помогло то, что удалось на начальном этапе проанализировать, собрать и реализовать самые востребованные функциональности. После интеграции с uservoice стало еще легче. Анализ писем показал, что примерно такие же запросы приходят и на uservoice форум. Так же использовали автофильтры и автоответы gmail. Так же анализировался весь feedback в виде review, которых на протяжении всего времени было от 50 до 100 в день, благодаря чему завязывались интересные переписки и выяснялись интересные факты/баги/предложения.

Тестирование на устройствах

Как бы ни был хорош эмулятор, всегда нужно тестировать приложение на девайсах c windows phone 7.0 — только там можно понять скорость работы приложения, и ощущения пользователя.

Если у вас установлены Windows Phone Developer Tools for Mango Beta (1,2,2+), вы можете создавать приложения под 7.0, и тестировать их на эмуляторе. К сожалению, этот эмулятор не совсем точно воспроизводит версию wp 7.0. Например, заголовок Referer (или Accept-Encoding) можно установить в приложении для 7.0 и на эмуляторе все будет работать. На девайсе с wp 7.0 вы получите ошибку.

Usability

Мы решили не делать много настроек. Периодически, это приводит к конфузам пользователей, но мы твердо убеждены, чем меньше настроек, тем приятнее пользоваться приложением.
Как написано в одной замечательной книжке (getting real) – дополнительные настройки это лишь снятие с себя ответственности за то, что мы не знаем, что будет удобно пользователю. Все необходимые настройки вынесены в пользовательский интерфейс (например переключение metric-imperial system), которые довольно просто меняются в ходе работы с приложением.
И, думаю, золотое правило мобильного разработчика — пользуйтесь платформой, для которой пишете. Чувствуя платформу, легче создать оптимальный сценарий работы с приложением.

Монетизация


Первые два месяца жизни приложения оно было бесплатным и без рекламы. Такой подход со старта дал возможность получить большое число пользователей и фидбэка. После того, как у приложения появилась своя база пользователей, мы решили добавить рекламу, что не снизило скачивая. Однако стали появляться отзывы типа «Появилась реклама. Uninstalling…».
Не смотря на то, что приложение довольно популярно, его до сих пор не удалось нормально монетизировать. Сейчас в Marketplace находится две версии приложения: gMaps (бесплатная с рекламой) и gMaps Pro (ad free). Из бесплатной версии есть ссылка на Pro версию приложения.
Чтобы заинтересовать пользователей покупать платную версию, и в тоже время не потерять аудиторию в бесплатной мы решили сдвигать функциональные возможности в релизах приложения. То есть, мы решили не делать отдельный набор фич, доступных только в Pro версии, но, в то же время, все новые возможности попадали сначала только в платную версию, и через пару недель в бесплатную.

Чтобы не надоедать пользователю рекламой, решили сделать её скрываемой. Это, конечно, значительно уменьшило количество отображений, но зато почти не уменьшило количество пользователей. Провайдеров рекламы мы выбирали и тестировали долго. А так как для смены провайдера необходимо было менять AdControl и обновлять приложения (что было сложно объяснять пользователям, которые спрашивали, что нового есть в этой версии), было решено поставить AdRotator. С его помощью мы проводили различные эксперименты и, в итоге, вернулись к тому с чего начинали. Мы пробовали следующих вендоров рекламы:
  1. Microsoft PubCenter — оказался самым надежным в плане API и ошибок. Сначала был довольно высокий eCPM (~$3-4), который со временем спустился до ~$1 за 1к показов, что все равно было выше, чем у других провайдеров, с учетом того, что оплачивались 100% показов.
  2. AdDuplex – WP7 ориентированный провайдер рекламы, позволяет рекламировать свои приложения в обмен на отображение рекламы в вашем приложении. Так есть “Monetize” режим, в котором Вы получаете деньги за отображение рекламы. Хорошая реклама WP7 приложений с хорошим CTR. Ревенью довольно низкий (eCPM не поднимался выше $0.7 и <80% показов оплачивается), но остается довольно привлекательным для бесплатной саморекламы (либо рекламы других ваших приложений)
  3. Google AdMob – AdControl медленный и с ошибками, переодически приводил к подвисанию пользовательского интерфейса. eCMP низкий, FillRate (количество ответов с рекламой к общему числу запросов рекламы) ~20%

Начинали с PubCenter, к нему и вернулись после всех экспериментов. Единственным минусом PubCenter это невозможность снять полученный доход. Это можно сделать, только имея USA адрес, SSN/EIN и счет в USA банке, чем мы и собираемся заняться в ближайшее время, если скорость расширения PubCenter не увеличится.

Будущие обновления


Никому не секрет, что мангообновление для Bing Maps будет мощное, так что мы стараемся сделать все, чтобы не отстать после обновления и постоянно (около 2 раз в месяц) выкатываем новые версии.
  1. локализация (пользовательского интерфейса, ответов от бэкенда, карты) – уже будет доступна в следующем релизе gMaps Pro 1.11
  2. Google Latitude. Эта система — аналог 4sq, позволяет обновлять свое местоположение, делать чекины, просматривать список друзей, их позиции и статусы на карте. Latitude еще совсем недавно появился в официальном приложении google maps для ондроеда, а теперь будет и на wp7 – запланировано в следующем релизе gMaps Pro 1.11. Нужно так же сказать, что поиск приложения, синтегрированного с Latitude, для wp7 результатов не дал.
  3. Favorites (места, маршруты, интеграция с google favorites)
  4. Оффлайн карты — поддержка возможности кэшировать участки карты (города, страны). Пока из-за ограничений MapControl данная функциональность не может быть реализована простым путем и откладывается.
  5. Маршруты публичного транспорта
  6. Поддержка манго (компас, deep linking и live tiles)

Отдельное спасибо всем кто помогал нам в разработке gMaps


Diego Eis (@diegoeis) — наш дизайнер из Бразилии
Stephani Rosi (@stephanerosi)- модератор UserVoice форума из Италии
Женя Доманов (@jayminsk) – просто хороший человек, который нарисовал нам Logo
Дима Данченко (@Dan4a)
Стас Шуша (@JourneymanMW)

Планы развития и другие приложения


У нас есть несколько идей по созданию игр и утилит. Одна из идей – разработать многопользовательскую игру, участники которой смогут играть не только с телефона, но и с десктопа. Мы уже попробовали эту концепцию и создали многопользовательскую игру под названием «Naval Battle X» (классический морской бой). Мы так же мигрировали UI на Silverlight 4.0 и выпустили её как приложение Facebook. Это позволило играть с противников не только с телефона, но и Facebook. Это был первый этап проверки концепции и мы продолжим развивать эту идею.
У нас так есть другие приложения-инструменты:
  1. zTop – приложение для отслеживания позиции в Marketplace в выбранном регионе и категориях. Строит удобный график, на котором отображает позицию приложения в каждом доступном регионе. Так же строит исторические графики, которые показывают как менялась позиция со временем, что позволяет анализировать события, которые влияли на рейтинг (реклама, релиз, и т.п.). Есть десктоп версия, которая, вдобавок к перечисленным выше возможностям, позволяет смотреть Marketplace отчеты по скачиваниям и продажам.
  2. App Discounts – приложение показывающее текущие скидки в Markeplace по категориям.
  3. Naval Battle — однопользовательский морской бой (с чего все и начиналось ровно год назад).

Заключение


Прошло меньше года после старта платформы WP7, а она уже себя показала как перспективная, быстроразвивающаяся мобильная ОС. Компания Microsoft действительно сделала правильный выбор, взяв Silverlight/XNA за основу разработки под WP7, обеспечив низкий порог вхождения. Поддержка сообщества разработчиков была и остается потрясающей. Периодические конкурсы, события, вебинары, множесто онлайн документации и обучающих материалов — все это залог успеха платформы!
Что касается нас, мы рады, что занимаемся любимым делом. Получилось ровно то, чего мы хотели — мы смогли использовать наш опыт в .NET и Silverlight на новой мобильной платформе. Живое сообщество не дает скучать, постоянная обратная связь да и использование телефона каждый день рождает множество идей, которые просто реализовать.
Windows Phone 7 приносит нам и fun, и деньги. Согласитесь, редко удается совместить эти вещи :)

Ждем ваших комментариев и предложений:
Александр Сороколетов (@alexsorokoletov)
Алексей Страх (@alexeystrakh)

АП:
посмотреть приложения без Windows Phone/Zune можно тут:
Теги:
Хабы:
+46
Комментарии 71
Комментарии Комментарии 71

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн