Ios 从Cisco AP Wifi取消身份验证后无法重新连接

Ios 从Cisco AP Wifi取消身份验证后无法重新连接,ios,networking,wifi,Ios,Networking,Wifi,提前道歉,我不是802.11专家,这是一个冗长的问题 我正在使用iOS voip客户端,我们使用Cocoaasyncsocket库进行TCP/UDP连接。允许应用程序/iDevice在wifi覆盖范围内外漫游(在本讨论中,我们假设应用程序仅使用wifi…无蜂窝连接)。我们为backgroundmode(voip、音频)提供了适当的plist设置,并且需要持续的wifi 我们遇到了一个思科AP公司特有的问题。由于客户端应用程序位于前台,并在wifi范围内漫游,我们注意到,最终iOS设备将不会自动重

提前道歉,我不是802.11专家,这是一个冗长的问题

我正在使用iOS voip客户端,我们使用Cocoaasyncsocket库进行TCP/UDP连接。允许应用程序/iDevice在wifi覆盖范围内外漫游(在本讨论中,我们假设应用程序仅使用wifi…无蜂窝连接)。我们为backgroundmode(voip、音频)提供了适当的plist设置,并且需要持续的wifi

我们遇到了一个思科AP公司特有的问题。由于客户端应用程序位于前台,并在wifi范围内漫游,我们注意到,最终iOS设备将不会自动重新加入网络。经过大量调试后,重新加入失败被认为与应用程序无关。通过强制AP(通过配置)三次取消对iDevice的身份验证,最终可以重现重新加入的失败。在第一次和第二次取消验证后,iDevice会自动重新加入。但第三次之后,iOS不会自动重新加入网络

例如,如果将iOS电子邮件应用程序置于前台,网络将重新连接

我们很好奇是否有其他VOIP类型的应用遇到了这个问题,并在iOS设备上运行FaceTime和Skype进行了一个实验

Skype的表现很像我们的voip应用程序,在第三次授权后连接丢失。尝试发起另一个呼叫时,会出现一条大意为“必须有internet连接才能拨打电话”的消息

FaceTime在第三次授权时断开连接,无法自动重新加入。。。然而,我们能够重新启动另一个FaceTime呼叫,这导致iOS重新加入网络并拨打电话


我们想模仿FaceTime行为,但到目前为止还不明白我们应该做些什么。据我们所知,当我们断开连接时,我们正在正确地关闭打开的插座。是否有人熟悉此问题并有一些见解可以提供?

当套接字代码断开连接时,您会在其上发现哪些错误(错误号)?始终值得使用socket选项
,以防您的socket地址不知何故被保留在使用中:您会遇到什么错误。如果您不使用
SCNetworkReachability
,在使用前检查internet连接可能是值得的,因为它可能会启动WiFi上的一些低级检查。由于我手头没有出现故障的路由器,我将不得不重新问您有关错误号的问题。我们正在设置SO_REUSEADDR,我们也正在使用SCNetworkReachability对连接进行验证。关于FaceTime如何能够重新连接的一个毫无根据的理论是,苹果应用程序可能能够使用开发人员无法使用的wifi/ssid扫描api。对于寻找ssid,我认为两个主要接口是CaptiveNet(现在已弃用,但在iOS9中完全重新安装,因此仍然可用)和NEHotspotHelper(需要苹果公司的许可才能使用)。但不确定这两个选项是否会启动扫描。您可以尝试的另一件事是在Info.plist文件中设置
UIRequiresPersistentWiFi
键。您可能已经设置了此项,但如果设置了此项,则可能会在应用程序启动时强制扫描。它似乎旨在防止关闭WiFi,但如果没有WiFi,则可能会强制检查当你跑的时候连接。