从未调用NEVPNManager saveToPreferences / loadFromPreferences回调

时间:2018-06-18 19:00:40

标签: swift macos callback ipsec nevpnmanager

我正在尝试设置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)
    }

在saveToPreferences和loadFromPreferences之外我收到以下错误:

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

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

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