Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios 9和NSAppTransportSecurity_Ios_Objective C_Xcode_Ios9_Xcode7 - Fatal编程技术网

ios 9和NSAppTransportSecurity

ios 9和NSAppTransportSecurity,ios,objective-c,xcode,ios9,xcode7,Ios,Objective C,Xcode,Ios9,Xcode7,iOS 9和服务器存在问题。 I info.plist集合: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> NSAppTransportSecurity NSAllowsArbitraryLoads 通过Xcode运行应用程序时,一切正常。与服务器的工作进行得

iOS 9和服务器存在问题。 I info.plist集合:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
通过Xcode运行应用程序时,一切正常。与服务器的工作进行得非常完美。但只要我停止应用程序并尝试通过简单单击模拟器中的图标来运行它。网络停止工作。当我在TestFlight中将应用程序发送到Review时,也会出现同样的问题。应用程序已安装,但网络再次停止工作

Xcode 7.0(7a220)
iOS 9.0

你确定它不工作吗?我测试过了,一切都很好

可能的行动

启用调试模式后,构建应用程序,从Xcode运行它,并确保没有收到应用程序传输安全错误:

应用程序传输安全已阻止明文HTTP(HTTP://)资源加载,因为它不安全。

当使用模拟器从Xcode启动它时。现在找到同一个模拟器的设备代码

(提示:它将是~/Library/Developer/CoreSimulator/Devices/中的一个。从Xcode中查找此代码的最简单方法是转到Window->Devices)

并使用控制台打开其日志文件:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log
~/Library/Logs/CoreSimulator//system.log
清除历史记录(以防您可以再次从Xcode启动您的应用程序,并确保您的输出进入您打开的日志文件,并且您仍然没有在其中发现应用程序传输安全错误)

现在,从模拟器启动应用程序,并检查日志中是否存在与应用程序传输安全相关的任何错误

对我来说,如果我从Xcode工作时没有得到它们,我也没有

==================================

另附

强烈建议不要将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>
NSAppTransportSecurity
NSExceptionDomains
yourserver.com
n包括多个域
NSTemporary ExceptionalLowsInSecureHttpLoads
NSTemporaryExceptionMinimumTLSVersion
TLSv1.1

应该这样做,您需要在Plist中添加以下记录

它是懒惰的,所以您的框架可以访问Internet


NSAppTransportSecurity非常简单,只需按照以下步骤操作即可:

  • 应用程序传输安全设置
  • 允许任意加载
  • 异常域和域/主机引用

  • 注意:出现此问题是因为默认情况下项目设置不允许任何跨站点脚本引用。因此,它会阻止任何超出应用程序范围的服务调用

    谢谢你的回答,但是第一个选择(可能的行动:)并没有用。日志文件中没有出现任何错误,一切正常。但在停止应用程序后,Xcode网络不再工作。此方法也会导致相同的问题。您是否有理由确定问题的原因是NSAppTransportSecurity?您在控制台中说没有错误。如果您的Mac运行10.11,您可以将新的
    nscurl
    命令与
    --ats诊断选项一起使用。这将查看您正在连接的服务,并告诉您需要调整哪些设置才能连接,同时尽可能不关闭屏蔽。我无法理解原因。我的服务器现在也提供https和TLC v1.2请求,但也不会将其传递到iOS 9。iOS 8一切都很好。已知NSAppTransportSecurity会导致HTTP请求出现问题。对于HTTPS,它不应该阻止任何内容。也许你应该为你的问题添加更多的标签(例如,让nsurlrequest、afnetworking)并尝试在@macshome建议的地方搜索问题