iOS యాప్ లోపల VPN స్క్రీన్ను నిర్మించినప్పుడు, మొదటి ఆశ్చర్యం ఏమిటంటే Settings యాప్లోని ప్రోటోకాల్ జాబితా API జాబితా కాదు. Network Extension ఫ్రేమ్వర్క్ మీ యాప్కు ఆ యాప్ యాజమాన్యంలోని ఒక వ్యక్తిగత VPN కాన్ఫిగరేషన్ను సృష్టించడానికి అనుమతిస్తుంది, మరియు కొన్ని ప్రోటోకాల్ ఆబ్జెక్ట్లను మాత్రమే అంగీకరిస్తుంది. ప్రజలు ఆశించే మిగతావన్నీ, L2TP నుండి డౌన్లోడ్ చేసిన ప్రొఫైల్ వరకు, ఆ ఉపరితలం వెలుపల ఉంది లేదా Apple కు ప్రైవేట్. తరువాత వచ్చే వైఫల్యాలు సాధారణంగా బగ్లు కావు, ఎప్పుడూ ఇవ్వని పనిని API నిరాకరిస్తోంది.

పురాణం: API ఒక Settings ఎడిటర్

iOS IKEv1, IKEv2, L2TP మరియు IPsec ప్రొఫైల్లను కాన్ఫిగర్ చేయగలదు కాబట్టి, యాప్ వాటిలో ఏదైనా ప్రోగ్రామాటిక్గా సృష్టించగలదని నమ్ముతారు. కాదు. ఫ్రేమ్వర్క్ పిలిచే యాప్కు సరిగ్గా ఒక కాన్ఫిగరేషన్ స్లాట్ను అందిస్తుంది, ఆ స్లాట్ పబ్లిక్ ప్రోటోకాల్ తరగతుల చిన్న సమూహాన్ని మాత్రమే అంగీకరిస్తుంది. ప్రజలు ఆశించే మిగతావన్నీ, L2TP నుండి డౌన్లోడ్ చేసిన ప్రొఫైల్ వరకు, ఆ ఉపరితలం వెలుపల ఉంది లేదా Apple కు ప్రైవేట్.

తరువాత వచ్చే వైఫల్యాలు సాధారణంగా బగ్లు కావు. ఎప్పుడూ ఇవ్వని పనిని API నిరాకరిస్తోంది, పరిష్కారం API కలిగి ఉన్న దాని చుట్టూ స్క్రీన్ను రూపకల్పన చేయడం.

మూడు ప్రోటోకాల్ ఆబ్జెక్ట్లు మరియు లేనివి

మీ ఎంపికలు NEVPNProtocolIPSec ద్వారా IKEv1, NEVPNProtocolIKEv2 ద్వారా IKEv2, మరియు మీ స్వంత ప్యాకెట్ టన్నెల్ పొడిగింపును పంపితే NETunnelProviderProtocol. NEVPNManager సూచన అంగీకరించిన ప్రోటోకాల్ ఆబ్జెక్ట్లను జాబితా చేస్తుంది. L2TP మరియు PPTP ఆ జాబితాలో ఎప్పుడూ కనిపించవు, ఎందుకంటే Apple వాటికి ఏ తరగతినీ ప్రచురించలేదు. వాటిలో ఒకదాన్ని ప్రయత్నించడం సేవ్ చేసే సమయంలో లోపంతో ముగుస్తుంది, లేదా అంతకంటే దారుణంగా, సిస్టమ్ నిశ్శబ్దంగా ఉపయోగించడానికి నిరాకరించే కాన్ఫిగరేషన్తో.

డెస్క్టాప్ కోడ్ వేరే నియమాలను అనుసరిస్తుంది. macOS లో SCNetworkInterfaceCreateWithInterface IPv4 పై L2TP వంటి ఇంటర్ఫేస్ రకాన్ని పోగుగా చేసి దాన్ని నెట్వర్క్ సేవకు జోడిస్తుంది, networksetup -connectpppoeservice ఫలితాన్ని ప్రారంభిస్తుంది. నిర్వాహక హక్కులు మరియు సహాయ సాధనం అవసరం, ఎందుకంటే పంచుకున్న రహస్యం మరియు పాస్వర్డ్ సిస్టమ్ కీచైన్కు వెళ్తాయి. ఆ డిజైన్ను iOS కు కాపీ చేయండి, ఏదీ కంపైల్ కాదు.

పాస్వర్డ్ కాదు, కీచైన్ సూచనను ఇవ్వండి

ఏ IKE తరగతి పాస్వర్డ్ను టెక్స్ట్గా అంగీకరించదు. passwordReference మరియు sharedSecretReference అనే రెండు లక్షణాలు శాశ్వత కీచైన్ సూచనను కోరుతాయి, దాన్ని మీరు kSecReturnPersistentRef అడిగి SecItemCopyMatching నుండి పొందుతారు. ఐటమ్ డేటాను పంపడం, లేదా ఫీల్డ్లో స్ట్రింగ్ను పెట్టడం, సేవ్ వైఫల్యాన్ని లేదా ఖాళీ ఆధారాలతో కనెక్షన్ను సృష్టిస్తుంది. సూచన దాని వెనుక ఉన్న కీచైన్ ఐటమ్ మేరకే నిలుస్తుంది, కాబట్టి కాన్ఫిగరేషన్ అసెంబుల్ అయ్యే ముందు ఐటమ్ ఉండాలి. సేవ్ చేసే అదే లావాదేవీలో దాన్ని సృష్టించండి, క్రమ బగ్ల మొత్తం తరగతిని తొలగిస్తారు.

ధృవపత్ర ప్రామాణీకరణ వేరే మార్గాన్ని తీసుకుంటుంది: PKCS#12 బ్లాబ్ కోసం identityData మరియు identityDataPassword. ఆ బ్లాబ్ను యాప్ బండిల్ లోపల పంపడం నమూనా కోడ్ నుండి వచ్చిన అలవాటు, విడుదల నిర్ణయం కాదు, ఎందుకంటే పాస్వర్డ్ దానితో ప్రయాణిస్తుంది మరియు యాప్ యొక్క ప్రతి కాపీ అదే గుర్తింపును కలిగి ఉంటుంది.

హక్కు మరియు లభ్యత అన్నింటినీ గేట్ చేస్తాయి

నిర్వాహకుడు అసలు లేకపోవచ్చు, కారణం ప్రొవిజనింగ్. మీ యాప్ ఐడెంటిఫైయర్కు Network Extension సామర్థ్యం మరియు వ్యక్తిగత VPN హక్కు రెండూ అవసరం, బిల్డ్కు సంతకం చేసే ప్రొఫైల్ రెండింటినీ కలిగి ఉండాలి.

దీన్ని దాటవేస్తే పంచుకున్న ఇన్స్టాన్స్ nil ఇస్తుంది, లేదా హక్కును ఎప్పుడూ ప్రస్తావించని లోపంతో సేవ్ విఫలమవుతుంది. లభ్యత రెండో ద్వారం. iOS 8 కంటే పాత దాన్ని లక్ష్యంగా పెట్టుకుంటే రన్టైమ్లో చిహ్నం ఉండదు, కాబట్టి వైఫల్యం క్రాష్ లేదా nil నిర్వాహకుడు, కాన్ఫిగరేషన్ లేని నిర్వాహకుడు కాదు. మీ ఆబ్జెక్ట్ గ్రాఫ్ను డీబగ్ చేయడానికి ముందు రన్టైమ్ మరియు హక్కును తనిఖీ చేయండి.

లోడ్ చేయండి, మార్చండి, సేవ్ చేయండి, ఆపై అభ్యర్థన క్రమాన్ని గమనించండి

జీవిత చక్రాన్ని లోడ్, మార్పు, సేవ్ గా పరిగణించండి మరియు లోడ్ను ఎప్పుడూ దాటవేయకండి. loadFromPreferences పూర్తయ్యే వరకు నిర్వాహకుడు ఏమీ ఉంచుకోడు మరియు ప్రోటోకాల్ ఆబ్జెక్ట్ను చదవలేరు లేదా మార్చలేరు.

రెండో సేవ్ మరొకటి జోడించకుండా కాన్ఫిగరేషన్ను భర్తీ చేస్తుంది, కాబట్టి సగం పూర్తయిన సేవ్ పనిచేస్తున్న ప్రొఫైల్ను దెబ్బతీయవచ్చు. అభ్యర్థన నియమాలు క్రమబద్ధమైన శ్రేణిని ఏర్పరుస్తాయి, ఆ క్రమమే విధానం. ఎక్కడి నుండైనా కనెక్ట్ నియమాన్ని డిస్కనెక్ట్ నియమానికి ముందు పెట్టండి, మాన్యువల్ డిస్కనెక్ట్ తర్వాత వెంటనే తిరిగి కనెక్ట్ అవుతుంది, ఇది లోపంలా కనిపిస్తుంది కానీ డాక్యుమెంట్ చేసిన మూల్యాంకనాన్ని అనుసరిస్తుంది.

వినియోగదారు చర్య గెలవాల్సినప్పుడు డిస్కనెక్ట్ నియమాన్ని ముందుకు కదిలించండి. యాప్ నియంత్రణ వెలుపల మిగిలేది కూడా అంతే ముఖ్యం. మార్గాలు మీరు సెట్ చేసే ప్రాధాన్యత నుండి కాదు, టన్నెల్ లేదా సర్వర్ విధానం నుండి వస్తాయి, ప్యాకెట్ టన్నెల్ ప్రదాత ప్రారంభమైనప్పుడు వాటిని నివేదిస్తుంది. ఇతర యాప్లు లేదా కాన్ఫిగరేషన్ ప్రొఫైల్లు ఇన్స్టాల్ చేసిన ప్రొఫైల్లను యాప్ జాబితా చేయలేదు లేదా సవరించలేదు, కాబట్టి పరికరంలోని ప్రతి VPNని చూపించే స్క్రీన్ను వాగ్దానం చేయకండి.

సంబంధిత వ్యాసాలు