第9回 効果的に情報を提示する:連載:Windowsストア・アプリ開発入門(2/7 ページ)
Windowsストアアプリの「タイル」や「トースト通知」などの情報提示手段について学び、「ライブタイル」と「セカンダリタイル」を実装してみよう。
トースト通知
「トースト通知」は、画面の右上に短時間だけポップアップするメッセージだ(次の画像)。このとき、小さい画像も追加で表示できる。エンドユーザーがトーストをクリック/タップすると、トーストを出したアプリに切り替わる。
バックグラウンドタスク(後述)からトースト通知を送れば、フォアグラウンドでどんなアプリが動いていようと、トーストが表示される。Win 8.1アプリの没入感を阻害するという点で、トースト通知はかなり強力な機能なので、アプリでトースト通知を利用するにはマニフェストでの設定が必要になっている。また、エンドユーザーはいつでもトースト通知を禁止できる。
トースト通知は、即座に表示する以外に、表示する時刻も指定できる。トースト通知については次のドキュメントも参照してほしい。
ロック画面への表示
特定のアプリで、エンドユーザーが選択したものは、ロック画面にもバッジやライブタイルのテキストが表示される(次の画像)。
ロック画面にも表示されるアプリにするのは、ちょっと複雑だ。以下の条件を満たさねばならない。
- マニフェストでロック画面への通知を許可する
- 特定のバックグラウンドタスク(コントロールチャネル/タイマー/プッシュ通知のいずれか)をマニフェストで宣言し、実装する
- タイルテキストを表示したい場合には、マニフェストでワイドサイズ(310×150ピクセル)のロゴ画像を登録する
- エンドユーザーが「ロック画面に表示するアプリ」として選択する
以上の条件を満たしていれば、ライブタイルやバッジの通知がロック画面にも表示される。なお、エンドユーザーがロック画面でも確認したいと思う情報は、更新頻度が高いものであるはずだ。そのためにバックグラウンドタスクの実装が必須になっており、頻繁な情報更新が求められる(そのため、バックグラウンドタスクでタイマートリガー(次項)が利用できる)。
ロック画面への表示については次のドキュメントも参照してほしい。
バックグラウンドタスク
「バックグラウンドタスク」として処理を実装すると、アプリが使われていないときでも、システムがその処理を起動してくれる。
バックグラウンドタスクは、アプリのプロジェクトとは別にWindowsランタイムコンポーネントのプロジェクトを作り、その中に実装する。アプリ側では、起動時にバックグラウンドタスクをシステムに登録するコードを記述し、また、マニフェストにもバックグラウンドタスクの設定をする。
システムがバックグラウンドタスクを呼び出す条件(「トリガー」という)には、ロック画面への通知許可を必要とするものが多い。そのようなトリガーは優遇されており、定期的にバックグラウンドタスクを実行できる「タイマー」トリガーもある。また、CPU使用時間の制限が15分ごとに2秒までとなっている。
それに対して、ロック画面への通知許可を必要としないトリガーには制限が多い。「タイマー」トリガーは使えず、CPU使用時間の制限は2時間ごとに1秒までだ。なお、定期的にバックグラウンドタスクを実行できる「メンテナンス」トリガーがあるが、これが発行されるのはAC電源接続時のみに制限されている。
バックグラウンドタスクをデバッグするには、いったんアプリを実行(デバッグ実行でよい)してバックグラウンドタスクを登録する。すると、登録したバックグラウンドタスクがVS 2013の[デバッグの場所]ツールバー(第4回参照)に表示されるようになるので、以降はデバッグ実行中にそれを選べばバックグラウンドタスクが呼び出される(次の画像)。
なお、本稿ではバックグラウンドタスクの作り方は説明しないが、別途公開しているサンプルコードにはライブタイルを更新するバックグラウンドタスクが実装してあるので、参考にしていただきたい。
バックグラウンドタスクについては次のドキュメントも参照してほしい。
- MSDN:バックグラウンド タスクによるアプリのサポート
- MSDN:Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート〜
Windows ランタイム コンポーネントの開発シナリオ - MSDN:C++ および Visual Basic での Windows ランタイム コンポーネントの作成*4
*4表題の「C++」は誤訳。原文は「Creating Windows Runtime Components in C# and Visual Basic」となっている。
通知の配信方法
ライブタイル、バッジ、そしてトースト通知は、いずれも「通知」と呼ばれる(3つともWindows.UI.Notifications名前空間にある)。通知は、アプリからだけでなく、ネットワークからも提供できる。通知の配信方法を次の表にまとめておく。
配信元 | 名称 | 対象 | 説明 | |
---|---|---|---|---|
アプリ | ローカル通知 | タイル、バッジ、トースト | 通知を登録すれば直ちに反映される。 タイルは5個まで、バッジとトーストは1個だけ |
|
スケジュールされた通知 | タイル、トースト | 時刻を指定して通知を登録する。 トーストは最大5回まで同じ通知を繰り返すことができる |
||
ネットワーク | 定期的な通知 | タイル、バッジ | Webサービスに対するポーリング。 アプリからUriを指定して登録すると、あとはシステムがポーリングしてタイル/バッジに反映してくれる。 Webサービスからは、タイルやバッジのコンテンツをXMLで提供する |
|
プッシュ通知 | タイル、バッジ、トースト | 「Windowsプッシュ通知サービス」(WNS)を利用して、アプリ提供者側のサーバーから通知のコンテンツ(XMLで記述)をプッシュ配信する | ||
通知の配信方法 |
この後、ライブタイルの実装の説明の中でXMLを操作するコードが出てくる。なぜそんな面倒な仕組みになっているかというと、XMLならネットワークからも提供できるからなのだ。
通知の配信方法については次のドキュメントも参照してほしい。
Copyright© Digital Advantage Corp. All Rights Reserved.