- PVSM.RU - https://www.pvsm.ru -
Уже совсем скоро в продажу поступят устройства с Windows 8 на борту. Счастливые обладатели будут жадно качать и, наверняка, покупать приложения. Те разработчики, кто будут в магазине первыми, естественно заработают на порядок больше других.
В этой гонке у некоторых разработчиков есть значительное преимущество — у разработчиков приложений для Windows Phone. Несмотря на некоторую панику вокруг, портировать WP7-приложения оказалось очень просто.
В этой статье мы хотели бы поделиться своим опытом портирования на примере нашего приложения «Смешарики», которое было сделано совместно с лицензионным агентством «Мармелад Медиа» и Microsoft.
В статье мы расскажем о подводных камнях портирования и дадим полезные ссылки для каждого рассмотренного пункта. Если у вас нет приложений для Windows Phone — не расстраивайтесь. Можно рассматривать статью как набор ссылок по разработке для Windows 8.
Работа со «Смешариками» началась, когда лицензионное агентство «Мармелад Медиа» обратилось за редизайном нашей игры «Эрудит», о которой мы рассказывали в посте [1] двухгодичной давности.
Когда через некоторое время мы узнали, что в рамках продвижения бренда Windows Phone 7 на российском рынке совместный продукт со Смешариками был бы интересен Microsoft, мы решили совместно создать приложение для продажи мультфильмов, взяв на себя техническую сторону вопроса. Таким образом «Смешарики» появились на платформе Windows Phone, а уже скоро и на Windows 8.
[2]
«Смешарики» для Windows Phone [2]
[3]
«Смешарики» для Windows 8 [3]
Наше приложение — это магазин мультфильмов, с возможностью их покупки и закачки на устройство для будущего просмотра. Достаточно простое на вид, но с довольно обширным функционалом внутри. При портировании мы хотели сохранить как узнаваемый вид, так и непосредственно то, как пользователь работает с приложением.
Как в итоге мы это сделали и с чем пришлось столкнуться — ниже.
Наибольшие проблемы доставило именно портирование UI, так как устройства и вообще принципы работы с ними различаются значительно. Его приходится практически писать заново. Но не все так страшно, и вот почему.
Непосредственно от производителя про портирование [4]
Design guidelines [5]
В общем и целом это старый добрый xaml. Ничего не поменялось, вплоть до того, что можно копировать стили, кисти, темплейты и использовать их. Появились новые контролы, например GridView, и основная задача — правильно их расположить на странице. Тут можно руководствоваться guidelines, но этот вопрос к дизайнерам, а не к нам, разработчикам.
Локализация сделана просто шикарно. В xaml появился атрибут x:Uid, для того чтобы локализовывать отдельные свойства контролов. A чтобы локализовать изображения, нужно просто правильно оформить структуру каталога, где они лежат.
Единственная проблема, с которой мы столкнулись – нет возможности легко локализовать иконки приложения.
Достаточно подробный пример [6]
В Windows 8 все приложения должны поддерживать split-режим, в телефоне этого нет, и тут естественно нужно писать все заново.
На помощью приходит ViewState и Blend. С ними всё становится очень просто и прозрачно. Мы почему-то не сразу догадались, что split всегда и для всех разрешений занимает 320px.
Очень подробно про все что с этим связано [7]
Как использовать Blend [8]
Один из самых важных пунктов. Все время что заняло портирование, наш разработчик ругал себя, что не строго следовал принципам паттерна. В общем и целом, чем строже вы следуете шаблону, тем меньше кода вам придется переписывать. В идеальном случае вам нужно будет переписать только XAML, view и viewmodel остаются неизменными.
В Windows Phone существует простой storage, в Windows 8 в дополнение есть storage, который реплицируется на все устройства пользователя и личные папки, с которыми можно работать, нужно внимательно разграничивать, что где хранится, так как у roaming storage есть ограничение на количество информации внутри.
Мы реплицируем только настройки, а скачанные мультики и обои храним в личных папках.
Подробно про roaming [10]
Новая возможность языка, о ней есть огромное количество статей и ее можно было использовать на Windows Phone. Мы не использовали, но она нам так понравилась что мы переписали слой api. Код уменьшился значительно.
Quickstart: Calling asynchronous APIs in C# or Visual Basic [11]
В Windows 8 появилось много новых возможностей, которые полезно использовать. Но так как статья о портировании, мы раскажем о тех, которые в той или иной мере присутствовали на Windows Phone 7.
Одна из основых фич телефона, в Windows 8 она играет еще большую роль. В телефоне мы использовали ее не так активно, как могли бы. В портированной версии мы выводим на тайл новые мультики.
Тут подходы несколько отличаются. Если вы хотите поставлять обновление на широкий тайл, вам нужно заранее положить в проект широкий тайл без обновления.
В двух частях создании тайлов [12]
В телефоне можно было запустить стандартное приложения шаринга через сети, которые подключил пользователь. В Windows 8 подход несколько отличается. Во-первых, шаринг расположен на chasm bar, и приложение обязано поддерживать его. Во-вторых, шарить можно только если у вас установлено приложение, которое умеет это делать, например, твиттер.
Пример шаринга [13]
В телефоне такой возможности не было, мы использовали Robokassa и встроенный браузер. В Windows 8 эта возможность есть, пользоваться ей достаточно просто. Проблема в том, что вы можете добавить идентификаторы товаров только с апдейтом приложения. Так как у нас приложение апдейтится реже, чем появляются мультики, мы просто завели их с большим запасом.
Справедливости ради нужно отметить, если в вашем апдейте изменились только идентификаторы, то приложение заново пересматривать не будут, так что время сертификации существенно меньше.
Подробно об in-app purchases [14]
В телефоне просмотр мультиков мы запускали с помощью удобного MediaPlayerLauncher. К сожалению, на Windows 8 такой возможности нет, но тут нас выручил Media Player Framework или MediaPlayer контрол. Мы остановились на MPF.
Player Framework [15]
Единственная проблема, которую не удалось решить. Blend для VS2012 поставляется без библиотеки behaviours, это доставляет определенные неудобства, вплоть до того, что приходится самим писать некоторые классы.
Об успешности Windows 8 сейчас можно только догадываться, но факт остается фактом: если у вас уже сделано приложение для Windows Phone, то у вас есть практически готовое приложение для Windows 8.
Надеюсь эта небольшая статья поможет вам начать портирование и обеспечить себе дополнительный заработок в новом MarketPlace.
P.S.: спасибо нашему ведущему Windows Phone разработчику Тимуру garifzyanov [16] за технические подробности.
Автор: e_Legion
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows-phone/14654
Ссылки в тексте:
[1] посте: http://habrahabr.ru/company/e-Legion/blog/109091/
[2] Image: http://www.windowsphone.com/ru-RU/apps/f231edaf-15cc-448e-b250-d59215f58c95
[3] Image: http://apps.microsoft.com/webpdp/ru-RU/app/kikoriki/7e70f6e0-1120-4507-b7ea-cbd9ff77d7a3
[4] Непосредственно от производителя про портирование: http://msdn.microsoft.com/en-us/library/windows/apps/hh465136.aspx#porting_your_ui
[5] Design guidelines: http://msdn.microsoft.com/en-us/library/windows/apps/hh779072.aspx
[6] Достаточно подробный пример: http://code.msdn.microsoft.com/windowsapps/Application-resources-and-cd0c6eaa
[7] Очень подробно про все что с этим связано: http://msdn.microsoft.com/en-us/library/windows/apps/hh465371.aspx#view_state_and_window_dimensions
[8] Как использовать Blend: http://blendinsider.com/technical/designing-for-multiple-views-and-orientations-using-blend-2012-03-22/
[9] Познавательное видео: http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2264
[10] Подробно про roaming: http://blogs.msdn.com/b/windowsappdev/archive/2012/07/17/roaming-your-app-data.aspx
[11] Quickstart: Calling asynchronous APIs in C# or Visual Basic: http://msdn.microsoft.com/en-us/library/windows/apps/hh452713.aspx
[12] В двух частях создании тайлов: http://blogs.msdn.com/b/windowsappdev/archive/2012/04/16/creating-a-great-tile-experience-part-1.aspx
[13] Пример шаринга: http://code.msdn.microsoft.com/windowsapps/Sharing-Content-Source-App-d9bffd84
[14] Подробно об in-app purchases: http://msdn.microsoft.com/en-us/library/windows/apps/hh694067.aspx
[15] Player Framework: http://playerframework.codeplex.com/
[16] garifzyanov: http://habrahabr.ru/users/garifzyanov/
Нажмите здесь для печати.