Windows 8 App 開發:在使用者鎖定螢幕時不跳通知 (HTML5/JavaScript)

Windows 8 有快顯通知 (toast notification) 的設計,可以跳出通知來提醒使用者一些事情,但是 Windows 8 沒有像 iOS 或 Android 一樣具有通知中心 (notification center) 的設計,這會造成一個嚴重的問題是,如果使用者處於畫面鎖定時,快顯通知跳出來不久後就會消失,之後使用者完全無法知道 App 曾經跳了哪些通知。

由於不打算架設伺服器提供推播功能,App 已經實作每 15 分鐘就會執行一次背景工作,去比對有沒有新資料,如果有的話,就跳快顯通知。如果此時使用者的畫面是鎖定畫面,就可能會漏掉通知,因此打算在使用者鎖定時,就把通知關掉,等到下次使用者登入繼續使用時,再跳出快顯通知。

翻了一下,SystemConditionType 裡面有 userPresentuserNotPresent 兩個條件可以用,當使用者不在時,就不觸發背景工作。

用法很簡單,只要在註冊背景工作的時候加上:

var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();

builder.addCondition(new Windows.ApplicationModel.Background.SystemCondition(
Windows.ApplicationModel.Background.SystemConditionType.userPresent));

這樣就可以了!

另外像是如果只想要在有網路連線的時候才觸發背景工作,也可使增加 internetAvailable 條件,這樣沒有網路的時候就不會被觸發。

不過這種條件牽扯到使用者是否正在使用電腦,比較難進行測試,不知道有沒有好的方式?

關於註冊背景工作可參考:Background task sample

 

Leave a Reply

Your email address will not be published. Required fields are marked *