Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何获取服务器地址和remoteIdentifier?_Ios_Swift_Vpn_Networkextension_Nevpnmanager - Fatal编程技术网

Ios 如何获取服务器地址和remoteIdentifier?

Ios 如何获取服务器地址和remoteIdentifier?,ios,swift,vpn,networkextension,nevpnmanager,Ios,Swift,Vpn,Networkextension,Nevpnmanager,我能够保存VPN配置。请告诉我如何使服务器地址变为变量或获取服务器地址,以及远程标识符是什么 我以这个例子作为参考: 我怎样才能解决这个问题 func connectVPN(){ do { if let file = URL(string: "example.com") { let data = try Data(contentsOf: file) let json = try JSONS

我能够保存VPN配置。请告诉我如何使服务器地址变为变量或获取服务器地址,以及远程标识符是什么

我以这个例子作为参考:

我怎样才能解决这个问题

      func connectVPN(){
        do {
        if let file = URL(string: "example.com") {
                let data = try Data(contentsOf: file)
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                if let object = json as? [String: String] {
                    // json is a dictionary
                    var data_VPN = object["VPN_data"]!
                    //print("Donebro:\(data_VPN)")
                    let certificate = data_VPN
                    let nsdata = certificate.data(using: .utf8)

                    let base64EncodedData = nsdata!.base64EncodedData()

                    print("base64StoreData:\(nsdata!)")
                    print("base64StoreNewData:\(base64EncodedData)")

                    var vpnManager = NEVPNManager.shared()

                                        vpnManager.loadFromPreferences { error in

                                            if vpnManager.`protocol` == nil{
                                                let newIPSec = NEVPNProtocolIPSec()

                                                newIPSec.serverAddress = ""
                                                newIPSec.localIdentifier = ""
                                                newIPSec.remoteIdentifier = ""
                                                newIPSec.useExtendedAuthentication = true
                                                newIPSec.identityData = base64EncodedData as! Data
                                                newIPSec.authenticationMethod = NEVPNIKEAuthenticationMethod.certificate
                                                print("VPNDATA:\(newIPSec)")

                                                if #available(iOS 9, *) {
                                                vpnManager.protocolConfiguration = newIPSec
                                                } else {
                                                vpnManager.`protocol` = newIPSec
                                                }

                                                vpnManager.isEnabled = true
                                                vpnManager.saveToPreferences(completionHandler: { (error) -> Void in
                                                    if ((error) != nil) {
                                                        print("VPN Preferences error: 2")
                                                    }
                                                    else {
                                                        vpnManager.loadFromPreferences(completionHandler: { (error) in
                                                            if ((error) != nil) {
                                                                print("VPN Preferences error: 2")
                                                            }
                                                            else {
                                                                var startError: NSError?
                                                                do {
                                                                    try vpnManager.connection.startVPNTunnel()
                                                                }
                                                                catch let error as NSError {
                                                                    startError = error
                                                                    print(startError)
                                                                }
                                                                catch {
                                                                    print("Fatal Error")
                                                                    fatalError()
                                                                }
                                                                if ((startError) != nil) {
                                                                    print("VPN Preferences error: 3")
                                                                    let alertController = UIAlertController( title: "Oops..", message: "Something went wrong while connecting to the VPN. Please try again.", preferredStyle: UIAlertControllerStyle.alert)
                                                                    alertController.addAction( UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
                                                                    self.present(alertController, animated: true, completion: nil)
                                                                    print(startError)
                                                                }
                                                                else {
                                                                    //VPNStatusDidChange(nil)
                                                                    print("Start VPN")
                                                                }
                                                            }
                                                        })
                                                    }
                                                })
                    }

                } else if let object = json as? [Any] {
                    // json is an array
                    for anItem in object as! [Dictionary<String, AnyObject>] {
                        let industryName = anItem["VPN_data"] as! String                                               
                    }
                } else {
                    print("JSON is invalid")
                }
            } else {
                print("no file")
            }
        } catch {
            print(error.localizedDescription)
        }

    }
}
func connectVPN(){
做{
如果let file=URL(字符串:“example.com”){
let data=try data(contentsOf:file)
让json=try JSONSerialization.jsonObject(使用:data,选项:[])
如果让object=json作为?[String:String]{
//json是一本字典
var data\u VPN=object[“VPN\u data”]!
//打印(“Donebro:\(数据虚拟专用网)”)
let certificate=data\u VPN
让nsdata=certificate.data(使用:.utf8)
让base64EncodedData=nsdata!.base64EncodedData()
打印(“base64StoreData:\(nsdata!)”)
打印(“base64StoreNewData:\(base64EncodedData)”)
var vpnManager=NEVPNManager.shared()
vpnManager.loadFromPreferences{中出现错误
如果vpnManager.`protocol`==nil{
设newIPSec=nevpnpprotocolipsec()
newIPSec.serverAddress=“”
newIPSec.localIdentifier=“”
newIPSec.remoteIdentifier=“”
newIPSec.useExtendedAuthentication=true
newIPSec.identityData=base64encodeddataas!数据
newIPSec.authenticationMethod=NEVPNIKEAuthenticationMethod.certificate
打印(“vpnda:\(newIPSec)”)
如果可用(iOS 9,*){
vpnManager.protocolConfiguration=newIPSec
}否则{
vpnManager.`protocol`=newIPSec
}
vpnManager.isEnabled=true
saveToPreferences(completionHandler:{(错误)->中的Void
如果((错误)!=nil){
打印(“VPN首选项错误:2”)
}
否则{
vpnManager.loadFromPreferences(completionHandler:{(错误)在中)
如果((错误)!=nil){
打印(“VPN首选项错误:2”)
}
否则{
var启动器错误:N错误?
做{
尝试vpnManager.connection.startVPNTunnel()
}
将let错误捕获为NSError{
起动器错误=错误
打印(起动器ROR)
}
抓住{
打印(“致命错误”)
法塔莱罗()
}
如果((启动器错误)!=nil){
打印(“VPN首选项错误:3”)
让alertController=UIAlertController(标题:“Oops..”,消息:“连接到VPN时出错。请重试。”,首选样式:UIAlertControllerStyle.alert)
addAction(UIAlertAction(标题:“驳回”,样式:UIAlertActionStyle.default,处理程序:nil))
self.present(alertController,动画:true,完成:nil)
打印(起动器ROR)
}
否则{
//VPNStatusDidChange(无)
打印(“启动VPN”)
}
}
})
}
})
}
}如果让object=json为?[任何]{
//json是一个数组
用于对象中的某个项目,如![字典]{
让industryName=anItem[“VPN_数据”]作为!字符串
}
}否则{