Расширение сети — NEVPNManager

Apple опубликовала с iOS 8 новый фреймворк NetworkExtension.

Я хочу запустить VPN-подключение из приложения с помощью NEVPNManager, или у этого фреймворка есть другое применение?

Есть ли у кого-нибудь информация или пример об этой структуре? Я не могу найти информацию об этом на сайте developer.apple.com, только в заголовочных файлах.

Спасибо


person speedboosting    schedule 05.06.2014    source источник
comment
здесь есть еще один вопрос об этой, по-видимому, новой структуре: 8">stackoverflow.com/questions/24970280/   -  person Rembrandt Q. Einstein    schedule 30.07.2014
comment
Возможно, мой ответ поможет вам stackoverflow.com /вопросы/29018868/   -  person Alexander Yakovlev    schedule 21.03.2016


Ответы (1)


Код будет выглядеть примерно так (точная реализация зависит от типа 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);
}
person mobileideafactory.com    schedule 30.07.2014
comment
Можете ли вы использовать это, если вы не являетесь поставщиком MDM? - person Array; 22.07.2015
comment
@Array Да, вам не нужно предварительное одобрение Apple, вам просто нужно пройти стандартный процесс утверждения приложения, как всегда. - person Valentin Shergin; 24.10.2015
comment
Как бы вы передали данные закрытого ключа сертификации? Сертификат добавлен в приложение, как в комплекте? если мы не установим identityData, будет ли нам запрашиваться пароль каждый раз, когда мы подключаемся к vpn? - person Siddharthan Asokan; 21.02.2016