Windows Phone 8.1: ностальгии разработки пост. История одного приложения +57


Приветствую, Хабр!

Пост навеян новостью о прекращении поддержки Windows 10 mobile.

Являясь одно время обладателем Nokia Lumia 925, расскажу про одну из моих поделок на поприще мобильной разработки под Windows Phone 8.1.

Приложение: «Курсы валют ЦБ РФ». Предыстория


Был конец 2014 года и происходило что-то воистину странное. Доллар рос, евро не уступал, но отпуск через несколько месяцев уже был запланирован и эту самую валюту пора было уже покупать или хотя бы следить за ней.

Не найдя ничего полезного на Windows Phone Market, решил попробовать написать что-нибудь «для себя».

В конце концов, это не так уж и сложно — сделал приложение на коленке, залил сборку на телефон и живешь себе хорошо. А если и самому понравится, то можно и загрузить на маркет, пусть и другим будет хорошо.

P.S. «Ничего полезного» подразумевало и фильтрацию приложений с ужасным количеством рекламы (ей-богу, люди, что с вами было не так?).

Версия №1


Цель: создать простое приложение с единственной возможностью — посмотреть курсы валют в приложении и создать тайл на главной странице

Чуть формальнее:

  1. Самый простой UI
  2. Таблица с ценой валюты на сегодня/завтра
  3. Возможность создать тайл на главной странице
  4. Никакой рекламы

Что получилось в итоге (к сожалению, не сохранились скриншоты первых версий тайлов):



Промежуточный сервис


Тайлы обращаются по ссылке на написанный сервис, который обращается к данным ЦБ и кэширует их на день, т.к. ЦБ не обновляет данные чаще. Т.е. приложение не работает с real-time данными, т.к. сама концепция тайлов не позволяет делать частые обновления.

Минимальная частота обновлений, насколько я помню, была в районе получаса.

Кто бы знал как много комментариев и минимальных звезд я получил за создание приложения с «неверными данными!». Добавление информации о частоте обновлений в следующих версиях ситуацию не изменили — пользователи продолжали периодически писать о плохих данных.

Кроме запросов к данным, сам сервис позволял собирать небольшую статистику использования приложения. На первых порах статистика запросов (каждый тайл = запрос) была следующей:



Версия №2


Цель: неожиданно появились комментарии со стороны пользователей с просьбой добавить график динамики изменения курсов.

Что получилось в итоге:



Из интересного: пришлось забрать и пересобрать исходники библиотеки графиков, чтобы пройти сертификацию приложения.

Технические подробности
Уже в процессе подготовки к публикации приложения выяснилось, с помощью Windows App Certification Kit, что внутри компонента есть некие вызовы kernel32.dll. В частности, были две ошибки:
API CreateFileMappingA in kernel32.dll is not supported for this application type. Sparrow.Chart.WinRT.45.dll calls this API.
API MapViewOfFile in kernel32.dll is not supported for this application type. Sparrow.Chart.WinRT.45.dll calls this API.
Оказалось (после гугления и перебора исходников), что в компоненте, написанном для Windows phone присутствует директива #if WPF. Кусок кода не использовался, но при это ломал тест сертификации. Закомментировал директивы, скомпилировал и, вуаля, все тесты прошли. Было очень неприятно узнать о подобной ошибке в самом конце выпуска обновления. Но повезло.

Немного статистики запросов к июню:



Написанный сервис выдал примерно следующую информацию по использованию тайлов:

  • 125 пользователей с 0 тайлами — пользуются главным образом приложением напрямую
  • 260 пользователей с 1 тайлом
  • 175 пользователей с 2 тайлом
  • 61 пользователь с 3 тайлом
  • 7 пользователей с 4 тайлами
  • 1 пользователь с 6 тайлами

Версия №3


Цель: вдохновленный просьбами пользователей (человека два попросило, но и этого достаточно), решил что новому дизайну быть.

Что получилось в итоге:




Статистика:



Числа не заоблачные, но для меня очень приятные. Медленно, но верно количество пользователей увеличивалось.

Версия №4, заключительная


Цель: в этот раз был вдохновлен новым дизайном приложения для ВКонтакте. Да и на MVVM надо было переписать наконец. Да и курсы нефти и металлов добавить.

Что получилось в итоге:





Видно, что на этот момент захотелось немного заработать на добровольном донате. Заработать удалось что-то около 800-900 рублей, вывести которые так и не удалось. Спасибо Microsoft за минимальный размер вывода в 25 долларов.

Заключительная статистика:



В заключении


Впоследствии был написан еще секундомер-таймер, но о нем ничего интересного. Он просто работает с учетом всех ограничений системы, коих оказалось немало.

Запал же по разработке стал пропадать, когда стало появляться всё больше комментариев от пользователей на Windows Phone 10 с просьбами поправить размеры тайлов или специфичные проблемы новой системы. В то же время как мой девайс категорично не включался в список на обновление платформы с Windows Phone 8.1. Желания выкладывать наобум, тестируя только в эмуляторе, особенно не было.

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

На такой ноте и закончим ностальгии разработки пост. Спасибо за внимание.




К сожалению, не доступен сервер mySQL