如何使用NSURLSession类在iOS 9中获取IP地址

如何使用NSURLSession类在iOS 9中获取IP地址,ios,nsurlsession,Ios,Nsurlsession,我有多个包含迷你网络服务器的硬件设备,因为它们使用DHCP,所以可以在本地域上拥有任何IP地址 我使用NSURLSession扫描IP地址的范围。2到。253试图获取这些设备承载的index.html 只要我关闭了应用程序传输安全,这就很好用。当然,只要我打开它,呼叫就会失败,因为它不允许IP地址连接 在我解释这一需求时,除了关掉自动测试系统并祈祷苹果允许我通过之外,还有什么别的办法可以做到呢 一点伪代码:) 应用程序计算出自己的IP地址,比如192.168.0.10 对于我来说,在2..当然。

我有多个包含迷你网络服务器的硬件设备,因为它们使用DHCP,所以可以在本地域上拥有任何IP地址

我使用NSURLSession扫描IP地址的范围。2到。253试图获取这些设备承载的index.html

只要我关闭了应用程序传输安全,这就很好用。当然,只要我打开它,呼叫就会失败,因为它不允许IP地址连接

在我解释这一需求时,除了关掉自动测试系统并祈祷苹果允许我通过之外,还有什么别的办法可以做到呢

一点伪代码:)

应用程序计算出自己的IP地址,比如192.168.0.10

对于我来说,在2..当然。您可以将HTTPS与IP地址的自签名证书一起使用,然后为用户提供粘贴允许的密钥或允许的自定义根证书(由您选择)的方法,然后自动接受a.通过正常证书检查或B.匹配指定密钥或由这些根证书签名的响应

我不是说这是微不足道的,但它是可以做到的


话虽如此,你真的不应该探测这样的网络。您应该使用服务发现。这无助于解决证书问题,但它将大大降低您的应用程序因滥用LAN而被拒绝的可能性。:-)

当然。您可以将HTTPS与IP地址的自签名证书一起使用,然后为用户提供粘贴允许的密钥或允许的自定义根证书(由您选择)的方法,然后自动接受a.通过正常证书检查或B.匹配指定密钥或由这些根证书签名的响应

我不是说这是微不足道的,但它是可以做到的


话虽如此,你真的不应该探测这样的网络。您应该使用服务发现。这无助于解决证书问题,但它将大大降低您的应用程序因滥用LAN而被拒绝的可能性。:-)

您需要禁用ATS并解释原因。就我个人而言,我认为苹果在执行ATS要求时必须相当宽容,因为有大量嵌入式和物联网设备永远不会支持具有适当证书的TLS。您还需要处理应用程序在纯IPv6网络上正常运行的要求…您可以始终有一台服务器为您执行扫描并维护有效IP地址列表。然后通过HTTPS连接到该服务器,并让它返回找到该设备的IP+index.html页面。服务器的想法很好,但这是为了让小企业使用iPad和可能的多个pin码,这样他们就不想有额外的成本/麻烦。你需要禁用ATS并解释原因。就我个人而言,我认为苹果在执行ATS要求时必须相当宽容,因为有大量嵌入式和物联网设备永远不会支持具有适当证书的TLS。您还需要处理应用程序在纯IPv6网络上正常运行的要求…您可以始终有一台服务器为您执行扫描并维护有效IP地址列表。然后通过HTTPS连接到该服务器,并让它返回找到该设备的IP+index.html页面。服务器的想法很好,但这是为了让小企业使用iPad和可能的多个pin码,这样他们就不会想有额外的成本/麻烦。
App figures out its own IP address say 192.168.0.10
for i in 2..<254 {
    creates a new ip address of 192.168.0.2, .3, .4 etc etc
    NSURLSession to https://above IP address/index.html
    if ( succeeds ) {
         I found a device
    }
}