Aoac唤醒的软件方案

Aoac唤醒

这篇文章包含了Win10下的Aoac唤醒和Win11下的Aoac唤醒的不同地方,在结尾处:
从Win10时代开始,通过软件来唤醒机器是一个很常见的事情了,但是很少有文档去将如何通过AOAC来唤醒,通过硬件、软件如何唤醒,有哪些限制条件,哪些需要注意的系统设置的唤醒场景;什么条件下可以唤醒,什么条件下唤醒失败,对于一个涉及到相关功能的开发人员来说都需要系统性的分析和了解;这篇文章主要梳理在不使用硬件方案的情况下如何唤醒机器。
文档地址
因为是纯软件方案,所以我们梳理文档中软件可以自由唤醒的相关的内容;

Universal Windows Platform (UWP) Applications
UWP applications can wake the SoC from the deepest idle state to sync and display notifications, depending on a device's power source, notification priority levels, and app-specific user configurations.

Event Turns On the display AC power Turns on the display - DC power Remarks
Other UWP apps:push notifications Depends on the type of nitification Depends on whether the app is exempt,the notification priority level, and the type of notification see Note.

备注

如果设备连接到AC电源,则所有优先级的通知(高、中或低优先级)为UWP应用提供。如果设备处于DC(电池)电源,则所有优先级的通知仅针对免除的UWP应用提供。不同类型的通知具有不同的优先级别,具体取决于特定应用。例如收件箱邮件应用将传入邮件的通知视为低优先级。如果在新式待机期间传递通知,则只有Toast通知才会打开显示。有关UWP通知的详细信息,请参阅WNS通知优先级

若要将应用设置为豁免,请右键单击开始菜单,然后选择设置>System>Battery。可以看到高耗电的应用。如果要免除应用,请选择该应用。如果启用“让Windows决定”,请选择“始终”以允许应用在后台运行。若要允许来自应用的通知,请选择“设置>系统>通知”&操作,然后再“获取来自这些发件人的通知”中打开该应用。

看完文档,大致了解了AOAC唤醒在外接电源和内置电池的工作模式下的逻辑。接下来看WNS通知优先级
WNS通知优先级

随着笔记本的发展,应用的功耗最大程度降低变成了应用程序的标准要求。如果应用消耗的能量超过了它们提供的价值,用户可能会卸载这些应用。虽然Windows操作系统回尽可能减少电池的耗电量,但应用有责任高效率运行。
WNS优先级是在电池供电时关闭非关键工作的一种方法。WNS优先级告诉系统哪些通知应该立即发送,那些通知可以等到设备插上电源。通过这些提示,系统可以在通知对用户和应用最有价值的确切时间发送通知。

优先级

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

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

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

设置优先级

设置通知请求的优先级是通过 POST 请求 X-WNS-PRIORITY 上的附加标头完成的。 这是一个 1 到 4 之间的整数值,映射到优先级:
|优先级名称|X-WNS-PRIORITY值|默认值|
|高|1|Toast|
|中型|2|此贴和锁屏提醒|
|低|3|原始|
为了向后兼容,不需要设置优先级。 如果应用未设置其通知的优先级,系统将提供默认优先级。 默认值如上表所示,与现有 Windows 版本的行为相匹配。

桌面行为的详细列表

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

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

了解完这些,我们回到Toast相关的文章,以下是Toast的连接:

toast相关的资料

若要创建重要通知、警报、提醒和传入呼叫通知:

  • Reminder
  • Alarm
  • IncomingCall
  • Urgent

要求:必须运行Windows Insider Preview内部版本 22546 或更高版本才能使用重要通知。
记得添加按钮,不然会被降级为普通Toast
Win10下唤醒Aoac使用Reminder就可以。但是Win11下新增了专注模式,用户免打扰,所以这个Reminder就失效了。文档中说明Urgent可以突破免打扰;但是唤醒逻辑还是要遵循前面的内容;
以上就是本篇文章的全部内容了。
因为写这篇博客的时候在火车上,使用的是Win10电脑,只能等到家之后验证代码,后续会贴到群共享,或者你也可以按照文档自己尝试。

欢迎加群542633085一起交流 请备注你的技术方向

posted @ 2022-08-26 19:18  杜文龙  阅读(627)  评论(0编辑  收藏  举报