Портирование Windows Phone приложений на Windows 8

в 6:05, , рубрики: e-legion, microsoft, mobile development, Windows 8, windows phone, Блог компании e-Legion Ltd., портирование, разработка под windows phone, метки: , , , ,

Уже совсем скоро в продажу поступят устройства с Windows 8 на борту. Счастливые обладатели будут жадно качать и, наверняка, покупать приложения. Те разработчики, кто будут в магазине первыми, естественно заработают на порядок больше других.

В этой гонке у некоторых разработчиков есть значительное преимущество — у разработчиков приложений для Windows Phone. Несмотря на некоторую панику вокруг, портировать WP7-приложения оказалось очень просто.

image

В этой статье мы хотели бы поделиться своим опытом портирования на примере нашего приложения «Смешарики», которое было сделано совместно с лицензионным агентством «Мармелад Медиа» и Microsoft.

В статье мы расскажем о подводных камнях портирования и дадим полезные ссылки для каждого рассмотренного пункта. Если у вас нет приложений для Windows Phone — не расстраивайтесь. Можно рассматривать статью как набор ссылок по разработке для Windows 8.

История

Работа со «Смешариками» началась, когда лицензионное агентство «Мармелад Медиа» обратилось за редизайном нашей игры «Эрудит», о которой мы рассказывали в посте двухгодичной давности.

Когда через некоторое время мы узнали, что в рамках продвижения бренда Windows Phone 7 на российском рынке совместный продукт со Смешариками был бы интересен Microsoft, мы решили совместно создать приложение для продажи мультфильмов, взяв на себя техническую сторону вопроса. Таким образом «Смешарики» появились на платформе Windows Phone, а уже скоро и на Windows 8.

image
«Смешарики» для Windows Phone

Портирование Windows Phone приложений на Windows 8
«Смешарики» для Windows 8

Наше приложение — это магазин мультфильмов, с возможностью их покупки и закачки на устройство для будущего просмотра. Достаточно простое на вид, но с довольно обширным функционалом внутри. При портировании мы хотели сохранить как узнаваемый вид, так и непосредственно то, как пользователь работает с приложением.

Как в итоге мы это сделали и с чем пришлось столкнуться — ниже.

User Interface

Наибольшие проблемы доставило именно портирование UI, так как устройства и вообще принципы работы с ними различаются значительно. Его приходится практически писать заново. Но не все так страшно, и вот почему.

Непосредственно от производителя про портирование
Design guidelines

Xaml

В общем и целом это старый добрый xaml. Ничего не поменялось, вплоть до того, что можно копировать стили, кисти, темплейты и использовать их. Появились новые контролы, например GridView, и основная задача — правильно их расположить на странице. Тут можно руководствоваться guidelines, но этот вопрос к дизайнерам, а не к нам, разработчикам.

Localization

Локализация сделана просто шикарно. В xaml появился атрибут x:Uid, для того чтобы локализовывать отдельные свойства контролов. A чтобы локализовать изображения, нужно просто правильно оформить структуру каталога, где они лежат.

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

Достаточно подробный пример

viewstate and window dimensions

В Windows 8 все приложения должны поддерживать split-режим, в телефоне этого нет, и тут естественно нужно писать все заново.

На помощью приходит ViewState и Blend. С ними всё становится очень просто и прозрачно. Мы почему-то не сразу догадались, что split всегда и для всех разрешений занимает 320px.

Очень подробно про все что с этим связано
Как использовать Blend

Код

MVVM

Один из самых важных пунктов. Все время что заняло портирование, наш разработчик ругал себя, что не строго следовал принципам паттерна. В общем и целом, чем строже вы следуете шаблону, тем меньше кода вам придется переписывать. В идеальном случае вам нужно будет переписать только XAML, view и viewmodel остаются неизменными.

Познавательное видео

Storage(roaming) и личные папки

В Windows Phone существует простой storage, в Windows 8 в дополнение есть storage, который реплицируется на все устройства пользователя и личные папки, с которыми можно работать, нужно внимательно разграничивать, что где хранится, так как у roaming storage есть ограничение на количество информации внутри.

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

Подробно про roaming

Async/await

Новая возможность языка, о ней есть огромное количество статей и ее можно было использовать на Windows Phone. Мы не использовали, но она нам так понравилась что мы переписали слой api. Код уменьшился значительно.

Quickstart: Calling asynchronous APIs in C# or Visual Basic

Спецвозможности

В Windows 8 появилось много новых возможностей, которые полезно использовать. Но так как статья о портировании, мы раскажем о тех, которые в той или иной мере присутствовали на Windows Phone 7.

Live tiles

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

Тут подходы несколько отличаются. Если вы хотите поставлять обновление на широкий тайл, вам нужно заранее положить в проект широкий тайл без обновления.

В двух частях создании тайлов

Контракт шаринга

В телефоне можно было запустить стандартное приложения шаринга через сети, которые подключил пользователь. В Windows 8 подход несколько отличается. Во-первых, шаринг расположен на chasm bar, и приложение обязано поддерживать его. Во-вторых, шарить можно только если у вас установлено приложение, которое умеет это делать, например, твиттер.

Пример шаринга

In app purchase

В телефоне такой возможности не было, мы использовали Robokassa и встроенный браузер. В Windows 8 эта возможность есть, пользоваться ей достаточно просто. Проблема в том, что вы можете добавить идентификаторы товаров только с апдейтом приложения. Так как у нас приложение апдейтится реже, чем появляются мультики, мы просто завели их с большим запасом.

Справедливости ради нужно отметить, если в вашем апдейте изменились только идентификаторы, то приложение заново пересматривать не будут, так что время сертификации существенно меньше.

Подробно об in-app purchases

Проблемы

Media Player

В телефоне просмотр мультиков мы запускали с помощью удобного MediaPlayerLauncher. К сожалению, на Windows 8 такой возможности нет, но тут нас выручил Media Player Framework или MediaPlayer контрол. Мы остановились на MPF.

Player Framework

Behaviours

Единственная проблема, которую не удалось решить. Blend для VS2012 поставляется без библиотеки behaviours, это доставляет определенные неудобства, вплоть до того, что приходится самим писать некоторые классы.

В заключение

Об успешности Windows 8 сейчас можно только догадываться, но факт остается фактом: если у вас уже сделано приложение для Windows Phone, то у вас есть практически готовое приложение для Windows 8.

Надеюсь эта небольшая статья поможет вам начать портирование и обеспечить себе дополнительный заработок в новом MarketPlace.

P.S.: спасибо нашему ведущему Windows Phone разработчику Тимуру garifzyanov за технические подробности.

Автор: e_Legion

Поделиться

* - обязательные к заполнению поля