ios 9和NSAppTransportSecurity
iOS 9有一个问题,并与服务器一起工作。 我info.plist设置:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
当你通过Xcode运行应用程序时,一切都很好。 与服务器一起工作是完美的。 但只要我停止应用程序,并尝试运行它只需点击模拟器中的图标。 networking停止工作。 当我将应用程序发送到TestFlight中的Review时,也出现同样的问题。 应用程序已安装,但networking再次停止工作。
Xcode 7.0(7a220)iOS 9.0
你确定它不工作? 我testing过,一切都很好。
可能的行动 :
启用debugging模式,构build您的应用程序,从Xcode运行它,并确保您没有得到一个应用程序传输安全错误:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
当使用您的模拟器从Xcode启动它。 现在find一个相同的模拟器的DEVICE_CODE
(Hint: it will be one of these ~/Library/Developer/CoreSimulator/Devices/. The easiest way to find this code from Xcode is to go Window->Devices)
并用控制台打开它的日志文件:
~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log
清除历史logging(以防万一您可以再次从Xcode启动您的应用程序,并确保您的输出正在进入您打开的日志文件,并且仍然没有在那里得到App Transport Security错误)。
现在从模拟器中启动您的应用程序,并检查日志中是否存在与应用程序传输安全相关的任何错误。
对于我来说,如果我从Xcode工作中得不到任何的话。
==================================
PS :
强烈build议不要将NSAllowsArbitraryLoads设置为true ,而是希望通过以下方式实现期望的结果:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>yourserver.com</key> <dict> <!--Include to allow subdomains--> <key>NSIncludesSubdomains</key> <true/> <!--Include to allow HTTP requests--> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <!--Include to specify minimum TLS version--> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict> </dict>
应该这样做,您需要在您的Plist中添加以下loggingApple文档
这是懒惰的,所以你的框架可以访问互联网
NSAppTransportSecurity < – types字典
NSAllowsArbitraryLoads < – types布尔值是
其非常简单,只需按照以下步骤:
- 应用传输安全设置。
- 允许任意加载。
- 例外域和域/主机引用。
注意:发生此问题是因为您的项目设置默认不允许任何跨站点脚本引用。 因此,它会阻止任何不在您应用程序之外的服务呼叫。
- 在iOS 5上,UIWebView报告滚动视图的内容大小错误
- 如何testingUIControlEvents是否被触发
- UITextView:在模拟器中工作的链接检测,而不是在设备上
- 如何更改某些function以兼容iOS 10或更低版本,以便在我的搜索function中使用相机视图控制器
- iOS模拟器突然停止工作,“iOS模拟器无法启动”,没有其他消息
- 用xibstring文件本地化的UiTextView
- 使用AFNetworkingparsingXML文件
- Firebase Swift 3.0语法更新?
- 如何以编程方式发送短信在iPhone上没有“MFMessageComposeViewController”?