将 Toast 通知发送到正在运行的 WP7 应用程序的 XML 问题
Posted
技术标签:
【中文标题】将 Toast 通知发送到正在运行的 WP7 应用程序的 XML 问题【英文标题】:Xml Problem Sending Toast Notification to Running WP7 Application 【发布时间】:2010-11-01 22:46:46 【问题描述】:各位, 我已经运行了 WP7 的示例应用程序。我还有一个服务 (WCF) 和一个推送通知发送器 (WPF)。到目前为止,这看起来与微软在 WP7 培训套件中设置的推送通知安排非常相似。当我启动应用程序然后退出应用程序以返回主屏幕时,我能够成功发送 toast 通知 - 它出现在顶部,发出一点噪音,显示正确的文本,并在您启动我的应用程序时点击它。
但是,当我在应用程序在前台运行时向我的应用程序发送完全相同的 shell toast 通知时,我收到一条错误消息,抱怨根 XML 节点的字符无效。这个错误发生在 WP7 的深处,因为我的 toast 通知处理程序从未被调用,并且调试器无法向我显示生成错误的代码行。
我正在使用培训工具包中 WP7 推送通知示例附带的 NotificationSenderUtility 来发送通知。
如果有人知道为什么会发生这种情况或者我该如何解决它,我很想知道,因为我有一个演示,我将在周六的代码营中进行演示,并且推送通知应该是演示的一部分:)
这是我得到的堆栈跟踪:
在 System.Xml.XmlTextReaderImpl.Throw(异常 e) 在 System.Xml.XmlTextReaderImpl.Throw(Int32 res,String resString,String[] args) 在 System.Xml.XmlTextReaderImpl.Throw(Int32 res,字符串 resString) 在 System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() 在 System.Xml.XmlTextReaderImpl.ParseDocumentContent() 在 System.Xml.XmlTextReaderImpl.Read() 在 Microsoft.Phone.Notification.ShellObjectChannelInternals.ParseXMLToProperties(字符串 xmlString,IDictionary`2&propertyBag) 在 Microsoft.Phone.Notification.ShellObjectChannelInternals.OnNotificationReceived(IntPtr blob,UInt32 blobSize) 在 Microsoft.Phone.Notification.ShellObjectChannelInternals.ChannelHandler(UInt32 事件类型,IntPtr blob1,UInt32 blobSize1,IntPtr blob2,UInt32 blobSize2) 在 Microsoft.Phone.Notification.HttpNotificationChannel.Dispatch(对象 threadContext) 在 System.Threading.ThreadPool.WorkItem.doWork(对象 o) 在 System.Threading.Timer.ring()
谢谢, 凯文
【问题讨论】:
【参考方案1】:检查您在客户端和发件人上的代码是否符合最新文档。在测试期间,规范发生了变化。
How to: Send a Push Notification from a Web Service for Windows Phone
How to: Set Up a Notification Channel for Windows Phone
您在培训套件中使用的工具/代码可能尚未达到规范。
【讨论】:
培训套件中的代码基于 RTW,培训套件中的文档也是如此。我已经比较了培训工具包类使用的代码与它所期望的并且全部匹配的 XML。还要记住,当应用程序不在前台时,toast 工作。只有当应用程序不在前台运行时,它才会失败。另外,我在 WP7 应用程序中使用的代码不是来自培训工具包,而是来自您链接到“如何:为 windows phone 设置通知通道”的文档 我的意思是要检查发送 toast 的代码,看看您在培训套件中使用的工具是否不是最新的。 尽管培训套件已通过 RTW 版本的 SDK 认证,但我还是从我的应用程序中删除了所有的培训套件。令人惊讶的是,我自己发送 HTTP POST 而不是使用培训工具包课程解决了我的问题。该死。当“演示代码”实际上导致的问题多于解决的问题时,我讨厌它。 是的,有一些工作要让 doco 和培训材料与移动 sdks 保持同步。有时,随着团队追赶,它会有点滞后。在这种情况下,感觉这将是罪魁祸首。很高兴你被排序。好在它至少现在被记录在这里,直到它得到解决。以上是关于将 Toast 通知发送到正在运行的 WP7 应用程序的 XML 问题的主要内容,如果未能解决你的问题,请参考以下文章
Windows 10 Toast Notifications桌面应用程序