Apple は、iOS 8 で新しいフレームワーク「NetworkExtension」を公開しました。
NEVPNManager を使用してアプリから VPN 接続を開始したいですか、それともこのフレームワークを別の用途に使用しますか?
このフレームワークに関する情報や例はありますか? これに関する情報は、developer.apple.com Web サイトで見つけることができず、ヘッダー ファイルでのみ見つかります。
ありがとう
Apple は、iOS 8 で新しいフレームワーク「NetworkExtension」を公開しました。
NEVPNManager を使用してアプリから VPN 接続を開始したいですか、それともこのフレームワークを別の用途に使用しますか?
このフレームワークに関する情報や例はありますか? これに関する情報は、developer.apple.com Web サイトで見つけることができず、ヘッダー ファイルでのみ見つかります。
ありがとう
コードは次のようになります (正確な実装は VPN のタイプによって異なります)。
NEVPNManager *manager = [NEVPNManager sharedManager];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vpnConnectionStatusChanged) name:NEVPNStatusDidChangeNotification object:nil];
NEVPNProtocolIPSec *protocol = [[NEVPNProtocolIPSec alloc] init];
protocol.username = @“[Your username]”;
protocol.passwordReference = [KeyChainAccess loadDataForServiceNamed:@“[Your Service Name]"];
protocol.serverAddress = @“[Your Server Address]“;
protocol.authenticationMethod = NEVPNIKEAuthenticationMethodCertificate;
protocol.localIdentifier = @“[Your Local identifier]”;
protocol.remoteIdentifier = @“[Your Remote identifier]”;
protocol.useExtendedAuthentication = NO;
protocol.identityData = [Your VPN certification private key];
protocol.disconnectOnSleep = NO;
[manager setProtocol:protocol];
[manager setOnDemandEnabled:NO];
[manager setLocalizedDescription:@"VPN"];
NSArray *array = [NSArray new];
[manager setOnDemandRules: array];
NSLog(@"Connection desciption: %@", manager.localizedDescription);
NSLog(@"VPN status: %i", manager.connection.status);
[manager loadFromPreferencesWithCompletionHandler:^(NSError *error) {
// do config stuff
[manager saveToPreferencesWithCompletionHandler:^(NSError *error) {
}];
}];
NSError *startError;
[[NEVPNManager sharedManager].connection startVPNTunnelAndReturnError:&startError];
if(startError) {
NSLog(@"Start error: %@", startError.localizedDescription);
}