WNS 通知优先级

通过为 WNS POST 消息设置带有简单标头的通知的优先级,你可以控制在电池敏感情况下如何传递通知。

助力 Windows

随着越来越多的用户采用仅限电池供电的设备来工作,最大程度降低功耗已成为所有应用的标准要求。 如果应用消耗的能量超过了它们提供的价值,用户可能会卸载这些应用。 虽然 Windows 操作系统会尽可能减少电池的耗电量,但应用有责任高效率运行。

WNS 优先级是在电池供电时关闭非关键工作的一种方法。 WNS 优先级告诉系统哪些通知应该立即发送,哪些通知可以等到设备插入电源。 通过这些提示,系统可以在通知对用户和应用最有价值的确切时间发送通知。

设备上的电源模式

每个 Windows 设备都通过多种电源模式(电池、省电模式和充电)运行,并且用户期望应用在不同电源模式下的不同行为。 当设备打开时,所有通知都应该被传递。 在省电模式下,只应发送最重要的通知。 插入设备时,可以完成同步或非时间关键操作。

Windows 不知道哪些通知对任何用户或应用都很重要,因此系统完全依赖应用程序为其通知设置正确的优先级。

优先级

应用在发送推送通知时可以使用四个优先级。 优先级是针对单个通知设置的,允许你选择哪些通知需要立即发送(例如,IM 消息)以及哪些通知可以等待(例如,联系人照片更新)。

优先级如下:

优先级 用户替代 说明 示例
是 - 用户可以阻止来自应用的所有通知,也可以阻止应用在节电模式下受到限制。 在设备可以接收通知的任何情况下必须立即发送的最重要的通知。 属于这一类的包括应该唤醒设备的诸如 VoIP 呼叫或严重警报等等。 VoIP 呼叫、时间紧迫的警报
是 - 用户可以阻止来自应用的所有通知,也可以阻止应用在节电模式下受到限制。 这些是不那么重要的事情,不需要立即仅限的事情,但是如果他们不在后台运行,会让用户讨厌。 辅助电子邮件帐户同步,动态磁贴更新。
是 - 用户可以阻止来自应用的所有通知,也可以阻止应用在节电模式下受到限制。 仅在用户使用设备或后台活动有意义时才有意义的通知。 在用户登录或插入他们的设备之前,这些内容会被缓存并且不会被处理。 联系状态(在线/离线)

请注意,许多应用程序在其整个生命周期中都会收到不同优先级的通知。 由于优先级是基于每个通知设置的,因此这不是问题。 VoIP 应用可以为来电发送高优先级通知,然后在联系人上线时用低优先级通知跟进。

设置优先级

设置通知请求的优先级是通过 POST 请求 X-WNS-PRIORITY 上的附加标头完成的。 这是一个 1 到 4 之间的整数值,映射到优先级:

优先级名称 X-WNS-PRIORITY 值 默认值:
1 Toast
中型 2 磁贴和锁屏提醒
3 原始

为了向后兼容,不需要设置优先级。 如果应用未设置其通知的优先级,系统将提供默认优先级。 默认值如上表所示,与现有 Windows 版本的行为相匹配。

桌面行为的详细列表

如果你要通过许多不同的 Windows SKU 交付你的应用,通常最好遵循上一节中的图表。

下面列出了针对每个优先级的更具体的推荐行为。 这并不能保证每个设备都能完全按照图表工作。 OEM 可以自由地以不同方式配置行为,但大多数都接近此图表。

设备状态 优先级:高 优先级:中 优先级:低 优先级:极低
屏幕打开或接通电源 传送 传送 传送 传送
屏幕关闭和使用电池 传送 如果由用户豁免:交付 否则:缓存 如果由用户豁免:交付 否则:缓存* 缓存
已启用节电 如果由用户豁免:交付 否则:缓存 如果由用户豁免:交付 否则:缓存 如果由用户豁免:交付 否则:缓存 缓存
使用电池 + 启用节电模式 + 屏幕关闭 如果由用户豁免:交付 否则:缓存 如果由用户豁免:交付 否则:缓存 如果由用户豁免:交付 否则:缓存 缓存

请注意,默认情况下,仅针对基于 Windows Phone 的设备的屏幕关闭和电池发送低优先级通知。 这是为了保持与预先存在的 MPNS 策略的兼容性。 另请注意,第四行和第五行是相同的,只是调出不同的场景。

要在省电模式中豁免某个应用,用户必须前往“设置”中的“应用的电池使用情况”,然后选择“允许应用运行后台任务”。对于高、中和低优先级通知,此用户选择可将应用排除在省电模式之外。 还可以调用 BackgroundExecutionManager API 以编程方式请求用户的权限。