我正在尝试按照http://msdn.microsoft.com/en-us/library/windows/apps/hh913756.aspx在Windows8中编写推送通知示例。我已将我的应用与商店相关联,并收到了该应用的通知渠道。但是当我将它传递给我的云服务(它只是一个从查询字符串中获取通道URI的网站)来获取访问令牌时,HTTP请求总是超时。但是当我尝试使用SID和SecretKey从应用程序中获取访问令牌时,它会成功。当我尝试使用http://31daysofwindows8.com/push进行测试时,我收到了一个例外情况“频道网址与来电应用不兼容”。根据我的理解,云服务不需要与商店关联或配置为推送通知,它需要的只是SID和SecretKey来获取访问令牌。不确定我的假设/理解是否错误。
谢谢, 索里亚
答案 0 :(得分:4)
使用Cordova for Windows,我发现,应该通过菜单命令将应用程序与Windows应用商店中的应用相关联,然后存储" - > "将应用程序与商店关联......"。
但即使在" Store" - > "将应用程序与商店关联...",无法传递推送消息。
问题是,应用程序仍然分配了默认的CordovaApp_TemporaryKey.pfx。
在我将新的CordovaApp.Windows_StoreKey.pfx复制到CordovaApp_TemporaryKey.pfx后,邮件传递成功。
答案 1 :(得分:2)
我刚刚测试了http://31daysofwindows8.com/push,它对我来说很好。云服务确实需要SID和密钥来代表您的应用程序与WNS进行身份验证,因此从这个意义上说它们是关联的,但对于http://31daysofwindows8.com,关联是非常临时的,因为您只需输入它们作为输入(和请注意,他们使用该工具处于明文中。)
您需要使用从Windows 8应用程序(通过CreatePushNotificationChannelForApplicationAsync)获得的URI,使用完全用于获取OAuth访问令牌的相同SID和密钥。当您将该应用与商店信息中心中的配置文件相关联时,可以为您进行适当的设置。
听起来这就是你所做的,但是你得到的错误具有尝试使用通过一个SID / Key获得的通道URI来发送使用不同SID / Key进行身份验证的通知的标志。请注意,如果要卸载并重新安装Win 8应用程序(Visual Studio中“调试”选项卡上的选项),这也会使以前获取的URI无效;但是,就我而言,31daysofwindows8网站报告了一个被撤销的URI,而不是“不兼容的”。
对于超时的云服务,您在发送时是否对URI进行了URL编码?
最后,它与你的具体问题有点相似,但如果你没有看过Windows Azure Mobile Services,它的作用就是消除滚动你自己的服务来做这一切的痛苦。有一个完全免费的等级,当您的应用程序取得巨大成功时,总能够增加更多的马力。