swift - 从未调用过 NEVPNManager saveToPreferences/loadFromPreferences 回调

标签 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)"

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

最佳答案

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

关于swift - 从未调用过 NEVPNManager saveToPreferences/loadFromPreferences 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915902/

相关文章:

ios - collectionView 中的 CAShapelayer 在 reloadData() 上添加奇怪的动画

swift - 检测 iPhone 语言并更改应用程序语言

iphone - 是否可以像执行C程序那样在Xcode中运行Objective-C程序(不是iPhone/Mac项目)?

macos - "ERROR: broken data stream when reading image file"(OS X 上的 TrueType 字体 libjpeg 和 PIL)

c - 如何检查 libcurl 回调内的 HTTP 状态?

ios - SKShapeNode .strokeColor 在更改 node.alpha 时看起来与 .fillColor 相同

ios - 使用 unwind segue 传递数据

Ruby 'pg' gem 链接到 libpq.5.dylib 的错误副本(在 OSX 上)

c++ - 使用 C++ 模板类方法的 C 回调

c++ - 这段代码中如何调用函数传值? C++