我目前正在为Windows Phone 8.1开发基于Cordova(版本4.0.0)的移动应用程序。
我从API Java-MPNS(来自notnoop的github)实现了Java代码,以将通知发送到我的设备。
当我将通知消息推送到MPNS时,出现以下错误:
HTTP / 1.1 400错误请求[内容长度:0,X-WNS-MSG-ID:50267BB8627BC17D,X-WNS-DEBUG-TRACE:DB5SCH101121935,严格传输安全性:max-age = 31536000; includeSubDomains,WWW身份验证:承载,日期:2016年1月7日星期四,格林尼治标准时间] org.apache.http.conn.BasicManagedEntity@1ab5b13
从Windows Phone 8的Push Notification Service响应代码文档中,此错误代码表示XML文档或通知URI格式错误。
这是我的通知URI:
https://db5.notify.windows.com/?token=AwYAAAC%2fHaOBh3zOgFjUbZuCSMgzXY29aQDT9wKfpkiPsd85WKBA8muqx4is4r1nBVXQOtRKqe5cc%2fxat7hq6sZBruvm6nQF7p9Sl71TIiqnGvlrdDDw6v0anax4bXUCtflPwEc%3d
这是XML文档(由Java-MPNS从Java类TileNotification生成):
<?xml version="1.0" encoding="utf-8"?>
<wp:Notification xmlns:wp="WPNotification">
<wp:Tile>
<wp:Count>1</wp:Count>
<wp:Title>Demo App Windows</wp:Title>
<wp:BackContent>New notification</wp:BackContent>
</wp:Tile>
</wp:Notification>
当我比较“如何为Windows Phone 8发送和接收Tile通知”文档中的XML文档和XML文档时,看不到任何区别或错误。关于我的通知URI,我认为链接是正确的。
但是,http://db3.notify.live.net和https://db5.notify.windows.com有什么区别?
有没有人已经使用过此API?您是否有解决方法的想法?
最佳答案
* .notify.live.net是MPNS频道URI,而* .notify.windows.com是WNS频道URI。您正在获取WNS频道URI(又将您的应用设置为使用WNS),但是您正在尝试使用MPNS。 400是因为WNS希望您使用OAuth进行身份验证。
我会仔细检查您是否真的要为新应用使用MPNS而不是WNS。在这一点上,MPNS被认为是传统的。如果您想在某个时候将应用程序移植到Windows上以构建UWP,则需要切换到WNS。可以在这里找到更多详细信息/指南:https://msdn.microsoft.com/en-us/library/windows/apps/dn642085(v=vs.105).aspx
如果确实需要使用MPNS,请确保使用MPNS API来请求频道:https://msdn.microsoft.com/en-us/library/windows/apps/microsoft.phone.notification(v=vs.105).aspx,而不是WNS API:https://msdn.microsoft.com/en-us/library/windows/apps/hh465412.aspx。