Windows Phone 8 (WP8) で期待されている新機能のひとつは,アプリケーションの完全なマルチタスク化のサポートだ。Windows Phone 開発者プラットフォームのプログラムマネージャである Adina Trufinescu 氏は,自身の行った WP8 の地図および位置情報サービス全般に関するプレゼンテーションの中で,その改良について説明している。
WP8 では,2つの API グループで構成される Windows Phone ロケーションサービス API が開発者に公開されている。ひとつは Windows 8 のランタイム API をベースにモバイル機器としての機能を追加したもので,もうひとつのセットが音声や VoIP など電話機特有の機能に対応した Windows Phone ランタイム API だ。
これらの API を紹介した後に Trufinescu 氏は,地図と位置情報サービスを利用するアプリ作成ための一般的なヒントをいくつか提供してくれた。
- 可能ならば,位置情報要求は1回のみにせよ。
- より早く結果を得るため,キャッシュを活用せよ。
- 精度とタイムアウトの間で適切なトレードオフを見つけよ。
- WiFi はオンになっているか? そうでなければユーザに要求せよ。ビルの谷間では GPS よりも正確だからだ。
Windows Phone 8 Map コントロール
新しい WP8 Map コントロールは以下の機能を備えている。
- Nokia マッピングデータ : 世界100カ国以上
- オフラインマップ – マップのダウンロードが可能。MapDownloaderTask を使用することで,アプリケーションからダウンロードとアップデートを実行できる。
- マップコントロール – スムーズな操作,タイムラグのないオーバーレイ,回転,ピッチ
- ルート表示 – マップサービスにより,ルート計算が容易
Map コントロールは純粋な .NET コントロールではなく,.NET とネイティブコードのハイブリッド構成である。ネイティブコードの役割は "力仕事 (heavy lifting)" だ。開発チームが開発者エクスペリエンスとユーザエクスペリエンスとのトレードオフを行った結果,ここではユーザ側に多少の譲歩をすることにした。その結果,Visual Studio で WP8 画面のレイアウトを設計する時には,コントロールの位置はプレースホルダアイコンで表示されることになる。
プログラムマネージャの Mike O'Malley 氏がここでプレゼンテーションに加わり,新しいコードを実際のデモして見せた。氏が強調したのは,新しいコントロールには Bing Maps ベースのコントロールとは異なる開発者認証情報を使用する必要がある,という点だ。WP8 では,開発者は dev.windowsphone.com 認証情報を使用しなければならない。Windows Phone 7.X の Map API (Bing Maps コントロール / Bing Maps タスク) も引き続き利用可能で,7.X のアプリではこちらを使用する必要があるが,WP8 アプリではこの API は非推奨になっている。
完全なマルチタスク
マルチタスクは WP7.5 で導入されたが,位置情報と VOIP 機能を使用するアプリがサポート外であるなど限定的なものだった。不足部分は WP8 で解消されたが,いくつかの制限がある。
- XAML アプリのみ
- バックグラウンドで動作可能な位置追跡アプリはひとつのみ
- アプリ実行時のリソースアクセスが制限される
ユーザエクスペリエンスの品質を保持するため,バックグラウンドアプリは CPU 利用率が 10% に限定されている。また,カメラやマイクには (セキュリティ/プライバシー上の理由から) アクセスすることができない。
高速レジューム
WP8 では高速レジュームも導入されている。このモデルに従うアプリであれば,アプリのマニフェスト設定を変更することで,すべて高速レジュームが可能になる。この機能をサポートするアプリは,次の操作のような動作を行う。
- プライマリタイルで起動されていたアプリは,直前のエクスペリエンスをプライマリタイルで再開する。
- プライマリタイルあるいは別のディープリンク経由で起動されたアプリは,ディープリンクで新たに起動する。
- OnBackKeyPress をブロックしないこと。ユーザがアプリをクローズする手段だからだ。