利用NetworkExtension庫配置VPN,networkextensionvpn
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