所需的行为是拦截应用程序中的原始通知(不需要后台任务或用户放弃其宝贵的后台任务点之一)。根据http://msdn.microsoft.com/en-us/library/windows/apps/xaml/JJ709907(v=win.10).aspx的示例代码,我创建了一个事件处理程序来拦截原始通知。在我创建的一个应用程序中,使用Azure移动服务通过WNS发送通知事件处理程序被触发并且效果很好。如何获取PushNotificationChannel.PushNotificationReceived事件处理程序来拦截通知?
但在第二个应用程序,它不工作。通知似乎很好。也就是说,当我的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
,并在“事件查看器”中获取“设备连接状态:连接”以及新的日志条目集。
当你说调试/跟踪原始通知似乎是**创建**罚款,是你看到他们被交付给客户(通过说Fiddler),而没有采取行动? – 2013-03-09 00:38:51
@ Jim O'Niel我为此添加了更多细节。我不确定它们是否被传送到Windows8/Win8应用程序。我只是看到他们,因为我在本地运行MVC应用程序。有没有办法让Fiddler直接拦截通知?谢谢,顺便说一下,你的博客文章有帮助。第二次想到 – Stonetip 2013-03-09 03:48:02
,跳过提琴手。在事件查看器>应用程序和服务日志> Microsoft> Windows>推送通知 - 平台是哪里(我相信)你应该看到什么到你的机器。我并不完全熟悉那里显示的内容,但可能值得一看,看看您是否看到错误或表示收到了该消息(包括工作和非工作情况下) – 2013-03-09 04:26:45