Produkta menedžeris lūdz pogu, kas ieslēdz uzņēmuma VPN, un lūgums izklausās triviāls. iOS tas nav mazs līdzeklis; tas atrodas ārpus publiskā līguma, un katrs apietais ceļš vai nu neiztur pārskatīšanu, vai salūzt nākamajā laidienā. Izvediet lūgumu caur to, ko platforma patiešām atļauj, un dizains lielākoties uzrakstās pats. Lietotne var piederēt VPN konfigurācijai un to palaist. Lietotne nevar aizsniegt sistēmas slēdzi, nevar nolasīt tāda profila stāvokli, ko tā nav izveidojusi, un nevar noturēt lietotāju savienotu pret viņa gribu.

Sāciet ar trim lietām, ko lietotājs domā

Atdaliet nozīmes, pirms atdalāt API. Dažkārt lietotājs grib, lai jūsu lietotnes tunelis būtu savienots, dažkārt viņš grib ieslēgt Iestatījumu slēdzi profilam, ko instalējis kāds cits, un dažkārt viņš grib, lai tālrunis nevarētu pārlūkot bez tuneļa. Tie atbilst trim dažādiem mehānismiem, un tikai pirmais ir atvērts parastai lietotnei.

Otrā nozīme ir tā, kas rada Stack Overflow jautājumus, un tai nav atbalstītas atbildes. Iestatījumu slēdzis pieder lietotājam, bet pārvaldītās ierīcēs — profilam. Neviena publiska API neuzskaita VPN konfigurācijas, neziņo, vai sistēmas tunelis ir pacelts, un to nepārslēdz.

Ko lietotne patiešām var izveidot

NetworkExtension piešķir lietotnei tās pašas konfigurāciju, izmantojot NEVPNManager. Ar Personal VPN tiesībām un lietotāja piekrišanu lietotne saglabā konfigurāciju, kas Iestatījumos parādās ar tās pašas nosaukumu, un tā var palaist vai apturēt tieši šo vienu savienojumu. Tā ir reāla, pārskatāma iespēja, un tā ir arī viss apjoms: pārvaldnieks lasa un raksta tikai to, ko pats izveidoja.

Tiesības nav automātiskas. Jūs tās pieprasāt no Apple un pamatojat, kāpēc lietotnei vispār vajadzīgs tunelis, un klientam, kura vienīgais mērķis ir ieslēgt kāda cita profilu, nav labas atbildes. Pakešu tuneļu nodrošinātāji ievēro to pašu noteikumu ar citu klasi: NETunnelProviderManager pārvalda nodrošinātāja balstītas konfigurācijas, ko lietotne pati instalēja. Neviens no abiem ceļiem nesasniedz MDM piegādātu profilu.

Piekrišana attiecas arī uz saglabāšanas brīdi. Konfigurācijas rakstīšana jautā lietotājam, un šis jautājums nav tas, ko lietotne drīkst apspiest ērtības dēļ.

Stāvokļa lasīšana atduras pret to pašu sienu

Statuss izskatās draudzīgāks par kontroli un ir tikpat slēgts. NEVPNStatus ziņo nederīgs, atvienots, savienojas, savienots, atkārtoti apstiprina vai atvienojas lietotnes pašas konfigurācijai, un pie katras izmaiņas izraisās paziņojums. Tas neko nepasaka par tuneli, ko instalējis pārvaldības profils, un tieši tas ir stāvoklis, ko atbalsta dienests grib redzēt.

Tīkla ceļa uzraudzība un saskarnes izmaiņas dizaina pārskatos tiek piedāvātas kā aizstājēji. Tie apraksta ceļu, pa kuru iet lietotnes trafiks, un tas mainās tādu iemeslu dēļ, kas nav saistīti ar VPN stāvokli, un to izmantošana kā VPN rādījums dod saskarni, kas melo abos virzienos.

On Demand un Always On ir īstās sviras

Atbalstītās sviras dzīvo profilā, nevis lietotnē. On Demand noteikumi pasaka sistēmai, kad savienoties: sakārtots nosacījumu saraksts ar darbībām, ko novērtē operētājsistēma, nevis jūsu kods. Noteikums, kas savienojas jebkurā saskarnē, rada pastāvīgas saiknes sajūtu, nepiešķirot lietotnei nekādu kontroli.

Always On VPN ir izpildes mehānisms, un tas ir saistīts ar uzraudzību. Pārraudzītā ierīcē MDM instalē profilu, kas notur tuneli, bet personīgā tālrunī bez uzraudzības tie paši atslēgas nedod tādu pašu uzvedību. Šī asimetrija ir apzināta, un neviena lietderīgās slodzes atslēgu kombinācija to neiznīcina. Kad prasība patiešām ir tāda, ka VPN jābūt ieslēgtam, prasība patiesībā ir tāda, ka ierīce ir jāpārvalda.

Starp abiem sēž vājākais brālēns: noteikums, kas atkal savienojas pēc tam, kad lietotājs ir atvienojies. Tas savienojas, kad noteikums tiks novērtēts nākamreiz, un tas nav tas pats, kas uzreiz, un lietotājs, kurš atvienojās apzināti, pamanīs atšķirību. Projektējiet saskarni ap šo plaisu, nevis soliet slēdzeni.

Piegādājiet atbalstīto ceļu

Četri jautājumi nosaka mehānismu, pirms vēl ir kāds kods: kam pieder ierīce, vai tā ir pārraudzīta, kurš klients pabeidz tuneli un no kurienes nāk profils. Ja kaut kas no tā nav zināms, funkcijas pieprasījums nav gatavs novērtēšanai.

Privāta API, kas baksta sistēmas VPN, izturēs demonstrāciju un neizturēs pārskatīšanu, un, ja tā tiks piegādāta citādi, tā salūzīs nākamajā iOS laidienā. Nav šī darījuma versijas, kas būtu tā vērta viena slēdža dēļ.

Pārvaldības telemetrija ir atsevišķs kanāls: tā ziņo, ka profils ir instalēts un vai ierīce atbilst prasībām, un tas ir atskaites, nevis katras lietotnes vadības virsma. Pārbaudiet plūsmu reālā ierīcē pēc katra atjauninājuma, jo atbalstītā uzvedība dzīvo OS, un OS kustas.

Saistītie raksti