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一起交流 請備註你的技術方向