52

我使用在我的开发盒上运行的本地服务器开发我的 iOS 应用程序。在设备上进行测试时,我通过 IP 地址直接连接,该地址通过 HTTP 而不是 HTTPS(因此在开发过程中我不必处理自签名证书,无论如何设备都不喜欢)。

我认为这就足够了:

在此处输入图像描述

但是,如果不添加,也不能让它工作,也NSAllowsArbitraryLoads = YES就是:

在此处输入图像描述

现在,我必须记住在滚动生产构建时删除它,而不是在开发过程中...arg。是否应该NSExceptionDomains使用 IP 地址,如果没有,如果不启用还有什么我可以做的NSAllowsArbitraryLoads吗?

4

4 回答 4

52

硬编码的 IP 地址在 iOS9 中不起作用。我也面临同样的问题。尝试了可用解决方案的所有排列和组合。最后,不得不使用正确的域名。

所以,不。在 iOS9 中,您无法摆脱硬编码的 IP 地址。

于 2015-07-16T12:56:09.593 回答
26

如果不启用还有什么我可以做的NSAllowsArbitraryLoads吗?

一种解决方法是使用xip.io,正如QJeffR此 Apple Developer Forums 线程中所解释的那样(由 David L 在他的评论中分享):

对(例如)10.0.1.8.xip.io的 DNS 调用将解析为10.0.1.8,允许使用域而不是 IP 地址作为NSExceptionDomains密钥。

于 2015-11-19T18:18:23.593 回答
5

正如@PanxShaz 所说,您不能放置硬编码的 IP 地址,但您可以使用一种简单的解决方法:

  1. 使用打开您的/etc/hosts文件sudo并为您的 IP 地址添加一个新的本地域名。例子:

    192.168.99.100 docker-host.localhost

  2. 然后刷新你的 DNS :

    dscacheutil -flushcache

  3. 最后在您的应用程序传输安全异常中使用这个新的本地域。

于 2016-03-14T15:48:03.793 回答
4

如果您的目标是 iOS 10+,只需设置NSAllowsLocalNetworking标志。

于 2017-04-19T11:46:36.383 回答