startVPNTunnel 不会抛出错误

startVPNTunnel not throws errors

我正在调用 startVPNTunnel(),然后在 PacketTunnelProvider class 中执行 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

我相信 startVPNTunnel 与 OS 交谈并让它知道需要启动 VPN。

OS 将对 VPN 配置进行一些检查,并立即 return 肯定结果(如果配置正确)或错误(如果有问题)。如果 returned 出现错误,则此 API 将抛出。

但是,您的网络扩展将在 startVPNTunnel returned 之后启动。

所以你不能那样交流。

您可以注册 NSNotification.Name.NEVPNStatusDidChange 以查看 VPN 状态变化。