提问者:小点点

如何检测是否安装了NEVPNManager配置?


我正在使用NetworkExtension框架在iOS上使用VPN。我可以安装配置并建立连接。我的问题是,是否有一种方法可以检测VPN配置是否仍在安装,或者检测用户是否已卸载该配置?

我不一定要在后台寻找通知或任何东西,但我要寻找的是当应用程序被带到前台时我所做的一些方法/变通方法?

我正在使用由中间CA颁发的证书进行证书身份验证,并尝试了以下“评估信任”方法:检查iOS上是否安装了配置文件

这对我不起作用。我总是被信任。我也试过这个:

if([NEVPNManager sharedManager].protocol){
   //installed
}else{
   //not installed
}

但这也行不通。卸载后,协议仍然有效。如果我退出并重新启动应用程序,则协议无效。

如有任何建议,我们将不胜感激。


共2个答案

匿名用户

您可以尝试以下操作

if ([[[NEVPNManager sharedManager] connection] status] == NEVPNStatusInvalid) {
    //...
}

匿名用户

可能会晚一点。但我也遇到过同样的问题。不过,你的做法让我找到了正确的方向。您应该在LoadFromPreferencesWithCompletionHandler的完成处理程序中加载它

在我看来,Proper使用检查是否安装了配置文件:

   manager = [NEVPNManager sharedManager];

   [manager loadFromPreferencesWithCompletionHandler:^(NSError *error) {
       if (manager.protocol == nil) {
           NSLog(@"Profile is not installed, you might want to install a profile");
       } else {
           NSLog(@"Profile is installed. It looks like this: %@",manager.protocol);
       }
   }];