快速入門:將通知傳送至次要磚 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
注意 不是使用 JavaScript?請參閱快速入門:將通知傳送至次要磚 (XAML)。
這個快速入門說明如何傳送本機通知來更新應用程式的次要磚。 除了最後一個步驟之外,您會發現將通知傳送至次要磚與將通知傳送至應用程式的主要磚完全一樣。這兩個程序的唯一差異是,您將在次要磚使用次要磚特有的磚更新程式 (CreateTileUpdaterForSecondaryTile)。
若要查看這個主題中所提供程式碼的完整範例,請參閱次要磚範例。這個範例會以 JavaScript、C#、C++ 以及 Visual Basic 版本提供。
應用程式啟動時,應該一律列舉其次要磚,以避免在應用程式沒有察覺的情況下發生任何新增或刪除。使用者刪除次要磚時,Windows 只會移除該次要磚。應用程式本身要負責釋放次要磚使用的任何資源。Windows 透過雲端複製次要磚時,目前的磚或次要磚上的徽章通知、排程通知、推播通知通道以及定期通知所使用的統一資源識別元 (URI) 不會隨著次要磚被複製,而且必須再次設定。
注意 在這個快速入門中,您將直接透過 XML 文件物件模型 (DOM) 來操作通知內容。另外還有透過 NotificationsExtensions 程式庫的選擇性方法,這個程式庫會以物件屬性的形式呈現 XML 內容,包含 Intellisense。如需詳細資訊,請參閱快速入門:在程式碼中使用 NotificationsExtensions 程式庫。若要查看這個快速入門中以 NotificationsExtenstions 表示的程式碼,請參閱次要磚範例。
先決條件
為了解這個主題,您將需要:
- 磚與通知詞彙及概念的實用知識。如需詳細資訊,請參閱磚、徽章及通知。
- 熟悉磚 XML 結構描述。如需詳細資訊,請參閱磚結構描述。
- 能夠使用 Windows 執行階段 API 透過 JavaScript 建立基本 Windows 市集應用程式的能力。如需詳細資訊,請參閱使用 JavaScript 建立您的第一個 Windows 市集應用程式。
- 您應用程式的現有次要磚。如需詳細資訊,請參閱快速入門:釘選次要磚。
- 熟悉 XML 和透過文件物件模型 (DOM) API 操作 XML 的方法。
指示
1. 選擇性:宣告命名空間變數
這個步驟提供您用來取代完整命名空間名稱的簡短名稱。這是 C# 中的 "using" 陳述式或 Visual Basic 中的 "Imports" 陳述式的對等項。讓您將程式碼簡化。
注意 這個快速入門中的其餘程式碼假設已經宣告這個變數。
var notifications = Windows.UI.Notifications;
2. 抓取空白的磚範本
任何磚範本都可以用於次要磚。我們在這裡使用簡單的純文字範本 TileWide310x150Text04。
var wideTemplate = notifications.TileTemplateType.tileWide310x150Text04;
var tileXml = notifications.TileUpdateManager.getTemplateContent(wideTemplate);
3. 指定通知的文字
TileWide310x150Text04 範本包含單一文字元素,而我們將為它指派字串。
var tileTextAttributes = tileXml.getElementsByTagName("text");
tileTextAttributes[0].appendChild(tileXml.createTextNode("This text was delivered through a notification"));
4. 提供中型版本的通知
最好的做法是在傳送到磚的所有通知承載中,一律提供應用程式支援的每個磚大小的繫結。在釘選操作中,使用者可以從您提供的選項選取次要磚大小。在每個通知為每個大小選項提供繫結,可確保無論磚大小為何都會顯示您的通知。如果您也支援大型次要磚,請針對其中一個大型範本重複此步驟和下一個步驟。
注意 包含次要磚在內的所有磚在 Windows Phone 8.1 都會釘選為中型磚,之後使用者便可調整它的大小。
var squareTemplate = notifications.TileTemplateType.tileSquare150x150Text04;
var squareTileXml = notifications.TileUpdateManager.getTemplateContent(squareTemplate);
var squareTileTextAttributes = squareTileXml.getElementsByTagName("text");
squareTileTextAttributes[0].appendChild(squareTileXml.createTextNode("This text was delivered through a notification"));
5. 將中型通知附加至寬形通知承載
var node = tileXml.importNode(squareTileXml.getElementsByTagName("binding").item(0), true);
tileXml.getElementsByTagName("visual").item(0).appendChild(node);
6. 將最終的 XML 封裝為磚通知
var tileNotification = new notifications.TileNotification(tileXml);
7. 建立次要磚更新程式
一直到這個步驟,程序與標準磚通知都相同。不過,在這個步驟中,我們要使用次要磚特有的 createTileUpdaterForSecondaryTile 方法。這個方法需要目標次要磚的唯一識別碼。在這個範例中,我們假設識別碼儲存在變數 appbarTileId
的次要磚目前已釘選在 [開始] 畫面上。
var updater = notifications.TileUpdateManager.createTileUpdaterForSecondaryTile(appbarTileId);
8. 將通知傳送至次要磚
updater.update(tileNotification);
9. 選用:更新次要磚的標誌
建立次要磚時,您必須提供標誌影像。標誌影像由於通常會顯示應用程式標誌而得名,是磚在接收任何通知之前,所顯示的完整磚影像。如果通知移除或到期時,磚會還原為標誌影像。在某些情況下 (例如想要指出釘選內容已變更但又不想傳送完整通知更新),您可能會想要變更預設標誌影像。這個步驟將為您示範如何使用應用程式本機存放區中的影像,變更識別碼儲存在變數 appbarTileId
之次要磚的標誌。請注意,這個範例會參照 Windows.Foundation.Uri 類別。
var tileToUpdate = new Windows.UI.StartScreen.SecondaryTile("SecondaryTile.01");
var uriUpdatedLogo = new Windows.Foundation.Uri("ms-appdata:///local/NewSecondaryTileDefault.png");
tileToUpdate.logo = uriUpdatedLogo;
tileToUpdate.updateAsync();
摘要與後續步驟
在這個快速入門中,您已經將通知傳送給與您應用程式關聯的次要磚。您也看到,將通知傳送給應用程式主要磚以及將通知傳送給它的某個次要磚,之間只有一小處差異。您還更新了次要磚的預設標誌影像。
這個快速入門將次要磚更新以本機通知的形式傳送。您也可以探索其他通知傳遞方法:排程、定期及推播。如需詳細資訊,請參閱傳遞通知。