NEVPNManager хадгалж чадахгүй байна уу? Дараалал нь ачаалах, идэвхжүүлэх, хадгалах, холбогдох
4 ба 5 код нь ихэвчлэн профайлыг ачаалахаас өмнө засварласан эсвэл идэвхгүй үед хадгалсан гэсэн үг. Дуудлагын дарааллыг засаад, дараа нь эрхийг шалгаарай.
iOS дээр Network Extension VPN-ийн анхны оролдлогын ихэнхийг хоёр алдааны код тайлбарладаг: NEVPNErrorDomain Code=4 ба Code=5. Аль нь ч серверийн гомдол биш. Нэг нь апп дискнээс хэзээ ч уншигдаагүй объект руу тохиргоо бичих үед гарч ирдэг, нөгөө нь бичих үйлдэл өөрөө бүтэлгүйтэх үед, ихэнхдээ профайл идэвхгүй байхдаа хадгалагддаг учраас. Хоёулаа дөрвөн дуудлагын дарааллыг өөрчилснөөр засагдана, IKEv2 параметрт хүрэхгүйгээр.
Эхлээд ачаал, эс бөгөөс хадгалхад харьцуулах зүйл байхгүй
Менежер хадгалсан профайлын хуулбарыг барьдаг бөгөөд таны засварлаж буй объект нь түүнийг унших хүртэл тэр хуулбар биш. Эхлээд loadFromPreferences дуудаж, түүний дуусгах зохицуулагч дотор засварлаад, дараа нь хадгал. Уншилтыг алгасвал хүрээ нь өөрт байгаа болон таны бичиж буй зүйлийн хооронд зөрүү харна. Swift-д алхам бүрийн хэлбэр ижил бөгөөд алхам бүр өөрийн closure-д хамаарна:
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
}
}
Хадгалах closure-ийн дотроос туннелийг эхлүүлэх нь өөр газар дахь мөн тэр алдаа. Профайл дахин уншигдахаас өмнө ажилладаг тул эхлүүлэх дуудлага нь хадгалсан төлөвийг бус таны бүтээсэн төлөвийг харна. Хадгалах closure нь хоёр дахь loadFromPreferences-ээр төгсдөг бөгөөд зөвхөн тэр дуусгах зохицуулагч startVPNTunnel дуудна.
Идэвхжүүлэх туг нь хадгалалтын хэсэг
Хадгалсан профайл асаах хүртэл идэвхгүй. isEnabled = true-г мөн тэр бичилтэд тохируул, эс бөгөөс профайл диск дээр идэвхгүй бууж, Тохиргоо бүрэн мэт харагдах тохиргоог харуулсан ч startVPNTunnel татгалзана.
Гадаад засварууд нь нөгөө хагас. Хэрэв хэрэглэгч Тохиргоонд ямар нэг зүйл өөрчилбөл, эсвэл төхөөрөмж сүлжээнүүдийн хооронд шилжвэл, ой санамжид байгаа утгуудад итгэхээс өмнө дахин унш. Объект тэдгээр өөрчлөлтийг таны оронд ажиглахгүй. Хуучирсан хуулбар нь апп хэрэглэгчийн засварыг чимээгүй буцаадаг профайл бичих зам юм. Хажуу хоёр талбар нэг мөчид чимээгүй бэрхшээл үүсгэдэг: on-demand дүрмүүд хоосон орлуулагч биш, дүрмийн объектуудын массив байх ёстой, disconnectOnSleep нь хуулсан өгөгдмөл биш, таны сонгосон зан төлөвийг илэрхийлэх ёстой.
Гуравдагч талын аппуудад зөвхөн хоёр протокол боломжтой
Network Extension аппуудад IPsec ба IKEv2 өгдөг. L2TP ба PPTP системийн дотор үлддэг, тиймээс тэдгээрт хэрэгтэй апп тэднийг авч чадахгүй, бодит хариулт нь IKEv2 дэмждэг гарц эсвэл удирдлагатай тохиргооны профайл.
Итгэмжлэлүүд ижил хэв маягийг дагадаг. Нууц үгийг Keychain-д хийж, мөрийн оронд байнгын лавлагаа дамжуул. Хадгалах үеийн тэг лавлагаа нь ихэвчлэн зүйлийг бичихээс өмнө хайлт ажилласан гэсэн үг, менежер эвдэрсэн гэсэн үг биш.
Хоёулаа дизайны шийдвэр, тойрч гарах арга биш. Нууц үгийг өөрийн тохиргоонд хадгалдаг апп нь хүрээ дэмждэггүй замыг сонгодог бөгөөд түүний үүсгэсэн бүтэлгүйтэл хадгалалтын алдаа мэт уншигддаг.
Кодыг дахин бичихээс өмнө эрхийг хасаарай
loadFromPreferences огт буцаж дуудахгүй бол боломжит шалтгаан нь дутуу Network Extension чадвар эсвэл түүнийг агуулаагүй бэлтгэлийн профайл юм. Тэр бүтэлгүйтэл алдаа өгөхийн оронд дүүжлэгддэг, тиймээс ажиллаж буй кодыг цагаар дахин бичдэг. Та илгээхээр төлөвлөж буй гарын үсэгтэй билд дээр эрхийг шалга, учир нь симулятор болон төхөөрөмж дээр ажиллуулах нь ялгаатай байж болох бөгөөд чухал зорилт нь төхөөрөмж. Зорилтын гарын үсгийн тохиргоог нээж, яг тэр билдэд Network Extension чадвар байгааг батал.
Эрхгүй бэлтгэлийн профайл техник хангамж дээр мөн адил бүтэлгүйтдэг бол ижил билд симуляторт хэвийн ачаалагдаж болно. Дуудлагын дарааллыг дахин бичихээс өмнө гарын үсэгтэй архивыг бодит төхөөрөмж дээр туршаарай.
Таамаглал биш, төлөвийн өөрчлөлтийг ажигла
NEVPNStatusDidChangeNotification-ыг ажиглаж, алхам бүрийн дараа manager.connection.status-ыг бүртгэ. invalid-ээс хэзээ ч гарахгүй төлөв нь профайл хадгалагдаагүй эсвэл эрх байхгүй гэсэн үг. connecting-д хүрээд хэзээ ч холбогдохгүй холболт нь санал эсвэл итгэмжлэл рүү заадаг бөгөөд энэ нь өөр нотолгоотой өөр мөрдөн шалгалт юм.
Профайл Тохиргоо, Ерөнхий, VPN-ийн доор харагдахыг баталж, closure бүрийн алдааг тэмдэглэ. Эдгээр хоёр баримт таамаглалгүйгээр дарааллын алдааг зөвшөөрлийн алдаанаас ялгана.