我正在调用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
答案 0 :(得分:0)
我相信startVPNTunnel
与操作系统进行对话,让它知道需要启动VPN。
操作系统会对VPN配置进行几次检查,并立即返回正结果(如果配置正常)或错误(如果出错)。如果返回错误,则此API将抛出。
但是,您的网络扩展程序将在 startVPNTunnel
返回后启动。
所以你不能这样沟通。
您可以注册NSNotification.Name.NEVPNStatusDidChange
以查看VPN状态更改。