Intereting Posts
Перетаскивание элементов управления в Objective C (iOS) UILabel добавить GradientLayer Вызовите URL-адрес приложения, которое не установлено Как создать программный код нового контроллера представления Использование встроенных значков кнопок на панели iOS 11 – Предложения для пользовательского контроллера просмотра не загружаются – сбои Почему размер прокрутки UIImageView изменяется? Перезапуск RKObjectRequestOperation с новой аутентификацией iCloud Резервное копирование / восстановление приложения HTML5 Cordova в iOS self.window addSubview не работает должным образом Не удалось загрузить локально сохраненные изображения быстрее в виде коллекции.? Определите размер файла приложения iOS перед отправкой в ​​App Store. Как обращаться ко всем, кроме одного didReceiveMemoryWarning не вызвано – приложение UITabBarViewController Какой поток выполняет NSOperation, если он выполняется вручную, используя ?

VPN останавливается при переходе от Wi-Fi к мобильным данным. VPN подключается программно в iOS

Я использую Network Extension для настройки и подключения VPN-сервера программным способом. Я могу начать и остановить VPN. Я написал следующий код для настройки VPN в viewDidLoad.

NEVPNManager *manager = [NEVPNManager sharedManager]; [manager loadFromPreferencesWithCompletionHandler:^(NSError *error) { if(manager.protocol == nil) { NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"VPNCert" ofType:@"p12"]; NSData *certData = [NSData dataWithContentsOfFile:filePath]; NSString *certPassword = @"password"; NSString *vpnUsername = @"username"; NSString *vpnPassword = @"password"; NSString *vpnUrl = @"VPN Server IP"; // This saves my credentials to the keychain and returns a persistent keychain reference NSData *passRef = [self addVPNCredentialsToKeychain:vpnUsername withPassword:vpnPassword]; NEVPNProtocolIPSec *p = [[NEVPNProtocolIPSec alloc] init]; p.authenticationMethod = NEVPNIKEAuthenticationMethodCertificate; p.serverAddress = vpnUrl; p.username = vpnUsername; p.passwordReference = passRef; p.identityData = certData; p.identityDataPassword = certPassword; p.disconnectOnSleep = NO; p.useExtendedAuthentication = YES; manager.protocol = p; manager.enabled = YES; [manager setOnDemandEnabled:NO]; [manager setLocalizedDescription:@"VPN Network"]; [manager saveToPreferencesWithCompletionHandler:^(NSError *error) { if(error) { NSLog(@"Load error: %@", error); } }]; } }]; 

Я также написал код для запуска VPN при нажатии кнопки.

 - (IBAction)buttonPressed:(id)sender { NEVPNManager *manager = [NEVPNManager sharedManager]; [manager loadFromPreferencesWithCompletionHandler:^(NSError *error) { if (!error) { NSError *startError = [[NSError alloc] init]; [[NEVPNManager sharedManager].connection startVPNTunnelAndReturnError:&startError]; } }]; } 

Случаи, которые работают для меня.

  1. Если я подключу VPN в мобильных данных и переключится на Wi-Fi, в этом случае VPN не отключается.
  2. Также работает, если я подключаю VPN в мобильных данных и переключаюсь на Wi-Fi, а затем обратно в мобильные данные. VPN не отключается.

Проблема заключается в

Если я подключу VPN в Wi-Fi, а затем переключитесь на мобильные данные, в этом случае VPN остановится. Я хочу, чтобы VPN остановился только тогда, когда пользователь остановит VPN.

Какие-либо шаги отсутствуют при настройке VPN из-за того, что VPN останавливается?

Заранее спасибо.

Solutions Collecting From Web of "VPN останавливается при переходе от Wi-Fi к мобильным данным. VPN подключается программно в iOS"