NEVPNManager சேமிக்கவில்லையா? வரிசை ஏற்று, இயக்கு, சேமி, இணை
குறியீடு 4 மற்றும் குறியீடு 5 பொதுவாக சுயவிவரம் ஏற்றப்படுவதற்கு முன் திருத்தப்பட்டது அல்லது முடக்கப்பட்ட நிலையில் சேமிக்கப்பட்டது என்று பொருள். அழைப்புகளின் வரிசையைச் சரிசெய்து, பிறகு உரிமத்தைச் சரிபார்க்கவும்.
iOS இல் Network Extension VPN க்கான பெரும்பாலான முதல் முயற்சிகளை இரண்டு பிழைக் குறியீடுகள் விளக்குகின்றன: NEVPNErrorDomain Code=4 மற்றும் Code=5. இரண்டில் ஒன்றும் சேவையகத்தின் புகார் அல்ல. ஒன்று, பயன்பாடு வட்டில் இருந்து ஒருபோதும் படிக்கப்படாத பொருளுக்கு அமைப்புகளை எழுதும்போது தோன்றும், மற்றொன்று எழுத்தே தோல்வியடையும்போது, பெரும்பாலும் சுயவிவரம் இன்னும் முடக்கப்பட்டிருக்கும்போது சேமிக்கப்படுவதால். இரண்டும் நான்கு அழைப்புகளின் வரிசையை மாற்றுவதால் சரிசெய்யப்படும், IKEv2 அளவுருக்களைத் தொடாமல்.
முதலில் ஏற்று, இல்லையெனில் சேமிப்புக்கு ஒப்பிட எதுவும் இல்லை
நிர்வாகி சேமிக்கப்பட்ட சுயவிவரத்தின் நகலை வைத்திருக்கிறார், நீங்கள் திருத்தும் பொருள் அதைப் படிக்கும் வரை அந்த நகல் அல்ல. முதலில் loadFromPreferences ஐ அழைக்கவும், அதன் முடிவு கையாளியின் உள்ளே திருத்தவும், பின்னர் சேமிக்கவும். படிப்பதைத் தவிர்த்தால், அமைப்பு தன்னிடம் இருப்பதற்கும் நீங்கள் எழுதுவதற்கும் இடையே முரண்பாட்டைக் காண்கிறது. Swift இல் ஒவ்வொரு படிநிலையின் வடிவும் ஒன்றே, ஒவ்வொரு படிநிலையும் அதன் சொந்த கிளோஷரில் இருக்கும்:
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
}
}
சேமிப்பு கிளோஷரின் உள்ளேயிருந்து சுரங்கத்தைத் தொடங்குவது வேறொரு இடத்தில் அதே தவறு. சுயவிவரம் மீண்டும் படிக்கப்படுவதற்கு முன் அது இயங்குகிறது, எனவே தொடக்க அழைப்பு நீங்கள் கட்டிய நிலையைப் பார்க்கிறது, சேமிக்கப்பட்ட நிலையை அல்ல. சேமிப்பு கிளோஷர் இரண்டாவது 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 கீழ் தோன்றுவதை உறுதிப்படுத்தி ஒவ்வொரு கிளோஷரின் பிழையையும் பதிவு செய்யவும். அந்த இரண்டு உண்மைகள் அனுமானமின்றி வரிசைப் பிழையை அனுமதிப் பிழையிலிருந்து பிரிக்கின்றன.