Зашто ваша iPhone апликација не може да укључи или искључи системски VPN
Јавна апликација не може да пребаци системски VPN, прочита његово стање нити присили везу. On Demand правила, Always On профили на надгледаним уређајима и MDM су опције.
Вођа производа тражи дугме које укључује корпоративни 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 мора бити укључен, захтев је заправо то да се уређајем мора управљати.
Између њих стоји слабији рођак: правило које се поново повезује након што се корисник искључи. Повезује се кад се правило следећи пут процени, што није исто као одмах, а корисник који се искључио намерно приметиће разлику. Дизајнирајте интерфејс око те празнине уместо да обећавате браву.
Испоручите подржани пут
Четири питања решавају механизам пре него што постоји икакав код: ко поседује уређај, је ли надгледан, који клијент завршава тунел и одакле долази профил. Ако је иједно од тога непознато, захтев за функцијом није спреман за процену.
Приватни API који чачка системски VPN проћи ће демо и пасти на прегледу, а ако се испоручи на други начин, сломиће се у следећем iOS издању. Не постоји верзија те размене која се исплати за једно дугме.
Телеметрија управљања је засебан канал: извештава да је профил инсталиран и је ли уређај усклађен, што је извештавање, а не контролна површина по апликацији. Тестирајте ток на стварном уређају након сваког ажурирања, јер подржано понашање живи у ОС-у, а ОС се креће.