As regras do NetworkExtension connectOnDemand não funcionam
Eu tenho um aplicativo com configuração de VPN criado pela nova estrutura NetworkExtension. Funciona muito bem, mas agora preciso adicionar algumas regras para ativar esta VPN apenas quando estou tentando conectar-me a um URL específico. Planejei usar o recurso connectOnDemand do NEVPNManager, mas ele não parece estar funcionando para mim. Quando eu estou abrindohttp://some-site.com no safari, minha conexão VPN deve ser estabelecida, mas por algum motivo isso não acontece. Tentei um tipo diferente de configurações, além de usar os arquivos .mobileconfig gerados para fazer o connectOnDemand funcionar, mas sem sorte. O que há de errado com isso? Estou testando em código como este:
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)")
})
}
}