如何建立使用背景原始推播通知的鎖定畫面應用程式 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
本主題說明 如何建立鎖定畫面應用程式以在 Windows 執行階段應用程式中接收使用原始推播通知的背景網路通知。 原始推播通知可讓鎖定畫面上的應用程式在應用程式位於背景時接收網路通知。
目標: 建立鎖定畫面應用程式,當應用程式在背景時接收使用原始推播通知的網路通知。
先決條件
下列資訊適用於依賴使用原始推播通知維持網路連線的任何已連線或網路感知 Windows 執行階段應用程式。這個主題適用於 Windows 8.1、Windows Phone 8.1 和 Windows Server 2012 R2 上使用 JavaScript 撰寫的應用程式。
JavaScript 應用程式、以 C++/XAML 撰寫的應用程式,以及使用 C#、VB.NET 或 Managed C++ 之 .NET Framework 4.5 的應用程式,可支援使用原始推播通知的背景網路連線。 如需適用於 JavaScript 應用程式的背景網路工作詳細資訊,請參閱使用背景工作支援應用程式。
建立使用背景原始推播通知的鎖定畫面應用程式
您必須將應用程式設成鎖定畫面應用程式,才可以透過 WNS 使用原始推播通知來啟用背景工作。
您必須在應用程式資訊清單中設定適當的功能,才可以將您的應用程式要求放置在鎖定畫面上。應用程式中必須也包含要求新增到鎖定畫面的程式碼,以及處理使用者將應用程式新增到鎖定畫面或者從鎖定畫面上移除等這類情形的程式碼。
若要放到鎖定畫面,應用程式必須獲得使用者的同意。呼叫鎖定畫面要求 API 時,會出現同意提示。如果使用者未授與應用程式在鎖定畫面執行的權限,則您將無法再提示權限。不過,如果使用者不小心關閉對話方塊,您可以再次提示。
如果使用者拒絕讓您的應用程式成為鎖定畫面應用程式,他們可以在稍後透過應用程式的系統權限飛出視窗,將您的應用程式新增到鎖定畫面。使用者也可以從 [電腦設定] 的 [個人化] 區段,手動將您的應用程式新增到鎖定畫面。
若要要求將您的應用程式放置在鎖定畫面上,您必須完成下列步驟。您可以使用 Microsoft Visual Studio 2013 來開啟 package.appxmanifest 檔案或是手動修改應用程式資訊清單,以變更應用程式資訊清單。
登錄以變成鎖定畫面應用程式
請確定您的應用程式磚在應用程式資訊清單中具有與其關聯的寬形標誌。請確定應用程式資訊清單已在 DefaultTile 元素上設定 WideLogo 屬性。
下列範例在應用程式資訊清單中的 <VisualElements> 元素下新增 DefaultTile 元素。
<DefaultTile ShowName="allLogos" WideLogo="images\tile.png" />
指出您的應用程式要使用背景工作。應用程式資訊清單同時還需要有包含背景工作的 JavaScript 來源檔案,以及實作背景工作進入點的類別名稱。
建立透過 WNS 使用原始推播通知的鎖定畫面應用程式時,請指定 JavaScript 來源檔案和 pushNotification 背景工作類型。這可讓您的應用程式接收原始 WNS 推播通知。
下列範例會在應用程式資訊清單的 <Application> 元素下,新增原始推播通知。
<Extensions> <Extension Category="windows.backgroundTasks" StartPage="js\backgroundTask.js"> <BackgroundTasks> <Task Type="pushNotification" /> </BackgroundTasks> </Extension> </Extensions>
因為您的應用程式會在鎖定畫面上,所以也必須有鎖定畫面圖示,用來顯示遺漏的通知。若要啟用這項功能,請更新您的應用程式資訊清單以包含 LockScreen 元素。
下列範例顯示在應用程式資訊清單中的 <VisualElements> 元素下新增的 LockScreen 元素
<LockScreen Notification="badge" BadgeLogo="Images\badgelogo.png" />
完成上個步驟後,您的應用程式就可以向使用者要求放置在鎖定畫面的權限。Background.BackgroundExecutionManager.RequestAccessAsync 方法會對使用者顯示對話方塊,以要求將應用程式新增到鎖定畫面。 如果使用者核准要求,您的應用程式就可以在背景執行,並將通知放置在鎖定畫面上。
下列範例要求放置在鎖定畫面的權限。
var lockScreenAdded = false; function ClientInit() { // Lock screen is required for raw push notification // background code to run. // if (lockScreenAdded == false) { BackgroundExecutionManager.RequestAccessAsync().done(function (result) { switch (result) { case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity: // // App is allowed to use RealTimeConnection broker // functionality even in low power mode. // lockScreenAdded = true; break; case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity: // // App is allowed to use RealTimeConnection broker // functionality but not in low power mode. // lockScreenAdded = true; break; case BackgroundAccessStatus.Denied: // // App should switch to polling mode (example: poll for email based on time triggers) // WinJS.log && WinJS.log("Lock screen access is denied", "sample", "status"); break; } }, function (e) { WinJS.log && WinJS.log("An error occurred while requesting lock screen access.", "sample", "error"); }); }
建立使用原始推播通知並以 WNS 為基礎的鎖定畫面應用程式時,在授與權限後,應用程式的 BackgroundAccessStatus 將設定為 AllowedMayUseActiveRealTimeConnectivity。AllowedWithAlwaysOnRealTimeConnectivity 即時連線選項適用於網路觸發程序功能,並不會影響使用原始推播通知並以 WNS 為基礎的鎖定畫面應用程式。
您的應用程式新增到鎖定畫面後,應該可以在 [電腦設定] 的 [個人化]**** 區段中看到它。請注意,使用者隨時都可能選擇從鎖定畫面應用程式清單移除您的應用程式。因此,您必須確定即使從鎖定畫面移除您的應用程式,應用程式仍然會保持正常運作。
如需鎖定畫面要求的詳細資訊,請參閱鎖定畫面概觀與鎖定畫面應用程式範例。
摘要與後續步驟
如需登錄推播通知通道並將它傳送給伺服器、登錄背景工作以便從原始推播通知啟用、將原始推播通知傳送到通道並啟用背景工作的處理程序詳細資訊,請參閱如何使用 WNS 將原始推播通知傳遞到鎖定畫面應用程式。
如需如何撰寫背景工作以接收使用原始推播通知的背景網路通知的詳細資訊,請參閱如何撰寫原始推播通知的背景工作。
如需使用原始推播通知的指導方針和檢查清單的詳細資訊,請參閱
相關主題
其他資源
參考
Windows.ApplicationModel.Background
Windows.Networking.BackgroundTransfer
Windows.Networking.PushNotifications
範例