自VPN9Beta发布以来,苹果公司开放了NetworkExtension.framework,允许开发人员在设备上实现自定义协议iOS客户端。
当我尝试使用以下代码连接自定义VPN时
let providerProtocol = NETunnelProviderProtocol()
providerProtocol.serverAddress = "example.com"
let manager = NETunnelProviderManager()
manager.protocolConfiguration = providerProtocol
manager.enabled = true
manager.saveToPreferencesWithCompletionHandler({ error in
guard error == nil else {
print("saveToPreferencesWithCompletionHandler \(error)")
return
}
do {
try manager.connection.startVPNTunnel()
} catch {
print("startVPNTunnel \(error)")
}
})它将失败,并显示startVPNTunnel Error Domain=NEVPNErrorDomain Code=1 "(null)"
发布于 2016-03-31 11:32:32
您必须在启动VPN之前调用loadFromPreferencesWithCompletionHandler。
发布于 2016-11-04 12:43:51
我认为在你使用startVPNTunnel之前,你需要像这样使用loadFromPreferences:
manager.saveToPreferences(completionHandler: { (error) -> Void in
if error != nil{
}
else{
manager.loadFromPreferences(completionHandler: { (error) -> Void in
if error != nil{
}
else{
do{
try manager.connection.startVPNTunnel(options: nil)
}
catch{
}
}
})
}
})发布于 2015-09-16 14:19:59
我认为您的配置无效。其中,协议必须配置有您想要加载的VPN插件的捆绑标识符。
我强烈建议抓取一些示例代码作为起点。配置这些野兽之一是一项相当复杂的任务,并且有许多尖锐的边缘,其中一个微小的错误可能会导致它完全失败,而没有任何明显的迹象表明它失败的原因。
https://stackoverflow.com/questions/31985914
复制相似问题