Xamarin中获取UWP WNS通道URI失败问题咨询
我之前在做Xamarin Windows推送功能的时候也踩过类似的坑,结合你给出的信息,给你几个具体的排查和解决方向,应该能帮到你:
排查WNS推送通道获取失败的问题
1. 核对SDK与系统版本的兼容性
你用的是Windows 10 SDK Anniversary Edition 1493版本,对应的Windows 10系统最低版本是1607。首先确认你的本地Windows 10机器版本是否达标——可以按下Win+R输入winver查看系统版本号。如果系统版本低于SDK版本,API调用很可能因为兼容性问题失败。
2. 重新验证应用关联的配置细节
虽然你已经完成了应用关联,但还是要仔细核对这些关键信息:
- 确保Package SID、客户端密钥和Windows开发者后台的信息完全一致,不要有空格、大小写错误或者复制遗漏
- 在Visual Studio里右键项目→应用程序→打包,确认“关联应用商店”后的Package信息和后台完全匹配
- 打开
Package.appxmanifest文件,检查Identity节点的Name、Publisher属性,必须和开发者后台的应用信息一一对应
3. 调整通道获取代码的调用时机
有时候在应用启动初期(比如OnLaunched刚执行时)调用PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(),会因为系统推送服务未就绪而失败。建议把这个调用延迟到应用完全启动后,比如主页面加载完成时:
// 示例:在主页面的Loaded事件中调用 private async void MainPage_Loaded(object sender, RoutedEventArgs e) { try { var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); // 成功获取通道后的逻辑 System.Diagnostics.Debug.WriteLine($"获取到的通道URI: {channel.Uri}"); } catch (Exception ex) { // 捕获详细异常信息方便排查 System.Diagnostics.Debug.WriteLine($"异常类型: {ex.GetType().Name}"); System.Diagnostics.Debug.WriteLine($"异常消息: {ex.Message}"); if (ex.InnerException != null) { System.Diagnostics.Debug.WriteLine($"内部异常: {ex.InnerException.Message}"); } } }
4. 再次确认网络与防火墙设置
你已经试过不同网络,但还是要做这些验证:
- 测试能否访问WNS核心域名
*.notify.windows.com:可以用浏览器访问,只要返回405状态码就说明网络是通的(ping可能不通,属于正常现象) - 关闭本地防火墙或者给应用添加网络访问权限(确保应用拥有私有网络和公网的访问权限)
- 检查是否有代理服务器拦截了请求,尝试关闭代理后再测试
5. 重置系统推送服务与应用缓存
如果系统的WNS服务出现异常,可以试试这些操作:
- 以管理员身份打开命令提示符,执行
net stop wuauserv,再执行net start wuauserv重启Windows更新服务(WNS依赖这个服务运行) - 卸载当前应用,清理应用缓存后重新部署测试
内容的提问来源于stack exchange,提问作者Hunt
相关产品推荐
相关产品推荐

