objective-c - 网络扩展 - NEVPNManager

标签 objective-c frameworks vpn ios8

Apple 在 iOS 8 中发布了一个新的框架“NetworkExtension”。

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

有人提供有关此框架的信息或示例吗? 我无法在 developer.apple.com 网站上找到有关它的信息,只能在头文件中找到。

谢谢

最佳答案

代码看起来像这样(具体实现取决于 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);
}

关于objective-c - 网络扩展 - NEVPNManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056167/

相关文章:

javascript - 框架和工具包之间的主要区别是什么?

amazon-web-services - 如何在没有 VPN 的情况下设置 VPC 到 VPC 连接?

iOS VPN 一段时间后自动断开连接

ios - 无法理解@encode和objCType

objective-c - UITableView 数据源问题。当 UITableView :cellForRowAtIndexPath: is called 时,我的数据数组突然为空

javascript - 制作在线纸牌游戏的最佳工具是什么?

c++ - 以编程方式检测 VPN 连接 (c++)

iphone - 列出日历年中的天数

IOS:在 iOS 应用程序中转换广告

node.js - Microsoft Bot Framework verify Bot Framework() 始终返回 Forbidden