如何为原始推送通知编写后台任务 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
本主题向你展示 如何编写后台任务以接收在锁屏上的 Windows 运行时应用中使用原始推送通知的后台网络通知。本主题将指导你完成以下过程:为 Windows 8.1 中的 Windows 运行时应用的原始推送通知功能编写后台任务。
你需要了解的内容
技术
Windows.Networking.PushNotifications
支持使用原始推送通知进行后台网络通信。
先决条件
以下信息适用于任何依赖使用原始推送通知的网络连接始终连接的联网或网络感知的 Windows 运行时应用。本主题适用于在 Windows 8.1、Windows Phone 8.1 和 Windows Server 2012 上采用 JavaScript 编写的应用。
使用原始推送通知的后台网络连接受 JavaScript 应用、用 C++/XAML 编写的应用,以及以 C#、VB.NET 或托管 C++ 编写且使用 .NET Framework 4.5 的应用支持。 有关适用于 JavaScript 应用的后台网络连接任务的详细信息,请参阅使用后台任务支持应用。
说明
编写后台任务
让应用始终可以访问的下一重要步骤是提供在发生原始推送通知时运行的应用代码。例如,对于使用传入的原始推送通知发出新邮件已到达服务器信号的电子邮件应用,该应用需要运行代码才能处理原始推送通知中的数据。此数据可能包含所接收到的、会引发对用户的通知的新电子邮件列表。应用还可以安排在应用下次不再暂停时,连接到电子邮件服务器并从服务器下载新电子邮件。此项处理在后台任务中完成。
每个后台任务都是由在应用注册了原始推送通知之后运行的功能来实现。该文件在应用部件清单 (manifest) 中指定为包含单个功能的 JavaScript 源文件。
以下示例显示了在原始推送通知触发后台任务时所运行的功能。
(function () {
// Get the background task details
var backgroundTask = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;
var settings = Windows.Storage.ApplicationData.current.localSettings;
var taskName = backgroundTask.task.name;
console.log("Background task \"" + taskName + "\" starting...");
// Store the content received from the notification so it can be retrieved
// from the UI.
var notificationDetails = backgroundTask.triggerDetails;
settings.values[taskName] = notificationDetails.content;
console.log("Background \"" + taskName + "\" completed!");
// Close the instance running the task
close();
})();
注意 你无法在后台任务中引用你的应用的用户界面 (UI) 元素,因为你的应用中的 UI 元素未运行。当你的代码在后台任务中执行时,你可以从原始推送通知接收数据,分析和处理数据,并引发对用户的通知。
后台任务的生存时间由用来实现后台任务的功能控制。当应用退出该功能时,应用将暂停。
在触发应用后台任务时,操作系统将确保相应的同步会将原始推送通知数据传递到应用,或返回错误(例如,连接中止)。同样,在后台任务结束时,应用必须确保已引发所有的通知,然后再暂停应用。
尽管后台任务主要是针对处于暂停状态的应用,但是配置有后台任务的应用在应用运行于前台时也有这些后台任务触发器。
先前步骤
有关如何创建锁屏应用以接收使用原始推送通知的后台网络通知的详细信息,请参阅如何创建使用后台原始推送通知的锁屏应用。
有关注册推送通知通道并将其发送到服务器,注册要从原始推送通知激活的后台任务,将原始推送通知发送到通道以及激活后台任务这一过程的详细信息,请参阅如何使用 WNS 将原始推送通知传递到锁屏应用。
有关使用原始推送通知的指南和清单的详细信息,请参阅
相关主题
其他资源
如何使用 Windows 推送通知服务 (WNS) 进行验证
参考
Windows.ApplicationModel.Background
Windows.Networking.BackgroundTransfer
Windows.Networking.PushNotifications
示例