Bi errore-kodek azaltzen dituzte iOS-en Network Extension VPN batekin egindako lehen saiakera gehienak: NEVPNErrorDomain Code=4 eta Code=5. Biak ez dira zerbitzariaren kexa. Bata agertzen da aplikazioak inoiz diskotik irakurri ez duen objektu batean ezarpenak idazten dituenean, eta bestea idazketak berak huts egiten duenean, sarritan profila oraindik desgaituta dagoela gordetzen delako. Biak lau deiren ordena aldatuta konpontzen dira, ez IKEv2 parametroei ukituta.

Lehenengo kargatu, bestela gordetzeak ez du zerekin alderatu

Kudeatzaileak gordetako profilaren kopia bat dauka, eta editatzen duzun objektua ez da kopia hori irakurtzen duzun arte. Deitu loadFromPreferences lehenengo, editatu bere osatze-kudeatzailearen barruan, eta gero gorde. Irakurketa saltatzen baduzu, markoak desadostasuna ikusten du daukarenaren eta idazten ari zarenaren artean. Swift-en forma bera da urrats guztietan, eta urrats bakoitza bere closure propioan dago:

let mgr = NEVPNManager.shared()
mgr.loadFromPreferences { loadErr in
    guard loadErr == nil else { return }
    let proto = NEVPNProtocolIKEv2()
    proto.serverAddress = "vpn.example.net"
    proto.username = "alice"
    proto.useExtendedAuthentication = true
    mgr.protocolConfiguration = proto
    mgr.isEnabled = true
    mgr.saveToPreferences { saveErr in
        // do not start here; reload, then connect
    }
}

Tunela gordetze-closurearen barrutik abiatzea akats bera da beste leku batean. Profila berriro irakurri aurretik exekutatzen da, beraz, abiatze-deiak eraiki duzun egoera ikusten du, gordetako egoera ez. Gordetze-closurea bigarren loadFromPreferences batekin amaitzen da, eta osatze-kudeatzaile horrek bakarrik deitzen du startVPNTunnel.

Gaitu-bandera gordetzearen parte da

Gordetako profila geldirik dago pizten ez den arte. Ezarri isEnabled = true idazketa berean, bestela profila desgaituta iristen da diskora eta startVPNTunnel uko egiten du Ezarpenean itxura osoa duen konfigurazioa erakusten bada ere.

Kanpo-edizioak honen beste erdia dira. Erabiltzaileak Ezarpenean zerbait aldatzen badu, edo gailua sareen artean mugitzen bada, irakurri berriro memorian oraindik dituzun balioetan fidatu aurretik. Objektuak ez ditu aldaketa horiek zuretzat behatzen. Kopia zaharkitua da aplikazioak erabiltzailearen edizioa isilpean atzera botatzen duen profila idazteko modua. Alboko bi eremuk arazo isila sortzen dute une berean: on-demand arauek arau-objektuen array bat izan behar dute, ez leku-markatzaile huts bat, eta disconnectOnSleep-ek aukeratu duzun portaera islatu behar du, ez kopiatutako lehenetsia.

Hirugarrenen aplikazioentzat bi protokolo baino ez daude eskuragarri

Network Extension-ek IPsec eta IKEv2 ematen dizkie aplikazioei. L2TP eta PPTP sistemaren barruan geratzen dira, beraz, horiek behar dituen aplikazioak ezin ditu lortu, eta erantzun errealistak IKEv2 gaitutako atebidea edo kudeatutako konfigurazio-profila dira.

Kredentzialek eredu bera jarraitzen dute. Jarri pasahitza Keychain-en eta pasa erreferentzia iraunkor bat katearen ordez. Gordetzean erreferentzia nulua izateak normalean esan nahi du bilaketa elementua idatzi aurretik exekutatu zela, ez kudeatzailea hautsi zela.

Biak diseinu-erabakiak dira, ez konponbide informalak. Pasahitza bere hobespen propioetan gordetzen duen aplikazioak markoak gomendatzen ez duen bidea aukeratzen du, eta sortzen duen hutsak gordetze-errore baten gisa irakurtzen da.

Baztertu baimena kodea berridatzi aurretik

loadFromPreferences inoiz ez denean itzultzen, ziurrenik Network Extension gaitasun bat falta da edo hura ez daraman hornitze-profila dago. Hutsegite hori zintzilik geratzen da errorea eman beharrean, eta horregatik funtzionatzen duen kodea orduak berridazten dira. Egiaztatu baimena entregatu nahi duzun build sinatuan, simuladoreko exekuzio bat eta gailukoa desberdinak izan baitaitezke, eta axola duen helburua gailua da. Ireki helburuaren sinadura-ezarpenak eta berretsi Network Extension gaitasuna build zehatz horretarako dagoela.

Baimena ez duen hornitze-profilak berdin huts egiten du hardwarean, build berak simuladorean normaltasunez karga daitekeen bitartean. Probatu sinatutako fitxategia benetako gailuan deien ordena berridatzi aurretik.

Behatu egoera-aldaketak, ez suposizioak

Behatu NEVPNStatusDidChangeNotification eta erregistratu manager.connection.status urrats bakoitzaren ondoren. Inoiz invalid uzten ez duen egoerak esan nahi du profila ez zela gorde edo baimena falta dela. connecting-era iristen eta inoiz konektatzen ez den konexioak proposamenari edo kredentzialei seinalatzen die, eta hori beste ikerketa bat da, beste froga batzuekin.

Berretsi profila Ezarpenean, Orokorra, VPN atalean agertzen dela, eta erregistratu closure bakoitzeko errorea. Bi gertaera horiek ordena-errore bat eta baimen-errore bat bereizten dituzte asmatu gabe.

Erlazionatutako artikuluak