我正在尝试在 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 来自这里)
我在哪里犯错?