ScheduledTileNotification の 注意点

※この記事は、「WindowsPhone Advvent Calender 2014」の1日目の記事です。

 先日のめとべやにて、WP8.1アプリ開発にけるいくつかの新機能を紹介させていただきました。そのなかでも「ScheduledTileNotification」は、1分おきにタイルを更新するといったことが可能となる、とても便利なものです。
 しかし少し気を付けねばならないこともあります。

・おさらい

 ScheduledTileNotification の使い方については、さほど難しくありません。
  ①表示させたいタイルのテンプレートを用意する(複数)
  ②通知キューの中に、①を登録する
 と、基本的にはこれだけです。次にコード例を示します。

//①
//セットしたいタイルのテンプレを編集する( NotificationsExtensionsを使用すると楽チン)
var MyWideTileXML1 = NotificationsExtensions.TileContent.TileContentFactory.
                                  CreateTileWide310x150Image();     //ワイドタイル
MyWideTileXML1.Image.Src = “進捗01.png”;

//②
using Windows.UI.Notifications;
//通知キューを有効化する
var TileMaster = TileUpdateManager.CreateTileUpdaterForApplication();
TileMaster.EnableNotificationQueue(true);

//スケジュールされたタイル通知を作成する(10秒間隔)
var StartTime = DateTimeOffset.Now;
var MyTileNotification1 = new ScheduledTileNotification(

                   MyWideTileXML1.GetXml(), StartTime .AddSeconds(10)
                   );

//タイルの有効期間を設定
MyTileNotification1.ExpirationTime = StartTime.AddSeconds(20);

//タイル通知をキューの中に、シュゥゥゥゥゥゥゥゥゥト!
//超!エキサイティング!!
TileMaster.AddToSchedule(MyTileNotification1);

 大体、こんな感じで使えます。
 

・更新間隔に関する注意

 さて、上記にて記載している中の「//スケジュールされたタイル通知を作成する(10秒間隔)」といている部分。ここの10秒という間隔について、当然ながら秒数は好きなように変更してかまいません。ここを1分間隔にすれば、時計タイルを作成できるようになる、ということです。
 しかし、ここの間隔、あまり短くしすぎるとどうもうまく更新されないことがあります
 例えば、以下のコードのように5秒間隔で3つ更新するようにテンプレートをセットしたとします。

var StartTime = DateTimeOffset.Now;
var MyTileNotification1 = new ScheduledTileNotification(MyWideTileXML1.GetXml(), StartTime.AddSeconds(5));
var MyTileNotification2 = new ScheduledTileNotification(MyWideTileXML2.GetXml(), StartTime.AddSeconds(10));
var MyTileNotification3 = new ScheduledTileNotification(MyWideTileXML3.GetXml(), StartTime.AddSeconds(15));

//タイルの有効期間を設定
MyTileNotification1.ExpirationTime = StartTime.AddSeconds(10);
MyTileNotification2.ExpirationTime = StartTime.AddSeconds(15);

//タイル通知をキューの中に
TileMaster.AddToSchedule(MyTileNotification1);
TileMaster.AddToSchedule(MyTileNotification2);
TileMaster.AddToSchedule(MyTileNotification3);

 これをエミュレータで実行してみると……最初のタイルの画像が出た後、2番目の画像がうまく表示されず、15秒後に3番目の画像が出てきて終わり、となってしまいます。(※ただし、稀にうまく3枚表示されることがあります)
 エミュレータ等で簡単に確認してみたところでは、この部分は「5秒以下の間隔にするとうまく動作しない」ことがあるようです。6秒間隔にしてみたらうまくいきましたが、多少の余裕を見て、10秒程度の間隔は取っておいたほうがよさそうです。

 このクラスを知ったときに、「あれ、これ1秒間隔更新にすれば面白いことできそうじゃね?」と妄想したりもしましたが、どうやら現実はそんなに甘くありませんでした。うーん、残念!
 しかし、それでも10秒間隔程度ならばうまく動作してくれるので、何か面白いことが出来ないかなーと考えてみたいところですね。

 そんなわけで、1日目の記事は以上となります。
 あまり中身の無い話でしたが、少しでも皆さんの開発の役に立てばいいな、と思ってます。それでは
2日目の kazuakixさん 、よろしくお願いします。

ScheduledTileNotification の 注意点」への2件のフィードバック

  1. ピンバック: Windows Phone Advent Calendar 2014 勝手に中間解説 - 高橋 忍のブログ - Site Home - MSDN Blogs

  2. ピンバック: Windows Phone Advent Calendar 2014 カレンダーリンク - 高橋 忍のブログ - Site Home - MSDN Blogs

コメントを残す