如何创建使用后台原始推送通知的锁屏应用 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
本主题向你展示 如何创建锁屏应用以接收在 Windows 运行时应用中使用原始推送通知的后台网络通知。 原始推送通知允许锁屏上的应用在处于后台时接收网络通知。
目标: 创建锁屏应用,以便在应用处于后台时接收使用原始推送通知的网络通知。
先决条件
以下信息适用于任何依赖使用原始推送通知的网络连接始终连接的联网或网络感知的 Windows 运行时应用。本主题适用于针对 Windows 8.1、Windows Phone 8.1 和 Windows Server 2012 R2 采用 JavaScript 编写的应用。
使用原始推送通知的后台网络连接受 JavaScript 应用、用 C++/XAML 编写的应用,以及以 C#、VB.NET 或托管 C++ 编写且使用 .NET Framework 4.5 的应用支持。 有关适用于 JavaScript 应用的后台网络连接任务的详细信息,请参阅使用后台任务支持应用。
创建使用后台原始推送通知的锁屏应用
在通过 WNS 使用原始推送通知激活后台任务前,你必须将你的应用设置为锁屏应用。
你必须在应用部件清单 (manifest) 中设置相应的功能,以便将你的应用请求放在锁屏上。你的应用还必须将代码包含到要添加到锁屏的请求中,并处理用户在锁屏中添加或删除应用的情况。
若要进入锁屏,应用必须获得用户的同意。在调用锁屏请求 API 时,将显示同意提示。如果用户未授予你的应用在锁屏上运行的权限,则你不能再次提示同意。但是,如果用户无意中取消该对话框,你可以再次进行提示。
如果用户拒绝你的应用成为锁屏应用,用户可以在稍后时候通过你的应用的系统权限弹出窗口将该应用添加到锁屏。用户也可以从“电脑设置”的“个性化”部分,手动将你的应用添加到锁屏。
若要请求将你的应用放到锁屏上,你必须完成以下步骤。你可以使用 Microsoft Visual Studio 2013 打开 package.appxmanifest 文件,或者通过手动修改应用部件清单 (manifest),对应用部件清单 (manifest) 进行更改。
注册为锁屏应用
确保你的应用的磁贴在应用部件清单 (manifest) 中有一个宽徽标与它关联。确保应用部件清单 (manifest) 已经在 DefaultTile 元素上设置 WideLogo 属性。
以下示例将 DefaultTile 元素添加到应用部件清单 (manifest) 中的 <VisualElements> 元素下。
<DefaultTile ShowName="allLogos" WideLogo="images\tile.png" />
指示你的应用意欲使用后台任务。应用部件清单 (manifest) 还必须指定包含后台任务的 JavaScript 源文件,以及实现后台任务的入口点的类名称。
在构建通过 WNS 使用原始推送通知的锁屏应用时,请指定 JavaScript 源文件和 pushNotification 后台任务类型。这将使你的应用可以接收原始 WNS 推送通知。
以下示例可将原始推送通知添加到应用部件清单 (manifest) 中的 <Application> 元素下。
<Extensions> <Extension Category="windows.backgroundTasks" StartPage="js\backgroundTask.js"> <BackgroundTasks> <Task Type="pushNotification" /> </BackgroundTasks> </Extension> </Extensions>
由于你的应用将位于锁屏上,因此它也必须有一个锁屏图标可用于显示错过的通知。为支持此功能,请更新应用部件清单 (manifest) 以包括 LockScreen 元素。
以下示例显示了添加到应用部件清单 (manifest) 中 <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
示例