Objective c NetworkExtension-NEVPNManager

Objective c NetworkExtension-NEVPNManager,objective-c,frameworks,vpn,ios8,Objective C,Frameworks,Vpn,Ios8,苹果在iOS 8上发布了一个新的框架“NetworkExtension” 我想用NEVPNManager从应用程序启动VPN连接,或者这个框架还有其他用途吗 是否有人提供了有关此框架的信息或示例? 我在developer.apple.com网站上找不到关于它的信息,只能在头文件中找到 谢谢代码如下所示(具体实现取决于VPN的类型): 关于这个显然是新的框架,这里还有另一个问题:也许我的回答可以帮助你,如果你不是MDM供应商,你能使用它吗?@Array是的,你不需要苹果的任何初步批准,你只需要像往

苹果在iOS 8上发布了一个新的框架“NetworkExtension”

我想用NEVPNManager从应用程序启动VPN连接,或者这个框架还有其他用途吗

是否有人提供了有关此框架的信息或示例? 我在developer.apple.com网站上找不到关于它的信息,只能在头文件中找到


谢谢

代码如下所示(具体实现取决于VPN的类型):


关于这个显然是新的框架,这里还有另一个问题:也许我的回答可以帮助你,如果你不是MDM供应商,你能使用它吗?@Array是的,你不需要苹果的任何初步批准,你只需要像往常一样通过标准的应用程序批准流程。你如何通过认证私钥数据?证书是否像捆绑包一样添加到应用程序中?如果我们不设置identityData,那么每次连接到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);
}