Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

324
Visualizações
¿Cómo eliminar todos los administradores existentes de NETunnelProviderManager?

Me encontré con un problema al usar NetworkExtension en Swift para utilizar OpenVPN o Wireguard con NETunnelProviderManager .

Tengo el siguiente código en ViewDidLoad de mi mainViewController. No lo cargo dos veces y funciona bien cuando uso el IKEv2 integrado de Apple.

 NotificationCenter.default.removeObserver(self, name: NSNotification.Name.NEVPNStatusDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(vpnStatusDidChange(_:)), name: NSNotification.Name.NEVPNStatusDidChange, object: nil)

Pero cuando uso OpenVPN o Wireguard a través de Networkextension, estos eventos de cambio de estado de red siguen activando n+1. Primera vez dispara una vez. La segunda vez que me conecto y desconecto, veo que los estados de la red se disparan dos veces, luego tres veces, etc.

He estado investigando mucho y parece que el problema está en el siguiente código:

 func loadTunnelProviderManager(completion:@escaping () -> Void) { NETunnelProviderManager.loadAllFromPreferences { (managers, error) in if error == nil { self.tunnelProviderManager = managers?.first ?? NETunnelProviderManager() completion() } } }

Si no recupero managers?.first y lo instalo cada vez:

 self.tunnelProviderManager = NETunnelProviderManager()

Entonces el problema está resuelto. Sin embargo, cada vez que me conecto a la VPN, inevitablemente también se crea una nueva configuración de VPN en la configuración, lo cual no es lo ideal.

TL;RD

Para resumir, ¿cómo elimino todos los administradores existentes antes de instanciar un nuevo NETunnelProviderManager ? Sé que esto podría ir en contra de la convención, pero resolverá el problema.

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda