适配iOS9(ATS问题)

前言

今天下了XCode7 Beta版,跑了一下自家的APP,结果发现所有服务器请求都返回失败,明明网络正常,怎么会返回失败呢?起初我以为是AFNetworking的问题,于是我写了个demo,去掉AFNetworking,直接用NSURLSession请求数据,也是请求失败。于是乎一顿Google,原来是iOS9(XCode7的模拟器默认是iOS9)的新特性——ATS搞的鬼。

简介

ATS全称为App Transport Security,它是iOS9的一个新特性,旨在提高iOS设备与服务器交互的安全性。简单地说,ATS会阻止未注册的网络请求。你可以在info.plist文件中注册相应的host,这样该host的网络请求就不会被阻止。你也可以设置不阻止任何host的网络请求。

详细设置

如果你想设置不阻止任何网络,只需要在info.plist文件中加入以下内容即可

这里写图片描述

如果你想设置只允许特定host的网络请求,在info.plist文件中加入以下内容

这里写图片描述

这样,你在发往baike.baidu.com这个host的请求就都不会被阻止了,你可以注册多个域名。

参考资料

What’s New in iOS9
NSURLSession/NSURLConnection HTTP load failed