2

我正在测试 Windows Phone 7.5 推送通知。我有 3 种不同的推送类型(Toast、Tile 和 Raw)工作正常,并且能够毫无问题地从单元测试和 Web 应用程序发送消息并在我的 WP 应用程序中接收它们。我希望能够向推送通知添加额外的属性,而 Raw 推送类型对我来说非常完美,我可以向推送消息添加自定义键/值对或其他任何内容,并将其提取到手机应用程序中。但是,我刚刚发现它仅在应用程序正在运行并且我的单元测试失败(在单元测试中收到抑制的通知状态)时才有效,而电话应用程序未运行(检查文档也证实了这一点)。无论如何,是否可以为 toast 或 tile 消息添加额外的属性(键/值),或者我可以以其他方式使用 raw ?Toast 通知似乎仅限于标题属性和实际消息属性,但我需要添加其他数据。

只是想知道是否有人有任何建议/解决方法?

4

2 回答 2

7

我使用的一般做法是最初向设备发送原始通知,并在消息中嵌入电话可用数据。如果我的应用程序当前正在运行,那么我可以处理原始消息的内容并立即在手机上使用它。但是,如果应用程序当前未在手机上运行,​​您将收到来自推送服务器的通知,即消息无法传递。如果我收到此回复,我会发送 Toast / Tile 通知。

使用 Toast 通知,您可以访问的唯一参数是启动应用程序的 URI。这是用wp:param消息的节点指定的。例如。

<wp:Notification xmlns:wp="WPNotification">
  <wp:Toast>
    <wp:Text1>Toast Title</wp:Text1>
    <wp:Text2>Toast sub title</wp:Text2>
    <wp:Param>/MainPage.xaml?LaunchedFrom=A%20Toast%20Notification</wp:Param>
  </wp:Toast>
</wp:Notification>

如果用户点击此 toast 通知,您的应用程序将启动并导航到MainPage.xaml. 您可以访问通过NavigationContext.QueryString.

注意:该wp:Param节点只能发送到 Mango(及以上)设备。此外,整个内容必须少于 256 个字符,否则您将收到PushErrorTypeMessageBadContent错误消息。(感谢 Ritch Melton 指出这一点)。更多信息可从MSDN 上的为 Windows Phone 发送推送通知页面获得。

于 2012-04-19T23:54:09.043 回答
0

正如您所发现的,Microsoft 推送通知服务对您可以发送和接收的消息类型非常严格。这些推送通知的目的是提供简单的推送更新,而不是提供大量数据。灵活的 Raw 类型似乎符合要求,直到您发现:

您可以使用原始通知将信息发送到您的应用程序。如果您的应用程序当前未运行,原始通知将在 Microsoft 推送通知服务上被丢弃,并且不会传送到设备。

但是,如果您向应用程序发送 toast 通知,则当用户单击 toast 时,应用程序将启动。当您的应用程序启动时,您应该检查服务并检索您尝试从 Web 服务或其他远程机制发送的数据。

于 2012-04-19T23:53:25.053 回答