期望的行为是拦截应用程序中的原始通知(不需要后台任务或用户放弃他们宝贵的后台任务点之一)。根据http://msdn.microsoft.com/en-us/library/windows/apps/xaml/JJ709907(v=win.10).aspx上的示例代码,我创建了一个事件处理程序来拦截原始通知。在我创建的一个应用程序中,使用 Azure 移动服务通过 WNS 发送通知,事件处理程序被触发并且效果很好。
但在第二个应用程序中,它不起作用。通知似乎很好。也就是说,当我的 Web 服务让 WNS 发送 Toast 通知时,它就会显示出来。此外,我可以调试/跟踪原始通知,它们似乎也被创建得很好。我缺少一些设置吗?
我通过 Fiddler 看到了请求和结果,但可能只是因为我在本地运行 MVC 4.0 Web API 项目???请求如下所示:
{Channel URI: https://bn1.notify.windows.com/?token=AgYAAACuGgtx...
TTL: -
Cache: no
Request for status: no
Tag:
Priority: Normal
Token retry count: 0
really
}
然后我可以跟踪这一点(全部通过 WNSRecipe/NotificationsExtensions 代码完成,该代码是 WAT 示例的一部分)。我得到:
{Sent WNS notification: Received
Channel URI: https://bn1.notify.windows.com/?token=AgYAAACuGgtx...
Notification status: Received
Status code: OK
Device connection status: NotApplicable
Error description:
Debug Trace: BN1WNS2011828
MessageId: 3FA318CE5C48E9CF
Timestamp: 3/8/2013 9:23:18 PM -07:00
- REQUEST ------------------------------------------------------------------
X-WNS-Type : wns/raw
Content-Type : application/octet-stream
Authorization : Bearer EgAaAQMAAAAEgAAACoAAx1d3DqT9jZxJdOFIUJ9...
Host : bn1.notify.windows.com
Content-Length : 6
really
- RESPONSE -----------------------------------------------------------------
X-WNS-NOTIFICATIONSTATUS : received
X-WNS-MSG-ID : 3FA318CE5C48E9CF
X-WNS-DEBUG-TRACE : BN1WNS2011828
Content-Length : 0
Date : Sat, 09 Mar 2013 04:23:11 GMT
}
结果:
{Channel URI: https://bn1.notify.windows.com/?token=AgYAAACuGgtx...
Notification status: Received
Status code: OK
Device connection status: NotApplicable
Error description:
Debug Trace: BN1WNS2011828
MessageId: 3FA318CE5C48E9CF
Timestamp: 3/8/2013 9:23:18 PM -07:00
}
所以我假设正在发送通知。
更新:我已经返回并仔细检查了设置,并在应用程序中添加了一个测试按钮来发布我的请求。(所以我知道该应用程序处于活动状态,毫无疑问)。我添加RequestForStatus = true
到我的通知请求中,并在事件查看器中返回“设备连接状态:已连接”以及新的日志条目集。