以下说明包含成功实现推送通知的关键信息。
重要说明: |
---|
我们建议设置一个经过身份验证的 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)