首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Windows 8 Toast 通知完整構建指南:從模板選擇到啟動參數傳遞

     編輯:關於.NET

前言:Toast 是應用與使用者對話的關鍵觸點

Toast 通知出現在螢幕右上角 (RTL 環境左上角),應用未在前景時亦可觸達使用者,支援文字、圖片、音效、持久顯示、啟動參數傳遞。掌握其 XML 模板體系與發送流程,是打造高留存應用的必修課。

一、Toast 通知架構概覽

  • 模板驅動:預定義 XML 模板 (`ToastTemplateType` 列舉),填充內容後發送。
  • 本地/排程/推播三種傳遞:本文聚焦本地通知 (`ToastNotifier`),排程/推播原理相同。
  • 啟動上下文:使用者點擊 Toast → 應用啟動/激活 → `OnLaunched`/`OnActivated` 讀取 `launch` 參數導航至特定頁面。

Toast 樣式範例

Toast 模板架構

二、逐步構建本地 Toast 通知

步驟 1:聲明 Toast 能力 (Package.appxmanifest)

`應用程式 UI` 索引標籤 → `支援 Toast 通知` 設為 `是`。
啟用Toast能力

步驟 2:設定 Toast 視覺品牌 (背景色/前景色/小徽標)

同頁面設定 `Toast 能力` 區塊:`背景色色`、`前景文字色` (淺/深)、`小徽標` (右下角品牌圖示,建議 24×24)。
Toast視覺品牌

小徽標設定

步驟 3:命名空間

using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;

步驟 4:選擇模板並取得 XML


// 範例:一張圖片 + 一行文字
ToastTemplateType template = ToastTemplateType.ToastImageAndText01;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(template);

模板 XML 結構:

<toast>
  <visual>
    <binding template="ToastImageAndText01">
      <image id="1" src=""/>
      <text id="1"></text>
    </binding>
  </visual>
</toast>

ToastImageAndText01 模板

步驟 5:填充文字內容


XmlNodeList textElements = toastXml.GetElementsByTagName("text");
textElements[0].AppendChild(toastXml.CreateTextNode("你好 Windows 8!歡迎回來。"));
// 注意:單行文字最多顯示 3 行自動換行,過長會被截斷,建議 ≤ 60 字元。

步驟 6:設定圖片來源 (三種來源)


XmlNodeList imageElements = toastXml.GetElementsByTagName("image");
var imgElem = (XmlElement)imageElements[0];

// 1. 應用封裝內資源 (ms-appx:///) - 最快、離線可用
imgElem.SetAttribute("src", "ms-appx:///Assets/ToastIcon.png");
imgElem.SetAttribute("alt", "應用圖示");

// 2. 本地儲存 (ms-appdata:///local/) - 動態下載/產生的圖片
// imgElem.SetAttribute("src", "ms-appdata:///local/ToastImages/dynamic.png");

// 3. 網路圖片 (http/https) - 需網路、有大小限制 (≤200KB, ≤1024×1024)
// imgElem.SetAttribute("src", "https://cdn.example.com/toast.jpg");

步驟 7:進階屬性 — 持久時間、音效、啟動參數


// 取得根  節點
IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
var toastElem = (XmlElement)toastNode;

// 1. 持久時間:long (約 25 秒) / short (預設約 7 秒) — 僅適用提醒/行事曆類
toastElem.SetAttribute("duration", "long"); // 或 "short"

// 2. 自訂音效 (預設播放系統提示音)
// 必須建立 

步驟 8:建立通知物件並發送


ToastNotification toast = new ToastNotification(toastXml);

// 可選:設定過期時間 (避免過期通知干擾)
toast.ExpirationTime = DateTimeOffset.UtcNow.AddMinutes(30);

// 發送
ToastNotificationManager.CreateToastNotifier().Show(toast);

步驟 9:應用啟動時處理啟動參數


// App.xaml.cs
protected override void OnLaunched(LaunchActivatedEventArgs args) {
    if (!string.IsNullOrEmpty(args.Arguments)) {
        // 解析 launch 字串 (JSON)
        var data = JsonObject.Parse(args.Arguments);
        string type = data.GetNamedString("type");
        if (type == "toast") {
            string param1 = data.GetNamedString("param1");
            // 導航至對應頁面,攜帶參數
            rootFrame.Navigate(typeof(DetailPage), param1);
            return;
        }
    }
    // 正常啟動流程
    rootFrame.Navigate(typeof(MainPage));
}

三、執行效果展示

按鈕觸發Toast

Toast彈出效果

四、最佳實踐與避坑指南

  1. 模板選擇:依內容複雜度選擇 (`ToastText01` 純文字、`ToastImageAndText01/02/03/04` 圖文混排)。完整模板列表。
  2. 圖片大小嚴格限制:≤ 200 KB、≤ 1024×1024 像素,超限會導致通知不顯示 (無錯誤提示)。建議預先壓縮、使用 WebP (Win10 1709+ 支援)。
  3. 不要濫用 `duration="long"`:僅限行事曆、提醒、鬧鐘等高優先級場景,一般資訊型通知用預設 `short`。
  4. 音效審慎使用:頻繁通知播放音效極易引起使用者反感,導致關閉應用通知權限。預設系統音效通常足夠。
  5. 啟動參數設計:採用 JSON 結構化,包含 `type` (來源識別)、`action` (建議動作)、`entityId` (業務實體 ID),便於擴展與除錯。
  6. 清除通知:`ToastNotificationManager.CreateToastNotifier().Hide(toast)` 移除特定通知;`Clear()` 清除應用所有通知。
  7. 測試技巧:鎖定螢幕 (Win+L) 觀察鎖屏 Toast;關閉應用後觸發排程通知驗證背景觸發。

總結

Toast 通知 = **模板 XML + 內容填充 + 視覺品牌 + 行為屬性 (音效/持久/啟動參數) + 發送 API**。掌握此流程,並遵守「精準、克制、可操作」的通知設計原則,即能將 Toast 轉化為應用留存與活躍的強大引擎,而非使用者卸載應用的推手。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved