Windows 8 學習筆記(十九)–.背景工作BackgroundTask(II)

來源:互聯網
上載者:User

 BackgroundTask and LockScreen

 LockScreen鎖屏,我們在使用電腦時經常會鎖屏,當我們鎖屏時,我們也可以看到一些訊息,如未讀郵件數、某聊天軟體的新訊息數等,這就是BackgroundTask與LockScreen之  間的共同實現了~

 一般LockScreen的資訊包括以下幾部分:

(1) 日期與時間(2) 網路狀態(3)電池量 這是最基本的幾部分,當然還有系統自動化佈建的鎖定畫面 app,如郵箱、日曆、資訊等,那我們自己建立的應用如何?呢?

 

 在這之前,先瞭解LockScreen的基本內容~   1、什麼情況下需要將應用程式設定為鎖定畫面 app?      鎖定畫面 app一般用於向使用者報告重要或有意義的訊息,且訊息內容簡潔即時,使使用者一瞥螢幕,就能看到最新的資訊   2、聲明LockScreen應用能力     在應用程式的Package.appxmanifest中需要聲明鎖屏功能和螢幕顯示的徽章,具體如下 :

      

   3、在程式中可以提示用於是否將應用放置於鎖屏上,通過BackgroundExecutionManager.RequestAccessAsync()會出現一個對話方塊,當選擇“allow”,程式將會放置於鎖屏中,但鎖定畫面 app最多隻能有7個,當超過七個,會詢問使用者替換哪個應用。

   我們也可以手動將瓦片程式設定為鎖定畫面 app:

     

   

   下面我們實現一個簡單的定時推送資訊至LockScreen APP:

    第一步:建立一個空白頁面PushNotification.xaml,上面放置三個按鈕,分別實現設定APP到LockScreen、開啟後台定時推送訊息、登出背景工作三個按鈕

    

    第二步:建立一個背景工作類NotificationBackTask.cs檔案,功能就是一人簡單的定時器,實現定時推送,代碼與前一篇的很相似,通過    BackgroundTaskProgressEventHandler去觸發,目前我還沒找到其它的方式去觸發主程式,還望高手指教一下~

    第三步:設定主工程中的Package.appxmanifest檔案

     

    同樣需要在聲明中添加背景工作 :

     

    第四步:實現PushNotification.xaml的後台代碼
   點擊”Set LockScreen App”按鈕:   

    async private void btnSetLockScreen_Click(object sender, RoutedEventArgs e) 
        {
            BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
            switch (status)
            {
                case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:
                    tbInfo.Text = "This app is on the lock screen and has access to Always-On Real Time Connectivity.";
                    btnSendBadge.IsEnabled = true;                   
                    break;
                case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:
                    tbInfo.Text = "This app is on the lock screen and has access to Active Real Time Connectivity.";
                    btnSendBadge.IsEnabled = true;                   
                    break;
                case BackgroundAccessStatus.Denied:
                    tbInfo.Text = "This app is not on the lock screen.";
                    break;
                case BackgroundAccessStatus.Unspecified:
                    tbInfo.Text = "The user has not yet taken any action. This is the default setting and the app is not on the lock screen.";
                    break;
                default:
                    break;
            }}

  若APP沒有加入LockScreen,會出現以下畫面:

    

    點擊“Send Badge BackTask”按鈕,同樣需要先註冊task   

    var builder = new BackgroundTaskBuilder();

builder.Name = SampleBackgroundTaskName;
builder.TaskEntryPoint = SampleBackgroundTaskEntryPoint;
SystemTrigger trigger = new SystemTrigger(SystemTriggerType.UserAway, false);
builder.SetTrigger(trigger);
SystemCondition condition = new SystemCondition(SystemConditionType.UserPresent);
if (condition != null)
{
    builder.AddCondition(condition);
}
task = builder.Register();
task.Completed += task_Completed;
task.Progress += task_Progress;

 

    在task_Progress事件中實現訊息的推送:   

 void task_Progress(BackgroundTaskRegistration sender, BackgroundTaskProgressEventArgs args) 

{

 Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
       {
          var taskRegistration = sender as IBackgroundTaskRegistration;
          var progressArgs = args as BackgroundTaskProgressEventArgs;

          if ((taskRegistration != null) && (progressArgs != null))
          {//BadgeNumericNotificationContent badgeContent = new                          BadgeNumericNotificationContent(progressArgs.Progress);
                                                     //BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badgeContent.CreateNotification());

              ITileWideSmallImageAndText03 tileContent =                  TileContentFactory.CreateTileWideSmallImageAndText03();
              tileContent.TextBodyWrap.Text = "This tile notification has an image, but it won't be displayed on the lock screen";
              tileContent.Image.Src = "ms-appx:///Assets/tile-sdk.png";
              tileContent.RequireSquareContent = false;
            }
         });
}  

    

 

以上實現了兩種推送,一種是簡單badge,還有一種是Tile資訊帶文本資訊的,對於後一種帶詳細資料,需要在PC Settings裏手動設定,文本資訊才會在LOCKSCREEN中顯示,如下:

 

   以上就是LockScreen的簡單介紹,可能還有些不足之處,還望高手指點~ 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.