VPN簡單說就是連接區域網的一個通道。Ios8之後蘋果增加了一個VPN的介面NEVPNManager,它可以方便的添加VPN連接。 首先在你的Xcode內,TARGETS->Capabilities->打開persion VPN 在項目中添加NetWorkExtension庫 引入頭文件<Netwo ...
VPN簡單說就是連接區域網的一個通道。Ios8之後蘋果增加了一個VPN的介面NEVPNManager,它可以方便的添加VPN連接。
首先在你的Xcode內,TARGETS->Capabilities->打開persion VPN
在項目中添加NetWorkExtension庫
引入頭文件<NetworkExtension/NEVPNManager.h>以後
//創建管理對象
NEVPNManager *vpnManager = [NEVPNManager sharedManager];
從設置裡面載入VPN
//給VPN配置信息
[manager loadFromPreferencesWithCompletionHandler:^(NSError * _Nullable error) {
NEVPNProtocolIPSec *set =(NEVPNProtocolIPSec*) self.manager.protocolConfiguration;
if(!set)
{
set = [[NEVPNProtocolIPSec alloc]init];
}
set.username = @"username";//VPN用戶名
set.passwordReference = [@"password" dataUsingEncoding:NSUTF8StringEncoding];//VPN密碼
set.serverAddress = @"ip";//ip地址
set.sharedSecretReference = [@"SecretReference" dataUsingEncoding:NSUTF8StringEncoding];
// NEVPNIKEAuthenticationMethodCertificate:使用證書和私鑰作為身份驗證憑據。
// NEVPNIKEAuthenticationMethodSharedSecret:使用共用密鑰的身份驗證憑據
set.authenticationMethod = NEVPNIKEAuthenticationMethodSharedSecret;
set.useExtendedAuthentication = YES;//這是一個標誌指示如果擴展驗證將協商
set.disconnectOnSleep = NO;//這個布爾表示是否VPN連接時,必須斷開設備睡覺
self.manager.protocolConfiguration = set;
self.manager.localizedDescription = @"hrjd";//VPN的描述
[self.manager setOnDemandEnabled:YES];
[self.manager saveToPreferencesWithCompletionHandler:^(NSError * _Nullable error) {
NSError * error1 ;
//連接VPN
[manager.connection startVPNTunnelAndReturnError:&error1];
if (error) {
NSLog(@"VPN連接失敗");
}else{
NSLog(@"VPN連接成功");
}
}];
}];
[vpnManager.connection stopVPNTunnel];
//斷開VPN