【Unity】编译IOS报错:NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask(Code=1022)

一、问题

某项目需要打包IOS,在打包过程中遇到了很多问题,以下是网络请求数据时报错

Task .<1180> finished with error [-1022] Error Domain=NSURLErrorDomain Code=-1022 “The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.” UserInfo={NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., NSErrorFailingURLStringKey=XXXXX,_NSURLErrorRelatedURLSessionTaskErrorKey=( “LocalDataTask .<1180>” ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask .<1180>, NSUnderlyingError=0x28107b660 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 “(null)”}}

二、原因

开发同学使用了http而不是https,出现问题的原因,是iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)
新特性要求App内访问的网络必须使用HTTPS协议。但是我们的项目使用的是HTTP协议,使用私有加密方式保证数据安全

知识点

HTTP 与 HTTPS 区别

  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
    使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
    http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
三、解决方案
  1. 如果要是方便的话,最好还是使用https
  2. 不愿意修改代码的情况下。可以在Xcode的工程目下的Info.plist添加以下修改在这里插入图片描述
    注意:请先XCode->Product->Clean Build Folder清除缓存,重新编译
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值