Freigeben über


Windows Phone “Mango”: マルチタイルへのプッシュ通知

セミナーで受けた質問へのフォローアップです。

“Mango”からアプリケーションに複数のタイルを作れるようになりました。ポイントは、ShellTile.Createメソッドでタイルに指定するUriです。

// Windows Phone 側のコード
private static StandardTileData CreateTile(string Name)
{
StandardTileData initialData = new StandardTileData
{
BackgroundImage = new Uri("/Images/Blue.jpg", UriKind.Relative),
Title = Name,
BackContent = "No updates yet",
BackTitle = " ",
};
return initialData;
}

private void btnMultiTile_Click(object sender, RoutedEventArgs e)
{
StandardTileData initialData = CreateTile("Page2");
ShellTile.Create(new Uri(" /Page2.xaml?param=foo", UriKind.Relative), initialData);
StandardTileData initialData2 = CreateTile("Page3");
ShellTile.Create(new Uri(" /Page3.xaml?param=hoge", UriKind.Relative), initialData2);

}

プッシュを実行する側では、タイル通知の中で、タイルのIDとして、ShellTile.Createメソッド指定したUriを送信します。アプリケーションをスタート画面に追加した際のタイルは、Id=”MainPage.xaml” という形で、メイン画面を指定すればOKです。

// HTTP POSTで送信するデータを作る例、サーバー側のコード

var tileMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Tile Id=\"{0}\" >" +
"<wp:BackgroundImage>{1}</wp:BackgroundImage>" +
"<wp:Count>{2}</wp:Count>" +
"<wp:Title>{3}</wp:Title>" +
"<wp:BackBackgroundImage>{4}</wp:BackBackgroundImage>" +
"<wp:BackTitle>{5}</wp:BackTitle>" +
"<wp:BackContent>{6}</wp:BackContent>" +
"</wp:Tile> " +
"</wp:Notification>";

tileMessage = string.Format(tileMessage, tileId, imageUri, count, title, backImageUri, backTitle, backContent);

var messageBytes = System.Text.Encoding.UTF8.GetBytes(tileMessage);

タイル通知の概要については、How to: Send and Receive Tile Notifications for Windows Phone も併せてご覧ください。