У меня есть приложение с конфигурацией VPN, созданное новой структурой NetworkExtension. Он отлично работает, но теперь мне нужно добавить некоторые правила, чтобы включить этот VPN только тогда, когда я пытаюсь подключиться к определенному URL-адресу. Я планировал использовать функцию connectOnDemand NEVPNManager, но, похоже, она у меня не работает. Когда я открываю http://some-site.com в Safari, мое VPN-соединение должно устанавливаться, но для некоторых причина, по которой это не так. Я пробовал разные типы конфигураций, а также использовал сгенерированные файлы .mobileconfig, чтобы заставить работать connectOnDemand, но безуспешно. Что с этим не так? Я тестирую такой код:
let manager = NEVPNManager.sharedManager()
manager.enabled = true
manager.loadFromPreferencesWithCompletionHandler { (err) -> Void in
manager.removeFromPreferencesWithCompletionHandler { (err0) -> Void in
print("err0 \(err0)")
print("err \(err)")
let config = NEVPNProtocolIPSec()
config.localIdentifier = "NEVPNProtocolIPSec"
config.remoteIdentifier = "NEVPNProtocolIPSecRemote"
config.disconnectOnSleep = true
config.serverAddress = server
config.authenticationMethod = .Certificate
//configurating here
manager.protocolConfiguration = config
let onDemandRule1 = NEOnDemandRuleConnect()
onDemandRule1.DNSSearchDomainMatch = ["some-site.com", "*.some-site.com"]
manager.onDemandRules = [onDemandRule1]
manager.onDemandEnabled = true
manager.saveToPreferencesWithCompletionHandler({ (err2) -> Void in
print("err2 \(err2)")
})
}
}