我已经使用以下代码创建了网络管理器。但第一行调用一经运行,管理器就为零,因此其他任何方法都不会生效。任何人都可以让我知道我做错了什么吗?

        NEVPNManager *manager = [NEVPNManager sharedManager];

        NEVPNProtocolIPSec *p = [[NEVPNProtocolIPSec alloc] init];
        p.username = @"MYUSERNAME";
        p.passwordReference = [@"MYPW" dataUsingEncoding:NSUTF8StringEncoding];
        p.serverAddress = @"[NetworkIP]";
        p.authenticationMethod = NEVPNIKEAuthenticationMethodSharedSecret;
        p.sharedSecretReference = [@"SharedSecretHashCode"  dataUsingEncoding:NSUTF8StringEncoding];

        [manager setProtocol:p];
        [manager setOnDemandEnabled:NO];
        [manager setLocalizedDescription:@"VIT VPN"];
         NSArray *array = [NSArray new];
        [manager setOnDemandRules: array];
         NSLog(@"Connection desciption: %@", manager.localizedDescription);
         NSLog(@"VPN status:  %li", (long)manager.connection.status);


         [manager saveToPreferencesWithCompletionHandler:^(NSError *error) {
            if(error) {
                NSLog(@"Save error: %@", error);
            }
         }];

manager”为零。请帮忙。提前致谢。

最佳答案

我为NEVPNManager实例的问题找到了解决方案。

向应用程序使用此证书时,开发人员必须需要APPID已启用VPN Configuration & controls的相关证书。并且此应用必须在设备中运行。

因此,NEVPNManager不会为nil,可以从设备的共享实例中改编。 (也来自NetworkExtension.framework,可用于iOS8及更高版本的设备)

可能这可以帮助遇到相同问题的任何人。

10-05 20:12