我使用在我的开发箱上运行的本地服务器开发我的iOS应用程序。在设备上进行测试时,我通过IP地址直接连接,该地址是通过HTTP而不是HTTPS(因此我不需要在开发过程中处理自签名证书,设备甚至不喜欢无论如何)。
我认为这就足够了:
然而,如果没有添加NSAllowsArbitraryLoads = YES
,那么就无法让它工作:AKA:
现在,我必须记住在滚动生产版本时删除它,而不是在开发期间删除... arg。 NSExceptionDomains
是否应该使用IP地址,如果没有,我还能做什么,而不启用NSAllowsArbitraryLoads
?
答案 0 :(得分:52)
硬编码的IP地址在iOS9中不起作用。我也遇到了同样的问题。 尝试了所有排列&可用解决方案的组合。 最后,必须使用正确的域名。
所以,不。在iOS9中,你无法摆脱硬编码的IP地址。
答案 1 :(得分:25)
除了启用
NSAllowsArbitraryLoads
之外,还有什么我可以做的吗?
一种解决方法是使用xip.io,正如QJeffR this Apple Developer Forums thread中解释的那样(大卫L在his comment中分享了这一点):
对(例如)10.0.1.8.xip.io的DNS调用将解析为10.0.1.8,允许使用域而不是
NSExceptionDomains
密钥的IP地址。
答案 2 :(得分:5)
正如@PanxShaz所说,你不能放一个硬编码的IP地址,但你可以使用一个简单的解决方法:
使用/etc/hosts
打开sudo
文件,并为您的IP地址添加新的本地域名。示例:
192.168.99.100 docker-host.localhost
然后刷新您的DNS:
dscacheutil -flushcache
最后在您的应用传输安全例外中使用此新的本地域。
答案 3 :(得分:2)
如果您的目标是iOS 10+,请设置NSAllowsLocalNetworking标记。