3

我正在尝试在 iOS 应用程序中连接到 VPN。我已经知道的是 VPN 类型(L2TP over IPSec)、帐户名、密码和共享密钥。该连接通过 Mac 的网络设置工作。虽然,当您必须在代码中使用此信息时,它似乎有点复杂。

首先,我已经导入了必要的库。

import NetworkExtension

然后,我正在尝试加载首选项,如果出现错误,我将使用自己的并保存它们。看起来像这样:

NEVPNManager.shared().loadFromPreferences { error in
        // config
        NEVPNManager.shared().saveToPreferences { error in
            if (error == nil) {
                do {
                    try NEVPNManager.shared().connection.startVPNTunnel()
                } catch {
                    print("Couldn't connect")
                }
            } else {
                print("NEVPNManager.saveToPreferencesWithCompletionHandler failed: \(error!.localizedDescription)")
            }
        }
    }

在哪里可以看到“// config”,我的数据应该是通过的。我不是 100% 确定,如果我做对了。

let p = NEVPNProtocolIPSec()我放置数据的位置有一个常数。就像p.username = "smth"

问题是:p应该填写哪些字段?我将共享密钥放在哪里?

- - 更新 - -

我总是收到错误:

NEVPNManager.saveToPreferencesWithCompletionHandler 失败:操作无法完成。(NEVPNErrorDomain 错误 4。)

我找不到任何具体的内容。

在配置期间,字段 .sharedSecretReference 和 .passwordReference 需要数据?目的。我通过使用keychain.get("passref")?.data(using: .utf8, allowLossyConversion: true)前面得到它

let keychain: KeychainSwift! = KeychainSwift()

keychain.set("<my_password>", forKey: "passref")

(类 KeychainSwift 来自这里

我在哪里犯错?

4

0 回答 0