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 も併せてご覧ください。

Comments (0)

Skip to main content