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

Apple Watch真机JSON解析失败,模拟器正常且设备联网正常

Apple Watch真机无法解析URL JSON数据问题

问题现象

  • 从URL解析JSON数据的功能在Apple Watch模拟器中正常运行,但真机上无法工作
  • 设备已连接WiFi,网络状态正常,其他联网应用可正常使用
  • 控制台报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

问题原因

  1. 代码中使用Data(contentsOf:)执行同步网络请求,该操作会阻塞主线程。Apple Watch真机系统对主线程的限制比模拟器严格,直接在主线程执行同步网络请求会被系统拦截。
  2. 虽目标URL为HTTPS协议,但Watch App的ATS(App Transport Security)配置可能存在隐性问题(模拟器正常的话,该可能性较低)。

解决方法

改用URLSession执行异步网络请求,避免主线程阻塞操作,同时确保ATS配置正确(HTTPS默认无需额外配置)。

修改后的代码示例

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello world")
        }
        .onAppear {
            guard let url = URL(string: "https://jsonplaceholder.typicode.com/todos/1") else { return }
            // 使用URLSession发起异步请求
            let task = URLSession.shared.dataTask(with: url) { data, response, error in
                if let error = error {
                    print("请求错误:\(error.localizedDescription)")
                    return
                }
                guard let data = data else {
                    print("未获取到有效数据")
                    return
                }
                do {
                    let json = try JSONSerialization.jsonObject(with: data)
                    print("解析结果:\(json)")
                    // 更新UI需切换回主线程
                    DispatchQueue.main.async {
                        // 此处添加UI更新逻辑
                    }
                } catch let error {
                    print("JSON解析错误:\(error.localizedDescription)")
                }
            }
            task.resume()
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

额外注意事项

  • 若仍出现ATS相关错误,可在Watch App的Info.plist中添加NSAppTransportSecurity字典,并设置NSAllowsArbitraryLoads为YES(仅用于测试,正式发布建议针对特定域名配置)。
  • 所有UI更新操作必须在主线程执行,解析完成后需通过DispatchQueue.main.async切换线程处理UI逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:42:29