[Win10應用開發] 如何使用Windows通知

消息通知,是一個應用中必不可少的組成部分。Win10下提供了多種消息通知機制,Toast通知只是其中一種。這篇博文和你們分享一下,如何使用Toast通知。c#

上圖是一個基本的Toast通知,那咱們該如何使用它呢?首先你們要知道,Toast 通知是由XML構建的。在Toast通知中提供消息內容及操做(好比回覆,取消等)都是在XML中定義。windows

<toast>
    <visual>
        <binding template='ToastGeneric'>
            <text>Hello World!</text>
            <text>This is th 3 Example!</text>
            <image src='ms-appx://Assets/Images/photo.jpg' placement='appLogoOverride'/>
        </binding>
    </visual>
    <actions>
      <input id='reply' type='text' placeHolderContent='placeHolderContent'/>
      <action content='reply' arguments='reply' hint-inputId='reply'/>
    </actions>
    <audio src='ms-winsoundevent:Notification.Default'/>
</toast>

定義完成Toast通知結構後,接着咱們使用 ToastNotification 與 ToastNotificationManager 類完成彈出通知的操做。app

ToastNotification notification = new ToastNotification(xml);
ToastNotificationManager.CreateToastNotifier().Show(notification);

Toast 通知使用場景

Toast通知默認支持四種場景,可經過設置 <toast\> 元素下的 scenario 屬性。ide

  • default
  • reminder : 通知會持續顯示在屏幕上
  • alarm : 通知會持續顯示在屏幕上而且循環播放聲音
  • inComingCall: 在Moblie下全屏顯示等

屬性 scenario 默認爲 default , 每一種場景在UI表現與顯示模式有所不一樣。工具

使用 XML 構建自定義Toast通知

從上述的XML結構中,能夠看出Toast通知結構組成:oop

<toast>
    <visual/>
    <actions/>
    <audio/>
</toast>

下面咱們列出一些必要的元素及其必需屬性學習

visual 元素

做用:用於定義Toast通知上展現內容,好比文本或圖片。code

元素 <binding\>

  • templateToastGeneric 是屬性 template 的惟一值。

元素 <text\>

元素 <image\>

  • src : 數據源,支持 http:// | https:// | ms-appx:/// | ms-appdata:///local/ | file:///
  • placement : 圖片的顯示位置 inline | appLogoOverride (正文 | 替換App圖標,Toast通知左上角圖標)
  • hint-crop : 圖片的剪裁 none | circle (默認 | 圓形切割)

<toast>
    <visual>
        <binding template='ToastGeneric'>
            <text>Hello World!</text>
            <text>This is th 2 Example!</text>
            <image src='ms-appx:///Assets/Images/photo.jpg' placement='appLogoOverride' hint-crop='circle'/>
            <image src='ms-appx:///Assets/Images/demo.jpg' placement='inline'/>
        </binding>
    </visual>
</toast>

actions 元素

做用:用於定義Toast通知上提供的操做,好比上圖中的回覆操做。xml

元素 <input\>

  • id : 元素的 id
  • type: text | selection (文本框 | 選擇框)

元素 <selection\>

  • id : 元素的 id
  • content: 選擇項的內容

元素 <action\>

  • content
  • argument
  • hint-inputId
  • activationType : foreground | background | protocol | system
<toast>
    <visual>
        <binding template='ToastGeneric'>
            <text>Hello World!</text>
            <text>This is th 3 Example!</text>
            <image src='ms-appx://Assets/Images/photo.jpg' placement='appLogoOverride'/>
        </binding>
    </visual>
    <actions>
    <input id='reply' type='text' placeHolderContent='placeHolderContent'/>
    <action content='reply' arguments='reply' hint-inputId='reply'/>
    </actions>
</toast>

<toast>
    <visual>
        <binding template='ToastGeneric'>
            <text>Hello World!</text>
            <text>This is th 4 Example!</text>
            <image src='ms-appx://Assets/Images/photo.jpg' placement='appLogoOverride'/>
        </binding>
    </visual>
    <actions>
    <input id='reply' type='selection'>
        <selection content='selection_1' id='s1'/>
        <selection content='selection_2' id='s2'/>
    </input>
    <action content='reply' arguments='reply'/>
    <action content='cancel' arguments='cancel'/>
    </actions>
</toast>

audio 元素

做用:用於定義Toast通知彈出時所播放的聲音。對象

  • src
  • silent
  • loop

使用 NotificationsExtensions 構建 Toast 通知

若是以爲使用 XML 構建Toast通知太複雜太麻煩,那 NotificationsExtensions 就是爲你準備的。
先看一下,NotificationsExtensions 裏包含哪些關於 Toast 通知的類。

若是看過上面使用 XML 構建Toast通知的同窗,確定很是熟悉圖中的類名,多的就不說了,用一個簡單的例子,與你們一塊兒學習 NotificationsExtensions

ToastContent toastContent = new ToastContent();
toastContent.Scenario = ToastScenario.Reminder;

//<visual>
ToastVisual toastVisual = new ToastVisual();

//<text>
ToastText toastTitle = new ToastText();
toastTitle.Text = "Hello World .";

ToastText toastTitle2 = new ToastText();
toastTitle2.Text = "This is the 5 Example !";
//</text>

//<image>
ToastAppLogo toastAppLogo = new ToastAppLogo();
toastAppLogo.Source = new ToastImageSource("/Assets/Images/photo.jpg");

ToastImage toastImageInline = new ToastImage();
toastImageInline.Source = new ToastImageSource("/Assets/Images/demo.jpg");
//</image>

toastVisual.BodyTextLine1 = toastTitle;
toastVisual.BodyTextLine2 = toastTitle2;
toastVisual.AppLogoOverride = toastAppLogo;
toastVisual.InlineImages.Add(toastImageInline);
//</visual>

//<actions>
ToastActionsCustom toastActions = new ToastActionsCustom();

ToastTextBox toastTextBox = new ToastTextBox("replyTextBox");
toastTextBox.PlaceholderContent = "輸入回覆消息";

ToastButton replyButton = new ToastButton("回覆","reply");
replyButton.TextBoxId = "replyTextBox";

toastActions.Inputs.Add(toastTextBox);
toastActions.Buttons.Add(replyButton);
//</actions>

//<audio>
ToastAudio toastAudio = new ToastAudio();
toastAudio.Src = new Uri("ms-winsoundevent:Notification.Default");
//</audio>

toastContent.Visual = toastVisual;
toastContent.Actions = toastActions;
toastContent.Audio = toastAudio;

ToastNotification toastNotification = new ToastNotification(toastContent.GetXml());
ToastNotificationManager.CreateToastNotifier().Show(toastNotification);

使用 NotificationsExtensions 構建 Toast 通知是否是更加的方便和直觀呢。從上面代碼能夠看出,咱們使用 ToastContent 類構建 Toast 通知,對其屬性 Visual , Actions , Audio 賦值,完成後調用 GetXml 方法獲取一個 XmlDocument 對象,以後的過程就與原來同樣了。

使用工具 Notifications Visualizer

Notifications Visualizer 能夠協助咱們構建 Toast 通知(固然也能夠構建磁貼),它相似於 Visual Studio Designer,提供實時預覽的功能,是一個提升開發效率的工具,推薦給你們。

Windows Store 下載: https://www.microsoft.com/en-us/store/apps/notifications-visualizer/9nblggh5xsl1

結束

這篇博客與你們一塊兒學習瞭如何快速構建 Toast 通知,固然還有一些細節,好比在 Toast 通知的 XML 結構中某些元素的屬性沒有說起到,若是你們想了解,請參考下面的連接。OK,如何構建你們既然明白了,下一篇博客就該談一下 Toast 通知的交互問題了,期待吧。

參考連接

自適應和交互式 Toast 通知

相關文章
相關標籤/搜索