Intune App SDK per iOS - Funzionalità di visualizzazione Web
Visualizzazione di contenuto Web all'interno di un'applicazione
In iOS, le visualizzazioni Web possono essere usate per visualizzare un'ampia gamma di contenuti Web senza dover lasciare il contesto dell'app. Alcune applicazioni potrebbero anche usare le visualizzazioni Web come modo per condividere funzionalità e interfaccia utente su più piattaforme.
Poiché all'interno dell'app esistono visualizzazioni Web, le espongono a potenziali perdite di dati. Se un utente è in grado di passare a pagine Web esterne arbitrarie all'interno di un'app (tramite progettazione intenzionale dell'app o manovrando intelligentemente i collegamenti esposti nel contenuto HTML della pagina Web sottoposta a rendering), l'utente potrebbe essere in grado di perdere i dati gestiti dall'app.
Intune MAM SDK offre diverse API per la gestione di diversi scenari in cui il contenuto gestito e non gestito viene presentato tramite visualizzazioni Web all'interno di un'app. Queste API devono essere chiamate solo se è presente un utente gestito che ha eseguito l'accesso all'app. Vedere la tabella seguente come guida rapida su quale API si applica a quale scenario.
Scenario | API |
---|---|
Solo contenuto dell'utente e dell'organizzazione senza rischio di pagine Web arbitrarie | Non sono necessarie API |
Solo contenuto non utente e non aziendale | Impostare TreatAllWebViewsAsUnmanaged in Info.plist |
Una combinazione di contenuto utente/aziendale e non utente/non aziendale (maggioranza non utente/non aziendale) | Impostare TreatAllWebViewsAsUnmanaged in Info.plist e usare setWebViewPolicy:forWebViewer: con IntuneMAMWebViewPolicyCurrentIdentity nelle visualizzazioni Web che contengono dati utente o dell'organizzazione |
Una combinazione di contenuto utente/aziendale e non utente/non aziendale (utente/organizzazione di maggioranza) | Usare setWebViewPolicy:forWebViewer: solo con IntuneMAMWebViewPolicyUnmanaged nelle visualizzazioni Web che non contengono dati dell'utente o dell'organizzazione |
Contenuto dell'utente o dell'organizzazione, ma con il rischio di pagine Web arbitrarie | Seguendo l'utilizzo appropriato di TreatAllWebViewsAsUnmanaged e setWebViewPolicy:forWebViewer: , implementare anche per IntuneMAMWebViewPolicyDelegate le visualizzazioni Web che potrebbero passare a pagine Web arbitrarie |
Scenario di visualizzazione Web 1: solo le pagine Web che visualizzano il contenuto dell'utente o dell'organizzazione
Se un'app usa solo le visualizzazioni Web come modo per eseguire il rendering del contenuto dell'utente o dell'organizzazione e non c'è alcun rischio che la visualizzazione Web venga spostata in pagine Web esterne arbitrarie, non è necessario usare alcuna API o impostazioni. Per impostazione predefinita, l'SDK considererà qualsiasi visualizzazione Web visualizzata all'interno dell'app come contenuto appartenente all'identità corrente dei criteri dell'interfaccia utente.
Se un utente gestito apre una visualizzazione Web all'interno di un'app, tutti i dati di taglia/copia dalla visualizzazione Web verranno considerati come contenuto gestito. L'incollamento nella visualizzazione Web verrà trattato in base ai criteri dell'account gestito.
Se un utente non gestito apre una visualizzazione Web all'interno di un'app, tutti i dati di taglio/copia dalla visualizzazione Web verranno considerati come contenuto non gestito. L'incollamento nella visualizzazione Web verrà considerato come se fosse fatto dall'account non gestito e non verranno imposte restrizioni aggiuntive.
Scenario di visualizzazione Web 2: solo le pagine Web che non visualizzano il contenuto dell'utente o dell'organizzazione
Se un'app sa che non visualizzerà mai il contenuto dell'utente o dell'organizzazione all'interno di una visualizzazione Web, può impostare su TreatAllWebViewsAsUnmanaged
YES
nell'app Info.plist
. In questo modo tutte le azioni taglia, copia e incolla eseguite da qualsiasi utente all'interno di una visualizzazione Web verranno considerate non gestite. Indipendentemente dallo stato di gestione dell'account usato per eseguire le azioni, l'azione verrà considerata come se fosse eseguita da un utente non gestito.
In questo modo, il contenuto dell'app gestita non verrà perso all'esterno dell'app tramite la visualizzazione Web. L'impostazione di questo flag è consigliabile se un'app usa solo visualizzazioni Web per visualizzare avvisi sulla privacy, EULA o altri contenuti di pagine statici che non richiedono la visualizzazione da parte di un utente.
Quando TreatAllWebViewsAsUnmanaged
è impostato, tutto il contenuto visualizzato all'interno delle visualizzazioni Web può essere copiato e incollato in altre app non gestite poiché le visualizzazioni Web stesse sono considerate non gestite.
Scenario di visualizzazione Web 3: una combinazione di contenuto utente/aziendale e non utente/non aziendale
Le app più complesse possono usare una combinazione di visualizzazioni Web utente/aziendale e non utente/non aziendale. Un'app può usare le visualizzazioni Web per visualizzare le note sulla privacy, ma anche usare le visualizzazioni Web per visualizzare il contenuto degli utenti. In questo caso, è possibile usare l'API IntuneMAMPolicyManager
di setWebViewPolicy:forWebViewer:
. Questa API consente a un'app di contrassegnare singole visualizzazioni Web come non gestite o annullare l'effetto di TreatAllWebViewsAsUnmanaged
per singole visualizzazioni Web.
L'API accetta due argomenti. Il primo è un valore di enumerazione di IntuneMAMWebViewPolicy
tipo . Il secondo può essere un oggetto UIView o UIViewController che può contenere WKWebView nella gerarchia di visualizzazioni figlio. Un WKWebView stesso può anche essere passato direttamente come secondo argomento.
Se WKWebView è un elemento figlio di UIView o UIViewController passato come secondo argomento, non deve esistere all'interno della gerarchia di visualizzazione al momento della chiamata di questa API. Qualsiasi WKWebView figlio dell'oggetto passato in UIView o UIViewController avrà i criteri appropriati applicati quando vengono aggiunti.
-
IntuneMAMWebViewPolicyUnset
- Questo è il criterio predefinito per tutti i WKWebView. Le visualizzazioni Web verranno trattate solo in base alTreatAllWebViewsAsUnmanaged
flag . -
IntuneMAMWebViewPolicyUnmanaged
- Qualsiasi azione taglia/copia/incolla eseguita da un utente in una visualizzazione Web contrassegnata con questo criterio verrà considerata come se fosse eseguita da un'identità non gestita. Questo criterio sovrascriverà ilTreatAllWebViewsAsUnmanaged
flag. -
IntuneMAMWebViewPolicyCurrentIdentity
- Qualsiasi azione taglia/copia/incolla eseguita da un utente in una visualizzazione Web contrassegnata con questo criterio verrà considerata come se fosse eseguita dall'identità corrente dei criteri dell'interfaccia utente. Questo criterio sovrascriverà ilTreatAllWebViewsAsUnmanaged
flag.
Dati di maggioranza non utente e non aziendali
Se la maggior parte delle visualizzazioni Web all'interno di un'app visualizza contenuto non gestito, TreatAllWebViewsAsUnmanaged
può essere impostata nell'app Info.plist
e setWebViewPolicy:forWebViewer:
con IntuneMAMWebViewPolicyCurrentIdentity
può essere chiamata nelle visualizzazioni Web del contenuto dell'utente o dell'organizzazione.
Dati dell'utente e dell'organizzazione di maggioranza
Se la maggior parte delle visualizzazioni Web all'interno di un'app visualizza il contenuto dell'utente o dell'organizzazione, setWebViewPolicy:forWebViewer:
solo con IntuneMAMWebViewPolicyUnmanaged
deve essere chiamato nelle visualizzazioni Web non gestite poiché tutte le visualizzazioni Web vengono considerate come gestite per impostazione predefinita.
Scenario di visualizzazione Web 4: contenuto dell'utente o dell'organizzazione, ma con il rischio di pagine Web arbitrarie
Se si usa una visualizzazione Web per visualizzare il contenuto dell'utente o dell'organizzazione, ma si rischia di passare a URL esterni arbitrari, è possibile usare un'API aggiuntiva in combinazione con TreatAllWebViewsAsUnmanaged
e setWebViewPolicy:forWebViewer:
. Ad esempio, è possibile suggerire una funzionalità o inviare commenti alle pagine Web con collegamenti diretti o indiretti a un motore di ricerca.
IntuneMAMWebViewPolicyDelegate
può essere implementato e impostato su una visualizzazione Web tramite IntuneMAMPolicyManager
.setWebViewPolicyDelegate:forWebViewer:
Ha IntuneMAMWebViewPolicyDelegate
un metodo obbligatorio, isExternalURL:
.
Il setWebViewPolicyDelegate:forWebViewer:
metodo deve essere chiamato direttamente in WKWebView o SFSafariViewController.
Ogni volta che la visualizzazione Web passa a una nuova pagina, verrà chiamato il isExternalURL:
metodo delegato. Le applicazioni devono determinare se l'URL passato al metodo delegato rappresenta un sito Web interno in cui i dati dell'utente o dell'organizzazione possono essere incollati o un sito Web esterno che potrebbe perdere dati dell'organizzazione. La restituzione NO
indicherà all'SDK che il sito Web caricato è una posizione organizzativa in cui è possibile condividere i dati dell'utente o dell'organizzazione. Se vengono restituiti YES
, l'SDK aprirà l'URL in un browser gestito anziché in WKWebView o SFSafariViewController se le impostazioni dei criteri correnti lo richiedono. Ciò garantisce che nessun utente o dati dell'organizzazione dall'interno dell'app possano essere trapelati nel sito Web esterno.
Esempio di API visualizzazione Web
Un'app viene compilata con cinque visualizzazioni Web (A, B, C, D ed E). Le visualizzazioni Web A, B e C non visualizzano i dati dell'utente o dell'organizzazione. La visualizzazione Web D visualizza una pagina dell'organizzazione disponibile per tutti gli utenti della società. La visualizzazione Web E esegue il rendering dei documenti dell'utente che possono contenere collegamenti.
Poiché la maggior parte delle visualizzazioni Web non è gestita (A, B e C), è possibile impostare TreatAllWebViewsAsUnmanaged
per ridurre il numero di volte in cui è necessario chiamare setWebViewPolicy:forWebViewer:
.
Poiché le visualizzazioni Web D ed E visualizzano il contenuto dell'utente e tutte le visualizzazioni Web non sono gestite per impostazione predefinita, è necessario contrassegnarle con setWebViewPolicy:forWebViewer:
l'uso di IntuneMAMWebViewPolicyCurrentIdentity
.
Poiché la visualizzazione Web E contiene collegamenti su cui l'utente può fare clic e può usare per passare a URL arbitrari, è anche necessario implementare e IntuneMAMWebViewPolicyDelegate
impostarlo sulla visualizzazione Web E usando setWebViewPolicyDelegate:forWebViewer:
.
isExternalURL:
Nell'implementazione è possibile controllare gli URL in ingresso e verificare se sono uguali all'URL del documento. Se non corrispondono, si sa che si tratta di un URL esterno e che può restituire YES
. Se corrispondono, si sa che si tratta di un URL interno e che può restituire NO
.
L'implementazione e la chiamata di queste API significa che il contenuto gestito dell'utente o dell'organizzazione non può perdere nelle visualizzazioni Web A, B e C. Ciò significa anche che il contenuto gestito non può perdere alcun URL esterno a cui l'utente potrebbe passare in E facendo clic sui collegamenti all'interno dei documenti. Il contenuto gestito verrà inoltre protetto impedendo la perdita dei dati dalle visualizzazioni Web D ed E all'esterno dell'app.
Supporto di SwiftUI
Un'app SwiftUI appena creata supporta UIScenes, ma non ha un uisceneDelegate implementato per impostazione predefinita. Se l'app intende supportare UIScenes e usare Intune App SDK, è necessario implementare un UISceneDelegate. Se non intende supportare UIScenes, l'impostazione UIApplicationSceneManifest
(denominata anche "Manifesto della scena dell'applicazione") nell'info.plist dell'app deve essere rimossa.