Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.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 VPN连接的可达性类无法正常工作_Ios_Vpn_Reachability - Fatal编程技术网

Ios VPN连接的可达性类无法正常工作

Ios VPN连接的可达性类无法正常工作,ios,vpn,reachability,Ios,Vpn,Reachability,我正在开发一个需要VPN连接才能进行数据同步的应用程序。我正在使用可达性类检查主机可用性。 @功能:-当应用程序通过Junos Pulse应用程序连接到VPN时,数据同步应继续。如果VPN连接丢失,则应抛出警报消息。现在它适用于下面给出的场景。 @工作场景:-VPN最初已连接,我已完成同步,然后手动从Junos Pulse断开VPN。现在我正在尝试再次同步,它将发出预期的警报。 @问题场景:-我最初完成了同步,并将应用程序闲置以自动断开VPN连接。现在VPN消失后,我正在尝试再次同步。它不会通过

我正在开发一个需要VPN连接才能进行数据同步的应用程序。我正在使用可达性类检查主机可用性。
@功能:-当应用程序通过Junos Pulse应用程序连接到VPN时,数据同步应继续。如果VPN连接丢失,则应抛出警报消息。现在它适用于下面给出的场景。
@工作场景:-VPN最初已连接,我已完成同步,然后手动从Junos Pulse断开VPN。现在我正在尝试再次同步,它将发出预期的警报。
@问题场景:-我最初完成了同步,并将应用程序闲置以自动断开VPN连接。现在VPN消失后,我正在尝试再次同步。它不会通过警报显示VPN不存在。它尝试同步功能并失败,因为没有VPN无法访问服务器

在互联网上搜索它的解决方案让我筋疲力尽。我正在这里粘贴我的代码片段。非常感谢您的任何建议

-(BOOL)checkHostAvailability
{   
Reachability *objReach = [Reachability reachabilityWithHostName:[self hostServer]];
NetworkStatus hostAvailability = [objReach currentReachabilityStatus];
if(hostAvailability == ReachableViaWiFi || hostAvailability == ReachableViaWWAN) {
    RLog(@"Host is Reachable");
    return YES;
}
return NO;
}

似乎iOS中有一个bug。当您使用蜂窝连接(或WiFi)连接VPN,然后切换到WiFi(或蜂窝)时,系统不会检测到此情况。可达性不会发布任何通知,因为iOS仍然认为您尚未切换界面

我通过以下方式复制了它:

  • 使用NetworkExtension框架在3G上连接VPN,禁用随需应变功能
  • 切换到WiFi网络
  • 从WiFI路由器上拔下以太网电缆,因此路由器无法共享互联网
  • 已检查具有活动VPN的设备上是否存在Internet
    它就在那里。这意味着,所有流量都通过蜂窝网络。

    您找到解决此问题的方法了吗?请一定要让我知道。你有解决这个问题的办法吗?中国面临着同样的问题iOS9@GopeshGupta-如果我没有记错,我在检查主机可达性之前,每次都将
    objReach
    分配给
    nil
    。看看这对你是否有效。我不再在同一个组织中交叉验证解决方案:(谢谢@Gandalf。按照你的建议进行。但不起作用