以下說明包含成功實現推播通知的關鍵資訊。
重要說明: |
我們建議設定一個經過身分識別驗證的 Web 服務來向 Microsoft 推播通知服務發送通知,因為通過 HTTPS 介面進行通訊更加安全,經過身分識別驗證的 Web 服務對於它們每天可以發送的推播通知數量沒有限制。另一方面,未經身分識別驗證的 Web 服務限制為每天每個訂閱 500 推播通知的速率。有關更多資訊,請參閱設定已驗證的 Web 服務以發送 Windows Phone 的推播通知。 |
有一個限制,即,每個應用程式只能有一個推播通知通道。這個唯一的通道適用於可供應用程式使用的所有通知類型。如果應用程式超過此限制,則引發 InvalidOperationException(PushNotificationChannelQuotaExceeded) 異常。有關更多資訊,請參閱接收 Windows Phone 的推播通知。
還有一個限制,即,每個裝置只能有 30 個推播通知通道。如果應用程式嘗試註冊一個推播通知通道,但已達到每個裝置 30 個推播通知通道的限制,則引發 InvalidOperationException(PushNotificationChannelQuotaExceeded) 異常。有關更多資訊,請參閱接收 Windows Phone 的推播通知。
如果將推播通知通道綁定到應用程式中的 Toast 通知,則必須符合特定應用程式類型的其他要求中的“推播通知應用程式”一節以及應用程式策略中的第 2.9 節所列的要求。
推播通知不應該包含個人標識資訊。
開發使用推播通知的應用程式的一個挑戰就是,模擬器不受真實條件的限制並且始終擁有可靠的串連。在模擬器中工作可靠的通知在實際裝置上可能工作不可靠,因為串連強度會發生變動或者網路電訊廠商配置不相容。如果串連未處於可靠狀態,則開發人員可能希望限制通知的數量,直到處於正常狀態為止。開發人員應該儘可能在多個裝置和行動電信業者上測試他們的應用程式。通過針對真實串連狀態以防禦方式進行編程,開發人員可以適當地使其應用程式中的功能降級。
通知的最大大小為 1 KB(對於標題)和 3 KB(對於負載)。超過這些限制的通知將被丟棄並且將引髮狀態為 WebExceptionStatus.ProtocolError 的 WebException。
推送用戶端不能通過 SOCKS 代理工作。如果裝置過渡到需要 SOCKS 代理的網路,則該裝置將不能使用推送服務。如果在模擬器上測試,則必須配置 SOCKS 代理。有關更多資訊,請參閱 Windows Phone 模擬器的代理支援。
嚮應用程式發送資訊時 Web 服務可以使用三種類型的推播通知:Toast、磁貼和 Raw 通知。
Toast 通知
Toast 通知顯示在螢幕的頂部,用於通知使用者某個事件,如新聞或天氣警報。除非使用者通過向右輕拂關閉通知,否則 Toast 將顯示大約 10 秒鐘。如果使用者點按 Toast,則會啟動發送該 Toast 通知的應用程式。
Toast 通知的元素如下:
標題。緊挨著應用程式圖示之後顯示的黑體字字串。在 XML 結構描述中,該字串定義為 Text1 屬性。
內容。緊挨著“標題”之後顯示的非黑體字字串。在 XML 結構描述中,該字串定義為 Text2 屬性。
參數。如果使用者點按 Toast,則將參數值傳遞給您的應用程式,而不進行顯示。該參數可以指示應用程式應該啟動到的頁面。該參數還包含傳遞到應用程式的名稱-值對。在 XML 結構描述中,該字串定義為 Param 屬性。
重要說明: |
用於設定 Parameter 屬性的 Toast 通知只能發送到運行 Windows Phone OS 7.1 或更高版本的裝置。將具有 Parameter 屬性的通知發送到 Windows Phone OS 7.0 裝置將導致 PushErrorTypePayloadFormatInvalid 錯誤,並且通道會關閉。 |
可以顯示的文本數量取決於在 Toast 訊息中使用的字元以及“標題”(粗體)和“內容”(非粗體)的長度。如果只設定了一個“標題”,則可以顯示大約 40 個字元,之後的字元將被截斷。如果只設定了“內容”,則可以顯示大約 47 個字元。如果一個 Toast 在“標題”和“內容”之間平均拆分,則可以顯示大約 41 個字元。無法放在 Toast 上的任何文本都將被截斷。
Windows Phone 在“標題”和“內容”的左側顯示一個小版本的應用程式圖示。儘管您可以定義與您的應用程式關聯的表徵圖,但不能為一個 Toast 通知傳遞不同的表徵圖。
磁貼通知
磁貼通知可用於更新“開始”螢幕上的磁貼。有關磁貼屬性以及如何更新磁貼屬性的更多資訊,請參閱 Windows Phone 的磁貼概述。可以使用磁貼通知更新位於磁貼正面的以下屬性。
標題。指示應用程式標題的字串。標題必須適合單行文本並且不應該比實際磁貼寬。標題中大約可以包含 15 個字元,多餘部分將被截斷。
BackgroundImage。顯示在磁貼正面的映像。建議您在磁貼正面始終擁有背景映像。
計數(也稱為徽章)。從 1 到 99 的整數值。如果未設定“計數”的值或者設定為 0,則不會在磁貼上顯示圓形映像和值。
可以使用磁貼通知更新位於磁貼背面的以下屬性。
BackTitle。顯示在磁貼背面底部的字串。BackTitle 必須適合單行文本並且不應該比實際磁貼寬。標題中大約可以包含 15 個字元,多餘部分將被截斷。
BackBackgroundImage。顯示在磁貼背面的映像。
BackContent。顯示在磁貼背面中心的字串。磁貼中大約可以包含 40 個字元,多餘部分將被截斷。
重要說明: |
用於設定 BackTitle、BackBackgroundImage 或 BackContent 屬性的磁貼通知或通過在負載中設定磁貼 ID 來指定次要磁貼的通知只能發送到運行 Windows Phone OS 7.1 或更高版本的裝置。將具有這些值的通知發送到 Windows Phone OS 7.0 裝置將導致 PushErrorTypePayloadFormatInvalid 錯誤,並且通道會關閉。 |
映像上一些用於 BackgroundImage 和 BackBackgroundImage 屬性的附加說明:
磁貼映像可以是 .jpg 或 .png 檔案。
由於網路可變性和效能原因,請考慮對磁貼映像使用本地資源。
對映像使用具有透明部分的 .png 將允許使用者透過它顯示佈景主題色彩。
磁貼為 173 x 173 像素。如果您提供的映像具有不同的尺寸,則會將其展開以適合 173 x 173 像素的大小。
可以使用本地或遠端資源作為映像。如果使用本地資源,則該資源必須作為 XAP 包的一部分安裝。
如果使用者關閉磁貼通知,則磁貼應該包含常規資訊。不應該包含任何過時的資料,如到期的天氣預報或流量報告。
不支援 https 作為遠程映像。
遠程映像限制為 80 KB 或更少。如果大於 80 KB,則將不會下載。
遠程映像必須在 30 秒或更少的時間內下載,否則將不會下載。
如果 BackgroundImage 或 BackBackgroundImage 映像由於任何原因無法載入,則不會更改在更新中設定的其他任何屬性。
Raw 通知
可以使用 Raw 通知向您的應用程式發送資訊。如果您的應用程式當前未運行,則 Raw 通知會在 Microsoft 推播通知服務上丟棄並且不會發送到裝置。
原文地址:http://msdn.microsoft.com/zh-cn/library/ff402558(v=vs.92)