このレースでは、一部の開発者には大きな利点があります-Windows Phoneのアプリケーション開発者。 多少のパニックにもかかわらず、WP7アプリケーションの移植は非常に簡単であることが判明しました。
この記事では、 Marmelad MediaおよびMicrosoftライセンス代理店と共同で作成したSmesharikiアプリケーションの例と移植の経験を共有したいと思います。
この記事では、移植の落とし穴について説明し、考慮される各項目の有用なリンクを提供します。 Windows Phone用のアプリケーションがない場合でも心配しないでください。 この記事は、Windows 8の一連の開発リンクと考えることができます。
物語
Smesharikiとの作業は、Marmalade Mediaライセンス代理店がScrabbleゲームの再設計を要求したときに始まりました。これは2年前の投稿で話しました。
しばらくして、Microsoftがロシア市場でのWindows Phone 7ブランドのプロモーションの一環としてSmesharikiとの共同製品に興味を持つことに気づいたとき、私たちは共同で漫画を販売するためのアプリケーションを作成し、問題の技術的な側面を引き受けることにしました。 したがって、SmesharikiはWindows Phoneプラットフォームに登場し、すぐにWindows 8にも登場しました。
Windows PhoneのSmeshariki
Windows 8用のSmeshariki
私たちのアプリケーションは漫画ストアであり、将来の視聴のために購入してデバイスにダウンロードすることができます。 外観は非常にシンプルですが、内部には非常に広範な機能があります。 移植時には、認識可能なビューと、ユーザーがアプリケーションをどのように操作するかを直接保存したいと考えました。
その結果、私たちはそれをしました。
ユーザーインターフェース
デバイスとそれらを使用する一般的な原則が大きく異なるため、ほとんどの問題を引き起こしたのはUIの移植でした。 実際に書き換える必要があります。 しかし、すべてがそんなに怖いわけではありません。それが理由です。
移植に関するメーカーから直接
設計ガイドライン
Xaml
一般的に、これは古き良きxamlです。 スタイル、ブラシ、テンプレートをコピーして使用できる限り、変更はありません。 GridViewなどの新しいコントロールがあり、主なタスクはそれらをページに正しく配置することです。 ここでガイドラインに従うことができますが、この質問はデザイナ向けであり、デベロッパ向けではありません。
ローカリゼーション
ローカライズは素晴らしいです。 x:Uid属性は、コントロールの個々のプロパティをローカライズするためにxamlに登場しました。 また、画像をローカライズするには、画像が配置されているディレクトリ構造を適切に構造化する必要があります。
発生した唯一の問題は、アプリケーションアイコンを簡単にローカライズできないことです。
かなり詳細な例
ビューステートとウィンドウの寸法
Windows 8では、すべてのアプリケーションが分割モードをサポートする必要があります。これは電話ではなく、ここでは当然すべてをもう一度書く必要があります。
ヘルプはViewStateとBlendに付属しています 。 それらにより、すべてが非常にシンプルで透明になります。 何らかの理由で、常に分割し、すべての解像度で320pxを要することをすぐには認識しませんでした。
これに関連するすべてについて非常に詳細
ブレンドの使用方法
コード
MVVM
最も重要なポイントの1つ。 ポーティングにかかる間ずっと、開発者はパターンの原則を厳密には守っていないとfollowりました。 一般的に、パターンを厳しくするほど、書き換えるコードが少なくなります。 理想的には、XAMLを書き換えるだけで、ビューとビューモデルは変更されないままです。
認知ビデオ
ストレージ(ローミング)および個人用フォルダー
Windows Phoneにはシンプルなストレージがあり、Windows 8にはストレージがあり、作業可能なすべてのユーザーデバイスと個人用フォルダーにレプリケートされます。ローミングストレージには内部の情報量に制限があるため、格納されているものを慎重に区別する必要があります。
設定のみを複製し、ダウンロードした漫画と壁紙を個人用フォルダーに保存します。
ローミングの詳細
非同期/待機
この言語の新機能であり、膨大な数の記事があり、Windows Phoneで使用できます。 使用しませんでしたが、非常に気に入ったため、APIレイヤーを書き直しました。 コードは大幅に減少しました。
クイックスタート:C#またはVisual Basicで非同期APIを呼び出す
特別な機会
Windows 8には便利な多くの新機能があります。 ただし、この記事は移植に関するものなので、Windows Phone 7にある程度存在するものについて説明します。
ライブタイル
電話の主な機能の1つであるWindows 8では、さらに大きな役割を果たします。 電話では、できる限り積極的に使用しませんでした。 移植版では、新しい漫画をタイルに表示します。
ここでは、アプローチが多少異なります。 ワイドタイルで更新を配信する場合は、事前に更新せずにプロジェクトにワイドタイルを配置する必要があります。
2つのパートで、タイルを作成する
共有契約
電話では、ユーザーが接続したネットワークを介して標準共有アプリケーションを起動できました。 Windows 8では、アプローチは少し異なります。 まず、共有はチャームバーにあり、アプリケーションはそれをサポートする必要があります。 第二に、これを行うことができるアプリケーション、たとえばtwitterをインストールしている場合にのみ、手探りすることができます。
共有の例
アプリ購入中
電話にはそのような可能性はありませんでした。ロボカッサと内蔵ブラウザを使用しました。 Windows 8では、この機能を使用できます。使用方法は非常に簡単です。 問題は、アプリケーションの更新時にのみ製品識別子を追加できることです。 アプリケーションの更新は漫画が表示されるよりも少ないため、大きなマージンで開始しました。
公平に言うと、更新で識別子のみが変更された場合、アプリケーションは再レビューされないため、認証時間は大幅に短縮されることに注意してください。
アプリ内購入の詳細
問題
メディアプレーヤー
電話で、便利なMediaPlayerLauncherを使用して漫画の視聴を開始しました。 残念ながら、Windows 8ではそのような可能性はありませんが、ここではMedia Player FrameworkまたはMediaPlayerコントロールによって保存されました。 MPFに決めました。
プレイヤーフレームワーク
行動
解決できなかった唯一の問題。 Blend for VS2012にはビヘイビアライブラリが付属していないため、クラスを自分で作成する必要がある場合でも、多少の不便が生じます。
結論として
現在、Windows 8の成功について推測することはできますが、事実は残ります。WindowsPhone用のアプリケーションを既にお持ちの場合は、 Windows 8用のほとんど準備ができたアプリケーションがあります 。
この短い記事が、新しいMarketPlaceでの移植の開始と追加収入の確保に役立つことを願っています。
PS:技術的な詳細については、当社の主要なWindows Phone開発者Timur garifzyanovに感謝します。