iOS9 Xcode7+不能请求网络的解决办法

/ 0

第一次使用Xcode7的阿猿们都会遇到这个问题,经Google查证后得知是因为iOS9引入了新特性App Transport Security (ATS)。

详情:App Transport Security (ATS) 下面是Xcode错误信息:

The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

新特性要求App内访问的网络必须使用HTTPS协议,如果项目使用的是HTTP协议,使用私有加密方式保证数据安全,现在也不能马上改成HTTPS协议传输。

Xcode7.0的解决办法

1.在Info.plist中添加NSAppTransportSecurity类型Dictionary。

2.在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

Snip20151015_3

注意:单元测试下面也有一个Info.plist,修改那个文件是没有作用的。

Xcode7.1和以后的解决办法

7.1苹果改了这项设定的名称,也就是

NSAppTransportSecurity改为了App Transport Security Settings

NSAllowsArbitraryLoads改为了Allows Arbitrary Loads

QQ20151109-0@2x

拷贝代码 - 粘贴到info.plist文件,不需要Open As -> Source Code。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
</dict>
</plist>