ShellTileSchedule;定時更換應用程式在Tile的背景圖片

在WP7中,當應用程式安裝完成之後就會出現在應用程式的列表當中,而在應用程式上長按之後,就會出現Pin to start的功能;這個功能是能夠讓你將你的應用程式顯示在首頁的Tile畫面上;而應用程式放到Start畫面上之後,最會最常被使用者看到、點選的,那麼我們就會希望幫在Start畫面上的應用程式上加上一些訊息,很常見的例如說Email的應用程式會顯示有幾封新的郵件這樣;而除了使用文字的方式來顯示訊息之外,也可以變更背景的圖片,來讓使用者有不一樣的感覺,例如說一個顯示目前天氣狀況的應用程式,用鮮明的圖片來做顯示就會比裡用單純使用文字說明來的更好。那麼,該怎麼變更應用程式的背景圖片呢?

在WP7中,當應用程式安裝完成之後就會出現在應用程式的列表當中,而在應用程式上長按之後,就會出現Pin to start的功能;這個功能是能夠讓你將你的應用程式顯示在首頁的Tile畫面上;而應用程式放到Start畫面上之後,最會最常被使用者看到、點選的,那麼我們就會希望幫在Start畫面上的應用程式上加上一些訊息,很常見的例如說Email的應用程式會顯示有幾封新的郵件這樣;而除了使用文字的方式來顯示訊息之外,也可以變更背景的圖片,來讓使用者有不一樣的感覺,例如說一個顯示目前天氣狀況的應用程式,用鮮明的圖片來做顯示就會比裡用單純使用文字說明來的更好。那麼,該怎麼變更應用程式的背景圖片呢?

更新應用程式的背景圖片可以使用Push Notification來做,Push Notification能夠做到滿多事情的,而如果說不想要使用Push Notification呢?今天要跟各位介紹的就是另一種方式,利用ShellTileSchedule來做;ShellTileSchedule能夠定時的連到你指定的位置去下載圖片,下載完成之後,就會變成應用程式的背景圖片了。在開始之前,應用程式使用的圖片有一定的規格,建議您依照對應的規格來做圖片的處理,您可以參考在MSDN的這篇介紹Windows Phone 7 應用程式圖示製作指南,上有有相當詳盡的說明喔。

接下來來看看程式的部分,使用ShellTileSchedule的程式碼相當的簡單,例如下面的樣子
            sts.Interval = Microsoft.Phone.Shell.UpdateInterval.EveryHour;
            sts.StartTime = DateTime.Now;
            sts.RemoteImageUri = new Uri(@"http://bauann.myweb.hinet.net/test01.png");
            sts.Start();

像是上面的程式碼便會在每個小時到筆者放圖片的位置去下載圖片,並且設定為應用程式的背景圖片;接來來來看看一些屬性的用途是做甚麼用的
  1. Interval Interval屬性是設定更新的頻率,可以設定為一小時、一天、一周或是一個月
  2. Recurrence Recurrence是設定更新的方式,是用間隔的(也就是Interval)或是只要進行一次
  3. RemoteImageUri 這個屬性就是設定要更新圖片的擺放位置了
  4. MaxUpdateCount MaxUpdateCount是設定要進行更新幾次,在這個次數之後,Schedule就會失效了
  5. StartTime 這個屬性是設定排程開始的時間
這樣子應該就了解大致的使用方式了;而如果想要測試這個動作就要有點耐心了,因為更新的間隔最短是一個小時阿..Orz Orz 聰明的你也可能會想到那把StartTime設定成現在時間的59分鐘之前呢?也就是在過1分鐘就會更新了?殘念,這是不行的,這樣子設定事不會發生錯誤,但是仍然是看不到效果,一定要等到一個小時,因此測試的話最好是丟到實機上面,隔一段時間之後來看效果,而如果用模擬器來做測試,那就真的要有點耐心了。

最後再來看一下要注意的事項
  • 在裝置鎖定(或是idle)的狀態之下,Tile的背景更新排程是不會進行的,但如果排程時間到了之後,裝置一離開鎖定狀態,就會立即做更新的動作了
  • 背景圖片的大小限制是在80KB以下,而下載的時間是以15秒為限;假如下載超過15秒鐘而失敗的話,連續3次失敗之後,排程作業就會被移除不再進行了
簡單的跟各位介紹到這邊,有興趣的朋友可以玩玩看喔。
參考資料
How to: Update Your Tile Without Push Notifications for Windows Phone
ShellTileSchedule Class