You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:32:00