Voditelj proizvoda traži dugme koje uključuje korporacijski VPN, a zahtjev zvuči trivijalno. Na iOS-u to nije mala funkcija; nalazi se izvan javnog ugovora, a svaki zaobilazni put ili padne na pregledu ili se slomi u sljedećem izdanju. Provedite zahtjev kroz ono što platforma zaista dopušta, i dizajn se uglavnom sam napiše. Aplikacija može posjedovati VPN konfiguraciju i pokrenuti ju. Aplikacija ne može doći do sistemskog prekidača, ne može pročitati stanje profila koji nije sama stvorila, i ne može držati korisnika povezanim protiv njegove volje.

Pođite od tri stvari koje korisnik podrazumijeva

Razdvojite značenja prije nego razdvojite API-je. Ponekad korisnik želi da tunel vaše aplikacije bude povezan, ponekad želi da se prekidač u Postavkama uključi za profil koji je instalirao netko drugi, a ponekad želi da telefon ne može pregledavati bez tunela. To odgovara trima različitim mehanizmima, a samo je prvi otvoren za običnu aplikaciju.

Drugo značenje je ono koje stvara pitanja na Stack Overflowu i za njega nema podržanog odgovora. Prekidač u Postavkama pripada korisniku, a na upravljanim uređajima profilu. Nijedan javni API ne nabraja VPN konfiguracije, ne izvještava je li sistemski tunel podignut niti ga prebacuje.

Što aplikacija zapravo može stvoriti

NetworkExtension daje aplikaciji vlastitu konfiguraciju kroz NEVPNManager. Uz Personal VPN ovlaštenje i korisnikovu suglasnost aplikacija sprema konfiguraciju koja se pojavljuje u Postavkama pod njezinim imenom i može pokrenuti ili zaustaviti tu jednu vezu. To je stvarna mogućnost koja prolazi pregled, i to je ujedno cijeli opseg: upravitelj čita i piše samo ono što je stvorio.

Ovlaštenje nije automatsko. Tražite ga od Applea i obrazlažete zašto aplikaciji uopće treba tunel, a klijent čiji je jedini cilj uključiti tuđi profil nema dobar odgovor. Davatelji paketnih tunela slijede isto pravilo s drugom klasom: NETunnelProviderManager posjeduje konfiguracije zasnovane na davatelju koje je aplikacija sama instalirala. Nijedan put ne doseže profil koji je dostavio MDM.

Suglasnost vrijedi i u trenutku spremanja. Zapisivanje konfiguracije pita korisnika, a to pitanje nije nešto što aplikacija smije ugušiti radi udobnosti.

Čitanje stanja udara u isti zid

Status izgleda prijateljskije od kontrole i jednako je zatvoren. NEVPNStatus izvještava nevažeće, prekinuto, povezivanje, povezano, ponovno potvrđivanje ili prekidanje za vlastitu konfiguraciju aplikacije, a pri svakoj promjeni pali se obavijest. Ne govori ništa o tunelu koji je instalirao profil upravljanja, a to je stanje koje služba podrške želi vidjeti.

Praćenje mrežnog puta i promjene sučelja nude se kao zamjene tijekom pregleda dizajna. Opisuju put kojim ide promet aplikacije, a on se mijenja iz razloga nepovezanih sa stanjem VPN-a, i njihovo korištenje kao VPN pokazatelja daje sučelje koje laže u oba smjera.

On Demand i Always On prave su poluge

Podržane poluge žive u profilu, a ne u aplikaciji. On Demand pravila govore sustavu kada da se poveže: uređeni popis uvjeta s radnjama koji procjenjuje operacijski sustav, a ne vaš kod. Pravilo koje se povezuje na bilo kojem sučelju stvara osjećaj stalne povezanosti bez davanja ikakve kontrole aplikaciji.

Always On VPN je mehanizam prisile i vezan je za nadzor. Na nadziranom uređaju MDM instalira profil koji drži tunel podignutim; na osobnom telefonu bez nadzora isti ključevi ne daju isto ponašanje. Ta je asimetrija namjerna i nijedna kombinacija ključeva korisnog tereta je ne uklanja. Kada je zahtjev doista to da VPN mora biti uključen, zahtjev je zapravo to da se uređajem mora upravljati.

Između njih stoji slabiji rođak: pravilo koje se ponovno povezuje nakon što se korisnik isključi. Povezuje se kad se pravilo sljedeći put procijeni, što nije isto kao odmah, a korisnik koji se isključio namjerno primijetit će razliku. Dizajnirajte sučelje oko te praznine umjesto da obećavate bravu.

Isporučite podržani put

Četiri pitanja rješavaju mehanizam prije nego postoji ikakav kod: ko posjeduje uređaj, je li nadziran, koji klijent završava tunel i odakle dolazi profil. Ako je ijedno od toga nepoznato, zahtjev za značajkom nije spreman za procjenu.

Privatni API koji čačka sistemski VPN proći će demo i pasti na pregledu, a ako se isporuči na drugi način, slomit će se u sljedećem iOS izdanju. Ne postoji verzija te razmjene koja se isplati za jedno dugme.

Upravljačka telemetrija zaseban je kanal: izvještava da je profil instaliran i je li uređaj usklađen, što je izvještavanje, a ne kontrolna površina po aplikaciji. Testirajte tok na stvarnom uređaju nakon svakog ažuriranja, jer podržano ponašanje živi u OS-u, a OS se kreće.

Povezani članci