リマインダーを利用する


今回はWindowsPhone7に用意されているリマインダーについてご紹介します。

リマインダーはユーザが指定した時刻にダイアログを表示しユーザに知らせる仕組みです。
アラームと同等の機能となりますがリマインダーには再通知の機能があります。

リマインダー機能を使うにはReminderクラスを使います。

リマインダーを使うには以下のことが必要となります。

  • リマインダーの設定
  • リマインダーのイベントを発生させる設定

詳しい内容は続きを御覧ください。

リマインダーの設定

リマインダーは条件が合えばダイアログを表示します。
そこでリマインダーで設定できる項目は下記のとおりになります。

[table “256” not found /]

繰り返し設定RecurrenceTypeは下記の設定が可能です。

[table “257” not found /]

例えばTitleを「ReminderApp リマインダー」、Contentを「30秒立ちました」、30秒後~1分間の間はこのリマインダーを有効、毎月繰り返す設定にする場合は下記のようになります。

 var reminder = new Reminder("reminder");
 reminder.Title = "ReminderApp リマインダー";
 reminder.Content = "30秒立ちました";
 reminder.BeginTime = DateTime.Now.AddSeconds(30);
 reminder.ExpirationTime = DateTime.Now.AddMinutes(1);
 reminder.RecurrenceType = RecurrenceInterval.Monthly;

これでReminederの設定は完了です。

リマインダーのイベントを発生させる設定

リマインダーの設定は完了しましたがOSに対して実行するように伝えていません。
そこでアラームで用いられたScheduledActionServiceを利用することによってOSにアクションを登録して実行してもらいます。

実際にリマインダーのアクションを追加する処理を先ほどのソースコードに追加すると下記のようになります。

 if (ScheduledActionService.Find("reminder") != null)
 {
    ScheduledActionService.Remove("reminder"); // すでに登録済みのreminderを登録削除
 }
 var reminder = new Reminder("reminder");
 reminder.Title = "ReminderApp リマインダー";
 reminder.Content = "30秒立ちました";
 reminder.BeginTime = DateTime.Now.AddSeconds(30);
 reminder.ExpirationTime = DateTime.Now.AddMinutes(1);
 reminder.RecurrenceType = RecurrenceInterval.Monthly;

 ScheduledActionService.Add(reminder); // Action登録

これを実行すると30秒後に下記のように表示されます。

1分後にはオブジェクトが無効になるのでこのリマインダーは破棄されてしまいます。

関連する記事: