NEVPNManager nesaglabā? Secība ir ielādēt, iespējot, saglabāt, savienot
4. un 5. kods parasti nozīmē, ka profils tika rediģēts pirms ielādes vai saglabāts atspējotā stāvoklī. Izlabojiet izsaukumu secību, pēc tam pārbaudiet tiesības.
Divi kļūdu kodi izskaidro lielāko daļu pirmo mēģinājumu ar Network Extension VPN iOS: NEVPNErrorDomain Code=4 un Code=5. Neviens no tiem nav servera sūdzība. Viens parādās, kad lietotne raksta iestatījumus objektā, kas nekad nav nolasīts no diska, bet otrs, kad pati rakstīšana neizdodas, visbiežāk tāpēc, ka profils tiek saglabāts, kamēr tas vēl ir atspējots. Abi tiek izlaboti, mainot četru izsaukumu secību, nevis aiztiekot IKEv2 parametrus.
Vispirms ielādējiet, citādi saglabāšanai nav ar ko salīdzināt
Pārvaldnieks tur ierakstītā profila kopiju, un objekts, kuru rediģējat, nav šī kopija, kamēr to neizlasāt. Vispirms izsauciet loadFromPreferences, rediģējiet tā pabeigšanas apstrādātājā un pēc tam saglabājiet. Ja izlaižat lasīšanu, ietvars redz neatbilstību starp to, kas tam ir, un to, ko rakstāt. Swift valodā forma ir vienāda katrā solī, un katrs solis pieder savam slēgumam:
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
}
}
Tuneļa palaišana no saglabāšanas slēguma iekšpuses ir tā pati kļūda citā vietā. Tas darbojas pirms profila atkārtotas nolasīšanas, tāpēc palaišanas izsaukums redz jūsu uzbūvēto stāvokli, nevis saglabāto stāvokli. Saglabāšanas slēgums beidzas ar otru loadFromPreferences, un tikai šis pabeigšanas apstrādātājs izsauc startVPNTunnel.
Iespējošanas karodziņš ir saglabāšanas daļa
Ierakstīts profils ir neaktīvs, līdz tas tiek ieslēgts. Iestatiet isEnabled = true tajā pašā rakstīšanā, citādi profils nonāk diskā atspējots, un startVPNTunnel atsakās pat tad, ja Iestatījumi rāda pilnīgu izskata konfigurāciju.
Ārējas izmaiņas ir otra puse. Ja lietotājs kaut ko maina Iestatījumos vai ierīce pārvietojas starp tīkliem, nolasiet vēlreiz, pirms uzticaties vērtībām, kuras vēl turat atmiņā. Objekts šīs izmaiņas jūsu vietā nenovēro. Novecojusi kopija ir veids, kā lietotne ieraksta profilu, kas klusi atgriež lietotāja labojumu. Divi blakus esoši lauki vienā mirklī rada klusu problēmu: on-demand noteikumiem jābūt noteikumu objektu masīvam, nevis tukšam vietturem, un disconnectOnSleep jāatspoguļo jūsu izvēlētā uzvedība, nevis nokopēta noklusējuma vērtība.
Trešo pušu lietotnēm pieejami tikai divi protokoli
Network Extension lietotnēm dod IPsec un IKEv2. L2TP un PPTP paliek sistēmas iekšienē, tāpēc lietotne, kurai tie nepieciešami, tos nevar iegūt, un reālās atbildes ir IKEv2 atbalstoša vārteja vai pārvaldīts konfigurācijas profils.
Akreditācijas dati seko tam pašam modelim. Ievietojiet paroli Keychain un nododiet pastāvīgu atsauci, nevis virkni. Nulles atsauce saglabāšanas laikā parasti nozīmē, ka meklēšana noritēja pirms elementa ierakstīšanas, nevis ka pārvaldnieks ir salūzis.
Abi ir dizaina lēmumi, nevis apiešanas ceļi. Lietotne, kas glabā paroli savos iestatījumos, izvēlas ceļu, ko ietvars neiesaka, un tās radītā kļūda lasās kā saglabāšanas kļūda.
Izslēdziet tiesības, pirms pārrakstāt kodu
Kad loadFromPreferences vispār neatgriež izsaukumu, iespējamais iemesls ir trūkstoša Network Extension iespēja vai nodrošināšanas profils, kas to nesatur. Šī kļūda karājas, nevis dod kļūdu, un tāpēc strādājošs kods tiek pārrakstīts stundām. Pārbaudiet tiesības parakstītajā būvējumā, kuru plānojat izlaist, jo palaišana simulatorā un ierīcē var atšķirties un svarīgais mērķis ir ierīce. Atveriet mērķa parakstīšanas iestatījumus un apstipriniet, ka Network Extension iespēja ir tieši šim būvējumam.
Nodrošināšanas profils bez tiesībām neizdodas tāpat uz aparatūras, kamēr tas pats būvējums simulatorā var ielādēties normāli. Pārbaudiet parakstīto arhīvu īstā ierīcē, pirms pārrakstāt izsaukumu secību.
Vērojiet stāvokļa izmaiņas, nevis pieņēmumus
Vērojiet NEVPNStatusDidChangeNotification un pēc katra soļa reģistrējiet manager.connection.status. Stāvoklis, kas nekad neatstāj invalid, nozīmē, ka profils netika saglabāts vai trūkst tiesību. Savienojums, kas sasniedz connecting un nekad nepievienojas, norāda uz priekšlikumu vai akreditācijas datiem, un tā ir cita izmeklēšana ar citiem pierādījumiem.
Apstipriniet, ka profils parādās sadaļā Iestatījumi, Vispārīgi, VPN, un pierakstiet kļūdu no katra slēguma. Šie divi fakti bez minējumiem atdala secības kļūdu no atļauju kļūdas.