開發過WindowsPhone應用或者使用過WindowsPhone手機的開發者都知道,我們會收到一些應用的提 示信息,這些提示信息出現在手機的上端,並且停留幾秒鐘後會自動消失,當然如果我們點擊彈出的信 息會自動運行相應的應用程序,這種提示信息我們叫做通知。
其實Windows 8 Store 應用也借 鑒了Windows Phone上的提示信息,我們開發人員可以使自己應用程序在合適時間彈出相關提示信息, 那麼這些Windows 8 Store應用的提示信息,我們叫做Toast通知。
並且Toast通知樣式可以自定 義的。例如:
一、Toast通知概述
Toast 通知是在屏幕右上角(對於 從右到左 (Right-To-Left) 方向位於左上角)顯示的通知。
Toast 通知可在應用上下文之外提供臨時消息
用 toast 通知可立即吸引用戶注意
用戶可以永久關閉應用的 toast 通知
能夠快速導航到應用中上下文相關的位置
很容易從應用本地或雲端調用 toast 通知
Toast 通知使用與動態磁貼類似的模板架構體系,有豐富的展現形式可以選擇。
二、Toast通知構建
1,聲明Toast通知功能
打開Package.appxmanifest應用清單文 件,“應用程序UI”選項卡中找到“支持Toast通知”設置為“是”。
2,聲明 Toast 通知背景色和文本顏色
我們可以為 Toast 通知設置背景顏色和淺色或深色 文本。注意:該設置同時適用Toast 和磁貼通知背景以及文本顏色。
3,指定小徽標圖像
應用的小徽標圖像顯示在每個 Toast 通知的右下角,讓用戶識別引發通 知的應用。
4,添加命名空間聲明
1: using Windows.UI.Notifications;
2: using Windows.Data.Xml.Dom;
5,為 Toast 選取一個模板並檢索其 XML 內容
我 們從系統提供的模板目錄中選擇一個適合的模板(詳細的模板列表可參考 ToastTemplateType 枚舉) 。
注意:我們發送的每個單獨的通知都可以使用不同的模板。
1: ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01;
2: XmlDocument toastXml = ToastNotificationManager.GetTemplateContent (toastTemplate);
這裡我使用的是ToastImageAndText01 模板,該模版樣式如下:
6,為通知提供文本內容
我們可以首先檢索模板中標記名稱為“text”的所有元素。
ToastImageAndText01 模板只包含一個代碼分配的文本字符串。該字符串最多可包含三行自動 換行的字符串,因此我們應該相應地設置字符串的長度,以避免被截斷。
1: XmlNodeList toastTextElements = toastXml.GetElementsByTagName ("text");
2: toastTextElements[0].AppendChild (toastXml.CreateTextNode("你好Windows 8!"));
7,為通知提供圖像
我們 可以首先檢索模板中標記名稱為“image”的所有元素。
與磁貼不同,Toast 模板(如 ToastImageAndText01)最多包含一個圖像。
注意:並非所有 Toast 模板都包含圖像,某些磁 貼模板是僅文本的。
1: XmlNodeList toastImageAttributes = toastXml.GetElementsByTagName("image");
然後我們可以從應用的程序包、本地存 儲或從 Web 使用圖像。注意:該圖像大小小於 200 KB,小於 1024 x 1024 像素。
這裡我以應 用程序包的圖像為例:
1: ((XmlElement)toastImageAttributes[0]).SetAttribute ("src", "ms-appx:///Assets/SmallLogo.png");
2: ((XmlElement)toastImageAttributes[0]).SetAttribute("alt", "red graphic");
8,指定Toast 持續時間或者Toast 音頻(非必要)
我們可以為Toast 設置持續時間(僅有兩個值:short和long),通常當我們的通知屬於約會或者會議提醒之類的時候才 使用“long”值。
注意:Toast持續時間默認為“short”。
1: IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
2: ((XmlElement) toastNode).SetAttribute("duration", "long");
另外我們也可以設置 Toast音頻,默認情況下Windows在播放通知時會播放一個簡短的聲音。同時我們可以選擇使用系統提供 的聲音,也可以不使用任何聲音。
由於模板中不包含 audio 元素,因此我們必須定義該元素, 同時使用“ms-winsoundevent:”前綴指定聲音文件。
1: IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
2: XmlElement audio = toastXml.CreateElement("audio");
指定非默認聲音。
1: audio.SetAttribute("src", "ms- winsoundevent:Notification.IM");
定義 audio 元素之後,需要將其附加到 Toast 的 XML 負載中,作為 toast 元素的子元素。
1: toastNode.AppendChild(audio);
9 ,指定應用的啟動參數
通常用戶點擊 Toast 通知時,相關應用應當會啟動,並顯示與該通知的 內容相關的視圖。
我們可以使用 Toast 元素的 launch 屬性來實現該效果。
該屬性提 供一個在通過 Toast 啟動應用時,從 Toast 傳遞到應用的字符串。此字符串沒有任何特定形式,它由 我們應用來定義。
我們的應用在每次被激活時必須檢查作為參數形式的此字符串,並相應地調 整它的視圖或操作。例如:
1: ((XmlElement)toastNode).SetAttribute("launch", "{\"type\":\"toast\",\"param1\":\"12345 \",\"param2\":\"67890\"}");
10,創建 Toast 通知並發送
1: ToastNotification toast = new ToastNotification(toastXml);
2: ToastNotificationManager.CreateToastNotifier ().Show(toast);
最後運行效果可如下:
點擊按鈕後彈出Toast通知: