天天看點

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