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

Apple Watch S7使用URLSession出现Error 1009网络问题求助

解决watchOS 9.1上URLSession Error 1009(网络断开提示)的方案

基础排查步骤

  • 验证Wi-Fi实际连通性:打开手表「设置」-「Wi-Fi」,查看当前连接的Wi-Fi信号强度,尝试断开重连。用手表自带Safari访问https://www.baidu.com,确认是否能正常加载——如果Safari也失败,说明是系统级Wi-Fi问题,而非代码问题。
  • 检查Wi-Fi代理设置:进入「设置」-「Wi-Fi」,点击当前Wi-Fi右侧的i图标,确认「代理」为「关闭」状态。自动/手动代理可能导致URLSession请求异常。
  • 确认配对设备状态:无蜂窝版Watch依赖iPhone的部分网络配置(即使单独连Wi-Fi),确保iPhone和手表在同一Wi-Fi下,蓝牙处于连接状态。尝试重启两台设备后重新配对。

应用配置调整

  • 完善ATS配置:即使开启Allow Arbitrary Loads,仍需针对性配置Info.plist覆盖本地HTTP场景:
    1. 为本地服务器的IP/域名添加NSExceptionDomains,开启NSExceptionAllowsInsecureHTTPLoads;
    2. 确认NSAllowsArbitraryLoads在需要的环境(Debug/Release)均生效。
      示例Info.plist配置片段:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>192.168.1.100</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
        </dict>
    </dict>
    
  • 添加网络权限描述:在Watch App的Info.plist中添加NSNetworkUsageDescription字段,填写网络使用说明——虽然watchOS对该权限强制要求较低,但缺失可能导致请求被静默拦截。

代码与调试优化

  • 使用自定义URLSession配置:避免直接依赖URLSession.shared,创建自定义配置禁用缓存和Cookie,排除旧配置干扰:
    let config = URLSessionConfiguration.default
    config.requestCachePolicy = .reloadIgnoringLocalCacheData
    config.httpCookieStorage = nil
    let session = URLSession(configuration: config)
    // 用自定义session发起请求
    let (data, response) = try await session.data(from: URL(string: "https://www.baidu.com")!)
    
  • 捕获详细错误信息:不要仅打印localizedDescription,解析NSError的完整字段获取更多线索:
    catch {
        if let nsError = error as NSError? {
            dataStr = "错误码: \(nsError.code), 域: \(nsError.domain), 详情: \(nsError.userInfo)"
        } else {
            dataStr = error.localizedDescription
        }
    }
    
  • 简化Bonjour测试:先跳过TicTacToe的复杂逻辑,在Mac上运行简单的Bonjour发布服务,用手表的NetServiceBrowser扫描,确认能否发现服务。如果扫描失败,优先排查路由器的AP隔离或多播转发限制——这类设置会阻止同一Wi-Fi下设备互相通信。

路由器配置排查

  • 关闭AP隔离:进入路由器管理后台,找到「AP隔离」或「无线隔离」选项并关闭,该功能会禁止同一Wi-Fi内设备互访,是本地局域网请求失败的常见原因。
  • 启用IPv6或强制IPv4:部分watchOS版本对IPv4兼容性有问题,可开启路由器IPv6支持,或在手表Wi-Fi设置中手动指定IPv4地址(而非自动获取)。
  • 检查Mac防火墙:进入Mac「系统设置」-「网络」-「防火墙」,确认允许本地HTTP服务器接收同一局域网的连接请求。

内容的提问来源于stack exchange,提问作者Mightypants

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:21:01