startVPNTunnel不会抛出错误

时间:2016-02-23 15:57:14

标签: ios ios9 vpn networkextension

我正在调用startVPNTunnel(),然后在PacketTunnelProvider类中,我执行了completionBlock并出现错误。 对startVPNTunnel()的调用是在try-catch块中,但似乎没有什么可以捕获的。 我只想提醒用户连接是否成功。 其他人能够发现这些错误吗?

相关代码非常简单:

do {
       try vpnManager!.connection.startVPNTunnel()
   }
catch {
       NSLog("roee: Failed to start vpn: \(error)")
}

在PacketTunnelProvider中:

 let error = NSError(domain: NEVPNErrorDomain, code: NEVPNError.ConfigurationInvalid.rawValue, userInfo: nil)
            PacketTunnelProvider.pendingStartCompletionHandler!(error)
            PacketTunnelProvider.pendingStartCompletionHandler = nil

1 个答案:

答案 0 :(得分:0)

我相信startVPNTunnel与操作系统进行对话,让它知道需要启动VPN。

操作系统会对VPN配置进行几次检查,并立即返回正结果(如果配置正常)或错误(如果出错)。如果返回错误,则此API将抛出。

但是,您的网络扩展程序将在 startVPNTunnel返回后启动。

所以你不能这样沟通。

您可以注册NSNotification.Name.NEVPNStatusDidChange以查看VPN状态更改。