In my app I am trying to configure VPN settings in App load delegate. I am calling following method in my app delegate
- (void)configureVPN {
NEVPNManager *manager = [NEVPNManager sharedManager];
[manager loadFromPreferencesWithCompletionHandler:^(NSError * _Nullable loadError) {
if (loadError) {
NSLog(@"vpn setup error: %@", loadError);
} else {
[manager setOnDemandEnabled: YES];
NSMutableArray *rules = [[NSMutableArray alloc] init];
NEOnDemandRuleConnect *connectRule = [NEOnDemandRuleConnect new];
[rules addObject:connectRule];
[manager setOnDemandRules:rules];
[manager saveToPreferencesWithCompletionHandler:^(NSError * _Nullable saveError) {
if (saveError) {
NSLog(@"vpn setup error: %@", saveError);
} else {
NSLog(@"vpn config set");
NSError *connError;
[manager.connection startVPNTunnelAndReturnError:&connError];
if (connError) {
NSLog(@"Unable to connect to VPN: %@", connError);
} else {
NSLog(@"VPN connection established");
}
}
}];
}
}];
}
but I am getting error on manager loadFromPreferencesWithCompletionHandler
Error:
Failed to load the configuration: Error Domain=NEVPNErrorDomain Code=5 "permission denied" UserInfo={NSLocalizedDescription=permission denied}
I thought it was because of missing capabilities but Personal VPN
is enabled in capabilities.