Ios startVPNTunnel不会抛出错误

Ios startVPNTunnel不会抛出错误,ios,ios9,vpn,networkextension,Ios,Ios9,Vpn,Networkextension,我调用startVPNTunnel(),然后在PacketTunnelProvider类中执行completionBlock,但有一个错误。 对startVPNTunnel()的调用位于try-catch块中,但似乎没有什么可捕获的。 我只想提醒用户连接是否成功。 还有谁能抓住这些错误 相关代码非常简单: do { try vpnManager!.connection.startVPNTunnel() } catch { NSLog("roee: Failed

我调用startVPNTunnel(),然后在PacketTunnelProvider类中执行completionBlock,但有一个错误。 对startVPNTunnel()的调用位于try-catch块中,但似乎没有什么可捕获的。 我只想提醒用户连接是否成功。 还有谁能抓住这些错误

相关代码非常简单:

do {
       try vpnManager!.connection.startVPNTunnel()
   }
catch {
       NSLog("roee: Failed to start vpn: \(error)")
}
和内包装隧道提供器:

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

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

操作系统将围绕VPN配置进行两次检查,并将立即返回肯定结果(如果配置正常)或错误(如果出现问题)。如果返回错误,则此API将抛出

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

所以你不能那样交流


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

您可以输入一些代码使我们能够重现错误吗?我可以通过以下方法捕获错误:
}将错误捕获为NSError{
Hi,也许你成功地触发了扩展来提高?你能分享你的解决方案原则吗?谢谢!是的,已经发现了(并且忘记了这个问题,1年前….)但是你是对的。嗨,你能告诉我,为什么我不能在第一次请求时建立连接,但它在第一次请求后工作。但这将如何让我访问错误?当状态因错误更改为未连接时,主应用程序如何知道隧道建立失败是因为哪个错误?@Mecki你找到解决方案了吗?@DenAndreychuk不太可能。我通过将应用程序和隧道提供商移动到同一个应用程序组,让他们都可以访问共享的应用程序组容器来解决这个问题。如果隧道提供商因错误而失败,它会在进入错误状态之前将错误写入容器。如果主应用程序通知提供商,我们将nt进入错误状态时,它将查看该容器以查找错误。您也可以使用IPC将错误传输到主应用程序,但如果发生错误时主应用程序甚至没有运行,则基于文件的方法也可以正常工作。