如何從快顯通知處理啟用 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
注意 不是使用 JavaScript?請參閱如何從快顯通知處理啟用 (XAML)。
這個主題示範的是使用者按一下您應用程式傳送的快顯通知時,您應該採取的動作。您的應用程式應該以快顯通知特定的 UI 顯示方式來回應。應用程式通常會在與該快顯通知內容相關的內容或檢視中啟動。 將快顯通知承載所包含的啟用字串,傳遞到您應用程式做為啟用事件的引數,您就可以完成這項工作。下方顯示基本的資料流程:
- 應用程式或 Web 服務建立並傳送快顯通知承載,包括啟動字串
- 引發快顯通知並/或將通知傳送到重要訊息中心
- 使用者選取快顯通知 (按一下或觸碰)
- 觸發啟用的事件
- 應用程式已啟用的事件處理常式讀取啟動字串
- 使用啟動字串中提供的參數啟動應用程式
注意 透過 Microsoft Visual Studio 測試快顯通知程式碼功能時,您必須在 Windows x86、x64 或 Windows 執行階段電腦上,使用本機電腦或遠端電腦偵錯設定。您不能使用 Visual Studio 模擬器偵錯功能選項—您的程式碼將在模擬器中編譯並執行,但不會顯示快顯通知。
您必須知道的事
技術
- Windows Runtime
先決條件
為了解這個主題,您將需要:
- 快顯通知詞彙及概念的實用知識。如需詳細資訊,請參閱快顯通知概觀。
- 您應用程式資訊清單中的 [支援快顯通知] 選項必須設為 "true" (Visual Studio 資訊清單編輯器中的 [是]),才能傳送或接收快顯通知。如需詳細資訊,請參閱快速入門:使用 Visual Studio 資訊清單編輯器建立預設磚以及如何選擇加入快顯通知。
- 熟悉 XML 和透過文件物件模型 (DOM) API 操作 XML 的方法。
- 熟悉快顯通知 XML 結構描述。如需詳細資訊,請參閱快顯通知結構描述。
- 能夠使用 Windows 執行階段 API 透過 JavaScript 建立基本 Windows 市集應用程式的能力。如需詳細資訊,請參閱使用 JavaScript 建立您的第一個 Windows 市集應用程式。
指示
步驟 1: 在快顯通知承載中包含啟用資料
您的應用程式透過快顯通知啟用時,您必須提供與該快顯通知內容相關的資訊。然後,您的應用程式會啟動至關聯的檢視,以反映該內容,而非啟動至預設的檢視。應用程式或 Web 服務建立快顯通知時,會使用 launch 屬性來指定這項啟用資訊。您可以將字串想像為類似命令列的引數。字串可以包含應用程式能夠了解的任何資訊,只要字串不會讓 XML 承載變成無效即可。請注意,快顯通知的 XML 承載總大小 (包括啟動字串) 不能超過 5 KB。
如果您未包含啟動屬性字串,您的應用程式將正常啟動,就像使用者是從 [開始] 畫面將它啟動一樣。
在此步驟中,我們假設之前建立的 XmlDocument 物件名稱為 toastXml
。這個範例會建立 launch 屬性,指派其字串值,然後將它新增至快顯通知的 XML 承載中。如需建立完整快顯通知的指示,請參閱快速入門:傳送快顯通知。
var launchAttribute = toastXml.createAttribute("launch");
launchAttribute.value = "{\"myContext\":\"12345\"}";
var toastNode = toastXml.selectSingleNode("/toast");
toastNode.attributes.setNamedItem(launchAttribute);
上述程式碼會根據快速入門:傳送快顯通知中定義的 visual 元素內容來產生下列 XML。
<toast launch="{"myContext":"12345"}">
<visual>
<binding template="ToastImageAndText01">
<image id="1" src="ms-appx:///images/redWide.png" alt="red graphic"/>
<text id="1">Hello World!</text>
</binding>
</visual>
</toast>
步驟 2: 登錄已啟用的事件
使用者按一下您的快顯通知或透過觸控選取您的快顯通知時,就會觸發 activated 事件。您的應用程式必須透過 addEventListener 函式登錄,才能收到事件通知。
注意 如果您的快顯通知沒有包含啟動屬性字串,且選取快顯通知時已在執行應用程式,則不會觸發 activated 事件。
WinJS.Application.addEventListener("activated", onActivatedHandler, false);
步驟 3: 為快顯通知的已啟用事件實作處理常式
登錄的事件處理常式會接收所有啟用事件 (無論啟用類型為何)。事件通知所包含的 kind 屬性表示啟用事件的類型。使用者按一下已在 XML 承載中指定 launch 屬性的快顯通知時,就會觸發 launch 類型的啟用事件。這與使用者點選應用程式的主要或次要磚時引發的事件相同。
您在步驟 1 透過 launch 屬性提供的啟用字串,會包含在事件通知的 arguments 屬性中。
這個範例顯示的是在步驟 2 登錄的已啟用事件處理常式的大綱。
function onActivatedHandler(args) {
if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
var launchString = args.detail.arguments;
// Handle activation as required for your app, using the launch string.
}
}