Zašto vaša iPhone aplikacija ne može uključiti ili isključiti sustavni VPN
Javna aplikacija ne može prebaciti sustavni VPN, pročitati njegovo stanje ni prisiliti vezu. On Demand pravila, Always On profili na nadziranim uređajima i MDM opcije su.
Voditelj proizvoda traži gumb koji uključuje korporativni VPN, a zahtjev zvuči trivijalno. Na iOS-u to nije mala značajka; 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 doista dopušta i dizajn se uglavnom sam napiše. Aplikacija može posjedovati VPN konfiguraciju i pokrenuti je. Aplikacija ne može doći do sustavnog 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šćuje je li sustavni 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šćuje 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 zapravo ž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 sustavni 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 jedan prekidač.
Upravljačka telemetrija zaseban je kanal: izvješćuje 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.