通过为 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 以编程方式请求用户的权限。