NEVPNManager saveToPreferences/loadFromPreferences回调从未调用



我正在尝试设置 IPSec VPN 连接,但当我尝试运行时

manager.saveToPreferences

manager.loadFromPreferences

从不调用回调函数,因此我无法启动 VPN 隧道,并且永远不会打印"123"。程序刚刚结束。我做错了什么?

我正在MacOS 10.13.4中对此进行测试

import NetworkExtension
import Foundation

let manager = NEVPNManager.shared()
let p = NEVPNProtocolIPSec()
p.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret
p.remoteIdentifier = remoteID
p.localIdentifier = localID
KeychainWrapper.standard.set("SECRET", forKey: "SECRET")
p.sharedSecretReference = KeychainWrapper.standard.dataRef(forKey: "SECRET");
manager.protocolConfiguration = p
manager.onDemandRules = [NEOnDemandRuleConnect()]
manager.isOnDemandEnabled = true
manager.isEnabled = true
manager.saveToPreferences { completionHandler in
manager.loadFromPreferences { completionHandler in
print(123)
do {
try manager.connection.startVPNTunnel()
} catch (let exception) {
print(exception)
}
}
}

我在配置 VPN 时也遇到了问题,但这个问题更多的是关于为什么这些回调永远不会被调用。

另外,作为旁注。当我跑步时

do {
try manager.connection.startVPNTunnel()
} catch (let exception) {
print(exception)
}

在保存到首选项和加载从首选项之外,我收到以下错误:

Error Domain=NEVPNErrorDomain Code=1 "(null)"

任何帮助将不胜感激,谢谢。

这本身只是在.swift文件中吗?尝试将代码放在一个简单的应用程序中,例如在applicationDidFinishLaunching()中。如果没有正在运行的运行循环,它可能不会做任何事情

最新更新