定期通知概觀

定期通知也稱為輪詢通知,可以在固定的時間間隔從雲端服務下載內容來更新磚和徽章。 若要使用定期通知,用戶端應用程式程式碼需提供兩項資訊:

  • Web 位置的統一資源識別元 (URI),Windows 會輪詢此位置以查看您應用程式的磚或徽章是否有更新
  • 輪詢 URI 的合適頻率

定期通知可讓您的應用程式以最低限度的雲端服務與客戶投資,取得動態磚更新。 定期通知是將相同內容散發給廣大受眾的良好傳遞方法。

請注意,您可以下載 Windows 8.1 的推播和定期通知範例,並在您的 Windows 10 應用程式中重複使用其原始程式碼,藉此進一步了解。

 

運作方式

定期通知會要求您的應用程式裝載雲端服務。 安裝應用程式的所有使用者都會定期輪詢該服務。 在每個輪詢間隔,例如每小時一次,Windows 會將 HTTP GET 要求傳送至 URI、下載要求的磚或徽章內容 (XML 形式) 以回應要求,並在應用程式的磚上顯示內容。

請注意,定期更新無法與快顯通知搭配使用。 快顯最適合透過排定推播通知傳遞。

URI 位置和 XML 內容

任何有效的 HTTP 或 HTTPS 網址都可以做為可供輪詢的 URI。

雲端伺服器的回應包含下載的內容。 從 URI 傳回的內容必須符合徽章 XML 結構描述規格,且必須經過 UTF-8 編碼。 您可以使用定義的 HTTP 標頭來指定通知的到期時間或標籤。

輪詢行為

呼叫下列其中一種方法來開始輪詢:

當您呼叫其中一種方法時,就會立即輪詢 URI,且磚或徽章會更新為接收到的內容。 在此初始輪詢之後,Windows 會繼續依要求的時間間隔提供更新。 輪詢會繼續執行,直到您明確將它停止 (使用 TileUpdater.StopPeriodicUpdate)、您的應用程式解除安裝,或是有次要磚的情況下將磚移除,就會停止輪詢。 否則,即使您的應用程式不曾再次啟動,Windows 仍會繼續輪詢磚或徽章的更新。

週期間隔

週期間隔是做為上列方法的參數指定。 請注意,雖然 Windows 會進離依要求進行輪詢,但間隔並不準確。 要求的輪詢間隔最長可能延遲達 15 分鐘,以 Windows 的判斷為準。

開始時間

您可以選擇性地指定在一天中的特定時間開始輪詢。 應用程式每天只會變更其磚內容一次,請將這點納入考量。 在這種情況下,建議您在接近您更新雲端服務的時間執行輪詢。 例如,某個日常購物網站在上午 8 點發布當天的優惠內容,則可在上午 8 點過後不久執行輪詢以查看新的磚內容。

如果您提供開始時間,則第一次呼叫方法時,就會立即輪詢內容。 接著定期輪詢會在所提供開始時間的 15 分鐘內開始執行。

自動重試行為

只有在裝置處於連線狀態時,才會輪詢 URI。 如果有網路,但因故無法連線 URI,則會略過這次輪詢間隔,並在下一個間隔再次輪詢 URI。 如果裝置在達到輪詢間隔時處於關閉、睡眠或休眠狀態,則會在裝置從關閉或睡眠狀態恢復時輪詢 URI。

處理應用程式更新

如果您發行的應用程式更新會變更輪詢 URI,則應新增每日時間觸發程序背景工作,以使用新的 URI 呼叫 StartPeriodicUpdate,確保磚使用新的 URI。 否則,如果使用者收到您的應用程式更新,但未啟動您的應用程式,其磚仍會使用舊的 URI,這樣可能因為 URI 現已無效或傳回的承載參考已不存在的本機影像而無法顯示。

磚和徽章通知的到期日

根據預設,定期磚和徽章通知會在下載時起算三天後到期。 當通知到期時,內容會從徽章、磚或佇列中移除,且不再對使用者顯示。 最佳做法是對所有磚和徽章通知設定明確的到期時間 (使用適合您應用程式或通知的時間),以確保內容不再相關時不會持續存在。 明確到期時間對於已定義存留期的內容而言很重要。 它同時確保在您的雲端服務無法聯繫,或使用者長時間中斷網路連線的情況下,會移除過時的內容。

您的雲端服務會藉由在回應承載中包含 X-WNS-Expires HTTP 標頭,來設定通知的到期日期和時間。 X-WNS-Expires HTTP 標頭遵循 HTTP-date 格式。 如需詳細資訊,請參閱 StartPeriodicUpdateStartPeriodicUpdateBatch

例如,在股市的有效交易日期間,您可以將股票價格更新的到期日設定為輪詢間隔的兩倍 (例如,如果您每半小時輪詢一次,則設定為收到後一小時)。 另一個範例是,新聞應用程式可能會判斷每日新聞磚更新的適當到期時間為一天。

通知佇列中的定期通知

您可以使用定期磚更新搭配通知循環。 根據預設,[開始] 畫面上的磚會顯示單一通知的內容,直到新通知將它取代。 當您啟用循環時,佇列中最多會維持五則通知,而磚會循環顯示這些通知。

如果佇列已達到五個通知的容量,則下一則新通知會取代佇列中最舊的通知。 不過,藉由在通知上設定標籤,就可以改變佇列的取代原則。 標籤是應用程式特定且不區分大小寫的字串,最多可包含 16 個英數字元,並且是在回應承載的 X-WNS-Tag HTTP 標頭中指定。 Windows 會將傳入通知的標籤與佇列中已有的所有通知的標籤進行比較。 如果找到相符項目,則新通知會取代具有相同標籤的佇列通知。 如果未找到相符項目,則會套用預設取代規則,且新通知會取代佇列中最舊的通知。

您可以使用通知佇列和標籤來實作各種不同的通知情境。 例如,股票應用程式可傳送五則通知,而每則通知分別與不同的股票相關,且都會加上股票名稱標籤。 這樣可防止佇列包含相同股票的兩則通知,較舊的通知會過期。

如需詳細資訊,請參閱使用通知佇列

啟用通知佇列

若要實作通知佇列,請先啟用磚的佇列 (請參閱如何搭配本機通知使用通知佇列)。 啟用佇列的呼叫只需要在應用程式的存留期內執行一次,不過,即使每次啟動應用程式時都呼叫也無妨。

一次輪詢多則通知

您必須為希望 Windows 針對磚下載的每一則通知提供唯一 URI。 使用 StartPeriodicUpdateBatch 方法即可一次提供最多五個 URI 來搭配通知佇列使用。 針對單一通知承載,每個 URI 都會同時或近乎同時進行輪詢。 每個輪詢的 URI 都可傳回自己的到期日和標籤值。