Windows 8 引入鎖屏機制,允許最多 7 個應用在鎖屏顯示狀態。用戶可在「電腦設定」手動將應用加入鎖屏。對開發者而言,**鎖屏提醒** 是以數字 (0-99) 或系統字形 (如新訊息、播放中、暫停) 顯示於應用磁貼右下角的微型狀態指示器,極低成本即可傳達核心資訊 (未讀數、下載進度、播放狀態)。




using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
// 1. 取得數字模板 XML
XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);
// 2. 設定數值
XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");
badgeElement.SetAttribute("value", "7"); // 字串格式,範圍 0-99
// 3. 發送更新
BadgeNotification badge = new BadgeNotification(badgeXml);
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);
// 1. 取得字形模板
XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeGlyph);
// 2. 設定字形值 (需符合系統預定義列表)
XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");
badgeElement.SetAttribute("value", "newMessage"); // 例如:新訊息圖示
// 3. 發送
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(new BadgeNotification(badgeXml));
// 方式 1:更新為 "none" 字形
badgeElement.SetAttribute("value", "none");
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(new BadgeNotification(badgeXml));
// 方式 2:直接清除 (推薦)
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear();
若 Badge 需反映伺服器狀態 (如未讀郵件數),需在背景任務中執行上述更新程式碼:
// BackgroundTasks/MyBadgeUpdater.cs
public sealed class MyBadgeUpdater : IBackgroundTask {
public async void Run(IBackgroundTaskInstance taskInstance) {
var deferral = taskInstance.GetDeferral();
try {
int unreadCount = await FetchUnreadCountFromServerAsync(); // 你的網路呼叫
UpdateBadge(unreadCount);
} finally {
deferral.Complete();
}
}
private void UpdateBadge(int count) { /* 上述更新邏輯 */ }
}
並在 `Package.appxmanifest` 宣告中設定此類別為進入點,觸發條件設為 `Timer` (如每 15 分鐘) 或 `Push Notification` (伺服器主動推送)。
| 現象 | 可能原因 | 解決 |
|---|---|---|
| Badge 不顯示 | 未聲明背景任務 / 類型錯誤 | 檢查 Package.appxmanifest 宣告區 |
| 數字顯示 "99+" | 值 > 99 | 邏輯限制最大 99,或改用字形 |
| 字形不生效 | 值不在系統預定義列表 | 參考 MSDN BadgeGlyphValue 列表 |
| 背景任務不執行 | 未在鎖屏槽位 / 電池節能模式限制 | 引導用戶加入鎖屏;優化任務耗電 |
鎖屏提醒以 **極低開發成本 (聲明 + 幾行程式碼)** 換取 **高曝光、高觸達** 的使用者連結。核心在於:正確聲明背景任務類型、選擇「數字/字形」恰當表達狀態、在背景任務中精準更新、尊重隱私與電池壽命。掌握這套機制,讓你的應用在使用者拿起手機的第一眼,就能傳達最關鍵的資訊。