Արտադրանքի մենեջերը խնդրում է կոճակ, որը միացնում է ընկերության VPN-ը, և հարցումը հնչում է տարրական։ iOS-ում սա փոքր ֆունկցիա չէ. այն դուրս է հանրային պայմանագրից, և յուրաքանչյուր շրջանցում կա՛մ ձախողվում է վերանայմանը, կա՛մ կոտրվում է հաջորդ թողարկմանը։ Անցկացրեք հարցումը այն ամենի միջով, ինչ պլատֆորմն իրոք թույլ է տալիս, և դիզայնը մեծ մասամբ ինքն է գրվում։ Հավելվածը կարող է ունենալ VPN կոնֆիգուրացիա և գործարկել այն։ Հավելվածը չի կարող հասնել համակարգի անջատիչին, չի կարող կարդալ իր չստեղծած պրոֆիլի վիճակը, և չի կարող օգտատիրոջը պահել միացված իր կամքի դեմ։

Սկսեք այն երեք բաներից, ինչ նկատի ունի օգտատերը

Առանձնացրեք իմաստները, նախքան կառանձնացնեք API-ները։ Երբեմն օգտատերը ցանկանում է, որ ձեր հավելվածի թունելը միացած լինի, երբեմն ուզում է միացնել Կարգավորումների անջատիչը մեկ ուրիշի տեղադրած պրոֆիլի համար, իսկ երբեմն ուզում է, որ հեռախոսը չկարողանա զննել առանց թունելի։ Այս երեքը համապատասխանում են երեք տարբեր մեխանիզմների, և միայն առաջինն է բաց սովորական հավելվածի համար։

Երկրորդ իմաստն է, որ ստեղծում է Stack Overflow-ի հարցերը, և դրա համար աջակցվող պատասխան չկա։ Կարգավորումների անջատիչը պատկանում է օգտատիրոջը, իսկ կառավարվող սարքերում՝ պրոֆիլին։ Ոչ մի հանրային API չի թվարկում VPN կոնֆիգուրացիաներ, չի հաղորդում, թե համակարգի թունելը միացած է, և չի փոխարկում այն։

Ինչ կարող է հավելվածն իրոք ստեղծել

NetworkExtension-ը հավելվածին տալիս է իր սեփական կոնֆիգուրացիան NEVPNManager-ի միջոցով։ Personal VPN իրավունքով և օգտատիրոջ համաձայնությամբ հավելվածը պահպանում է կոնֆիգուրացիա, որը Կարգավորումներում հայտնվում է իր անունով, և այն կարող է գործարկել կամ կանգնեցնել հենց այդ մեկ միացումը։ Սա իրական, վերանայելի հնարավորություն է, և միաժամանակ ողջ շրջանակը. մենեջերը կարդում և գրում է միայն այն, ինչ ինքն է ստեղծել։

Իրավունքը ինքնաբերաբար չի տրվում։ Դուք այն խնդրում եք Apple-ից և հիմնավորում, թե ինչու է հավելվածին ընդհանրապես թունել պետք, և հաճախորդը, ում միակ նպատակը ուրիշի պրոֆիլը միացնելն է, լավ պատասխան չունի։ Փաթեթային թունելների մատակարարները հետևում են նույն կանոնին այլ դասով. NETunnelProviderManager-ը պատկանում է մատակարարի վրա հիմնված կոնֆիգուրացիաներին, որոնք հավելվածն ինքն է տեղադրել։ Ուղիներից ոչ մեկը չի հասնում MDM-ի տրամադրած պրոֆիլին։

Համաձայնությունը գործում է նաև պահպանման պահին։ Կոնֆիգուրացիա գրելը հարցնում է օգտատիրոջից, և այդ հարցումը այն չէ, ինչ հավելվածը կարող է ճնշել հարմարության համար։

Վիճակը կարդալը բախվում է նույն պատին

Կարգավիճակը թվում է ավելի բարեկամական, քան կառավարումը, և նույնքան փակ է։ NEVPNStatus-ը հայտնում է անվավեր, անջատված, միացող, միացած, վերահաստատող կամ անջատվող վիճակներ հավելվածի սեփական կոնֆիգուրացիայի համար, և ամեն փոփոխության դեպքում ծանուցում է առաջանում։ Այն ոչինչ չի ասում կառավարման պրոֆիլով տեղադրված թունելի մասին, և հենց այդ վիճակն է, որ ցանկանում է տեսնել աջակցության ծառայությունը։

Ցանցային ուղու մոնիտորինգը և ինտերֆեյսի փոփոխությունները դիզայնի վերանայումներում առաջարկվում են որպես փոխարինող։ Դրանք նկարագրում են այն ուղին, որով անցնում է հավելվածի թրաֆիկը, և այդ ուղին փոխվում է VPN-ի վիճակից անկապ պատճառներով, և դրանք որպես VPN ցուցիչ օգտագործելը տալիս է ինտերֆեյս, որը ստում է երկու ուղղությամբ։

On Demand-ը և Always On-ը իրական լծակներն են

Աջակցվող լծակները ապրում են պրոֆիլում, ոչ թե հավելվածում։ On Demand կանոնները համակարգին ասում են, թե երբ միանալ. պայմանների և գործողությունների կարգավորված ցանկ, որը գնահատում է օպերացիոն համակարգը, ոչ թե ձեր կոդը։ Ցանկացած ինտերֆեյսում միացող կանոնը ստեղծում է մշտապես միացածի զգացողություն՝ առանց որևէ հավելվածի կառավարում տալու։

Always On VPN-ը պարտադրման մեխանիզմն է, և այն կապված է հսկողությանը։ Հսկվող սարքում MDM-ը տեղադրում է պրոֆիլ, որը թունելը պահում է միացած. չհսկվող անձնական հեռախոսում նույն բանալիները նույն վարքը չեն տալիս։ Այդ ասիմետրիան դիտավորյալ է, և բեռնվածքի բանալիների ոչ մի համակցություն այն չի վերացնում։ Երբ պահանջը իսկապես այն է, որ VPN-ը պետք է միացած լինի, պահանջը իրականում այն է, որ սարքը պետք է կառավարվի։

Նրանց միջև նստում է ավելի թույլ զարմիկը. կանոն, որը նորից միանում է այն բանից հետո, երբ օգտատերը անջատվել է։ Այն նորից միանում է, երբ կանոնը հաջորդ անգամ գնահատվի, ինչը նույնը չէ, ինչ անմիջապես, և օգտատերը, ով դիտավորյալ անջատվել է, կնկատի տարբերությունը։ Ձևավորեք ինտերֆեյսը այդ բացվածքի շուրջ՝ փական խոստանալու փոխարեն։

Առաքեք աջակցվող ուղին

Չորս հարց լուծում են մեխանիզմը, նախքան կոդ գոյություն կունենա. ում է պատկանում սարքը, արդյոք այն հսկվող է, ո՛ր հաճախորդն է ավարտում թունելը, և որտեղից է գալիս պրոֆիլը։ Եթե այս ամենից որևէ մեկը անհայտ է, ֆունկցիայի հարցումը պատրաստ չէ գնահատման։

Համակարգի VPN-ին դիպչող մասնավոր API-ն կանցնի ցուցադրությունը և կձախողվի վերանայմանը, իսկ եթե այլ ճանապարհով առաքվի, կկոտրվի iOS-ի հաջորդ թողարկմանը։ Այդ փոխանակման ոչ մի տարբերակ չարժե մեկ կոճակի համար։

Կառավարման հեռաչափությունը առանձին ալիք է. այն հաղորդում է, որ պրոֆիլ է տեղադրված, և արդյոք սարքը համապատասխանում է, ինչը հաշվետվություն է, ոչ թե յուրաքանչյուր հավելվածի կառավարման մակերես։ Փորձարկեք հոսքը իրական սարքում յուրաքանչյուր թարմացումից հետո, որովհետև աջակցվող վարքը ապրում է օպերացիոն համակարգում, և օպերացիոն համակարգը շարժվում է։

Առնչվող հոդվածներ