Neri's Blog

.NETに関するBlogにしたいと思ってます・・・が どうなることやら

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Windows Phone 7 Training Kit の プッシュ通知サンプルでハマる・・・

8 月 21 日に新宿 OST にてモバイルプログラミング生放送勉強会が開催されました。

私もトリのセッションで Windows Phone 7 と プッシュ通知についてお話ししました。

その中で Training Kit のプッシュ通知サンプルを紹介したのですが、Beta 対応にも関わらず、対応されきっていないみたいで数時間はまりました。

Tile と Toast メッセジーを送ると・・・

Notification

残念な結果に

error

それぞれ Tile / Toast で使用するメッセージの仕様が変更されたためエラーが発生していた模様ですので、こちらを直しましょう。

NotifcationSenderUtility.cs

solution

 

private static byte[] prepareToastPayload(string text1, string text2)
{
    MemoryStream stream = new MemoryStream();

    // ここからいらね
    //byte[] prefix = Encoding.UTF8.GetBytes("Content-Type: text/xml\r\nX-WindowsPhone-Target: toast\r\n\r\n");
    //stream.Write(prefix, 0, prefix.Length);
    ////// ここまでいらね

    XmlWriterSettings settings = new XmlWriterSettings() { Indent = true, Encoding = Encoding.UTF8 };
    XmlWriter writer = XmlTextWriter.Create(stream, settings);
    writer.WriteStartDocument();
    writer.WriteStartElement("wp", "Notification", "WPNotification");
    writer.WriteStartElement("wp", "Toast", "WPNotification");
    writer.WriteStartElement("wp", "Text1", "WPNotification");
    writer.WriteValue(text1);
    writer.WriteEndElement();
    writer.WriteStartElement("wp", "Text2", "WPNotification");
    writer.WriteValue(text2);
    writer.WriteEndElement();
    writer.WriteEndElement();
    writer.WriteEndDocument();
    writer.Close();

    byte[] payload = stream.ToArray();
    return payload;
}

private static byte[] prepareTilePayload(string tokenId, string backgroundImageUri, int count, string title)
{
    MemoryStream stream = new MemoryStream();

    // ここからいらね
    //byte[] prefix = Encoding.UTF8.GetBytes("Content-Type: text/xml\r\nX-WindowsPhone-Target: token\r\n\r\n");
    //stream.Write(prefix, 0, prefix.Length);
    //// ここまでいらね

    XmlWriterSettings settings = new XmlWriterSettings() { Indent = true, Encoding = Encoding.UTF8 };
    XmlWriter writer = XmlTextWriter.Create(stream, settings);
    writer.WriteStartDocument();
    writer.WriteStartElement("wp", "Notification", "WPNotification");
    writer.WriteStartElement("wp", "Tile", "WPNotification");
    writer.WriteStartElement("wp", "BackgroundImage", "WPNotification");
    writer.WriteValue(backgroundImageUri);
    writer.WriteEndElement();
    writer.WriteStartElement("wp", "Count", "WPNotification");
    writer.WriteValue(count.ToString());
    writer.WriteEndElement();
    writer.WriteStartElement("wp", "Title", "WPNotification");
    writer.WriteValue(title);
    writer.WriteEndElement();
    writer.WriteEndDocument();
    writer.Close();

    byte[] payload = stream.ToArray();
    return payload;
}

結果はこんな感じです。
Tile と Toast

Tile Toast

しかし、奥深い・・・

セッションスライド

http://blogs.jp.infragistics.com/blogs/dikehara/archive/2010/08/23/windows-phone-7-training-kit.aspx のクロスポスト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://nemuneri.blog59.fc2.com/tb.php/43-ad30ff2d
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。