【ストアアプリ】トースト通知の基本

公開日: : 最終更新日:2015/10/20 Blog, Microsoft ,

Windowsストアアプリ開発での基本。
トースト通知について投稿します。

Package.appxmanifestの[アプリケーション]->[トースト対応]を[はい]にする
to-suto_taiou

最小限の通知方法は以下

//トーストのXMLテンプレートを取得
ToastTemplateType template = ToastTemplateType.ToastImageAndText01;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(template);

//指定したXMLコンテンツに基づいてトースト通知を作成する
var toast = new ToastNotification(toastXml);

//トースト通知を送信する
ToastNotificationManager.CreateToastNotifier().Show(toast);

トーストのテンプレートは以下を参考にします。
https://msdn.microsoft.com/ja-jp/library/windows/apps/windows.ui.notifications.toasttemplatetype.aspx?f=255&MSPPError=-2147217396

他には以下のようなことが出来ます。

//通知のテキストコンテンツを指定する
//DOMを使ってノードにアクセスする
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode(txtHoge.Text));

//通知の画像を指定する
XmlNodeList toastImageAttributes = toastXml.GetElementsByTagName("image");
((XmlElement)toastImageAttributes[0]).SetAttribute("src", "ms-appx:///assets/nezumi.png");

//トーストの期間を指定する
IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
((XmlElement)toastNode).SetAttribute("duration", "long");

//トーストのオーディオを指定する
XmlElement audio = toastXml.CreateElement("audio");
audio.SetAttribute("src", "ms-winsoundevent:Notification.Mail");
toastNode.AppendChild(audio);

//トースト通知からのアクティブ化動作を定義
//Navigateされてきた時のe.Parameterに格納されてくる
((XmlElement)toastNode).SetAttribute("launch", "hogeClicked");

※トーストのオーディオオプションカタログは以下を参考に。
https://msdn.microsoft.com/ja-jp/library/windows/apps/hh761492.aspx

トーストクリックからのアクティブ化時はOnLaunchedで引数が取得できます。
ストアアプリテンプレートでは既定で以下のようにNavigateされているはずなので、
[charp]
rootFrame.Navigate(typeof(MainPage), e.Arguments);
[/charp]

以下のようにしてやれば取得できます。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    //ここではトースト通知からのアクティブ化の場合を想定
    if(e.Parameter != null && !string.IsNullOrWhiteSpace(e.Parameter.ToString()))
    {
        txtHoge.Text = e.Parameter.ToString();
    }
}

GitHubにアップしました。
https://github.com/Tak1wa/ToastExample

関連記事

no image

属性を使って、列挙型の列挙子を並び替え、フィルタリングする

メモだよ

記事を読む

SIPSorceryにて、「型 ‘log4net.ILog’ が参照されていないアセンブリで定義されています。」

ある時、SIPクライアントの開発を行っていた。 SIPクライアントライブラリの選定にあたって S

記事を読む

no image

【XAML/VB.NET】XAMLファイルを帳票フォーマットとして使用する

掲題について。結論としてはFixedPageをルートとするXAMLファイルを XamlReader

記事を読む

ストアアプリ、UWPアプリをデスクトップアプリケーションから起動する

SendKeyなどを使って無理やり検索ウインドウへ指定した、起動方法しか知らなかったのでメモ(とんで

記事を読む

Xamarin.FormsのTabbedPageでバッジを表示する

iOSのタブバーはNative側でバッジ機能があるのだが、Androidにはそもそもバッジが無いらし

記事を読む

Flowで毎月の定期タスク設定

Flow を使い始めてみた。 Requrrenceで時間をトリガーにすることが出来るがSecond

記事を読む

【WPF/XAML】セパレータを縦にする

<Window x:Class="VerticalSeparator&q

記事を読む

no image

Raspberry Pi 3 Model B 各OS、動画プレイヤーでの再生比較

ベンチマークではなく、ただ感想をメモしただけ。 Windows 10 IoT Core C#

記事を読む

Visual Studio から Android SDK Managerが起動できない

Android SDKやエミュレーターイメージのアップデートを行いたい場合にAndroid SDK

記事を読む

no image

【WPF/XAML】Visibility変更時のアニメーション切替

ストーリーボードを使わずに、Visibility変更でアニメーションを発生させたかった。 やってる

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑