SDK de aplicaciones de Intune para iOS: características de vista web
Mostrar contenido web dentro de una aplicación
En iOS, las vistas web se pueden usar para exponer una amplia variedad de contenido web sin tener que salir del contexto de la aplicación. Algunas aplicaciones también pueden usar vistas web como una forma de compartir características e interfaz de usuario en varias plataformas.
Dado que las vistas web existen dentro de la aplicación, la exponen a posibles pérdidas de datos. Si un usuario puede navegar a páginas web externas arbitrarias dentro de una aplicación (ya sea a través del diseño intencionado de la aplicación o mediante maniobras inteligentes a través de vínculos expuestos en el contenido html de la página web representada), es posible que el usuario pueda filtrar datos administrados de la aplicación.
El SDK de MAM de Intune proporciona varias API para controlar diferentes escenarios en los que el contenido administrado y no administrado se expone a través de vistas web dentro de una aplicación. Solo es necesario llamar a estas API si hay un usuario administrado que ha iniciado sesión en la aplicación. Consulte la tabla siguiente como una guía rápida sobre qué API se aplica a qué escenario.
Escenario | API |
---|---|
Solo contenido de usuario y organización sin riesgo de páginas web arbitrarias | No se necesitan API |
Solo contenido que no es de usuario ni de la organización | Se establece TreatAllWebViewsAsUnmanaged en el Info.plist |
Una combinación de contenido de usuario,organización y no usuario/no organizativo (mayoría no usuario/no organizativo) | Establecer TreatAllWebViewsAsUnmanaged en Info.plist y usar setWebViewPolicy:forWebViewer: con IntuneMAMWebViewPolicyCurrentIdentity vistas web que contienen datos de usuario u organización |
Una combinación de contenido de usuario,organización y no usuario/no organizativo (usuario o organización mayoritario) |
setWebViewPolicy:forWebViewer: Use solo con IntuneMAMWebViewPolicyUnmanaged vistas web que no contengan datos de usuario u organización. |
Contenido de usuario u organización, pero con riesgo de páginas web arbitrarias | Siguiendo el uso adecuado de TreatAllWebViewsAsUnmanaged y setWebViewPolicy:forWebViewer: , también implemente para IntuneMAMWebViewPolicyDelegate vistas web que puedan navegar a páginas web arbitrarias. |
Escenario de vista web 1: solo páginas web que muestran contenido de usuario u organización
Si una aplicación solo usa vistas web como una forma de representar contenido de usuario u organización y no hay ningún riesgo de que la vista web vaya a páginas web externas arbitrarias, no es necesario usar ninguna de las API o la configuración. De forma predeterminada, el SDK tratará cualquier vista web expuesta dentro de la aplicación como contenido que pertenece a la identidad de directiva de interfaz de usuario actual.
Si un usuario administrado abre una vista web dentro de una aplicación, los datos de corte y copia de la vista web se tratarán como contenido administrado. Pegar en la vista web se tratará según las directivas de la cuenta administrada.
Si un usuario no administrado abre una vista web dentro de una aplicación, los datos de cortar o copiar de la vista web se tratarán como contenido no administrado. Pegar en la vista web se tratará como si lo hiciera la cuenta no administrada y no se impondrán restricciones adicionales.
Escenario de vista web 2: solo las páginas web que no muestran contenido de usuario u organización
Si una aplicación sabe que nunca mostrará contenido de usuario u organización dentro de una vista web, puede establecer TreatAllWebViewsAsUnmanaged
YES
en en .Info.plist
Esto tratará todas las acciones de cortar, copiar y pegar realizadas por cualquier usuario dentro de una vista web como no administradas. Independientemente del estado de administración de la cuenta utilizada para realizar las acciones, la acción se tratará como si la realizara un usuario no administrado.
Al hacerlo, se asegurará de que el contenido de la aplicación administrada no se filtre fuera de la aplicación a través de la vista web. Establecer esta marca sería una buena idea si una aplicación solo usa vistas web para mostrar avisos de privacidad, EULA u otro contenido de página estática que no requiera que un usuario la vea.
Cuando TreatAllWebViewsAsUnmanaged
se establece, todo el contenido que se muestra dentro de las vistas web se puede copiar y pegar en otras aplicaciones no administradas, ya que las propias vistas web se consideran no administradas.
Escenario de vista web 3: combinación de contenido de usuario,organización y no usuario/no organizativo
Las aplicaciones más complejas pueden usar una combinación de vistas web de usuario,organización y no usuario/no organización. Una aplicación puede usar vistas web para mostrar avisos de privacidad, pero también usar vistas web para exponer el contenido del usuario. En este caso, se puede usar la IntuneMAMPolicyManager
API de setWebViewPolicy:forWebViewer:
. Esta API permite a una aplicación marcar vistas web individuales como no administradas o deshacer el efecto de TreatAllWebViewsAsUnmanaged
para vistas web individuales.
La API toma dos argumentos. El primero es un valor de enumeración de IntuneMAMWebViewPolicy
tipo. El segundo puede ser un UIView o UIViewController que puede contener un WKWebView en su jerarquía de vistas secundaria. Un propio WKWebView también se puede pasar directamente como segundo argumento.
Si WKWebView es un elemento secundario de UIView o UIViewController pasado como segundo argumento, no tiene que existir dentro de la jerarquía de vistas en el momento en que se llama a esta API. Cualquier WKWebView secundario del objeto pasado en UIView o UIViewController tendrá la directiva adecuada aplicada cuando se agreguen.
-
IntuneMAMWebViewPolicyUnset
- Esta es la directiva predeterminada para todos los WKWebView. Las vistas web se tratarán solo según laTreatAllWebViewsAsUnmanaged
marca. -
IntuneMAMWebViewPolicyUnmanaged
- Las acciones de cortar, copiar y pegar realizadas por un usuario en una vista web etiquetada con esta directiva se tratarán como si fueran realizadas por una identidad no administrada. Esta directiva sobrescribirá laTreatAllWebViewsAsUnmanaged
marca. -
IntuneMAMWebViewPolicyCurrentIdentity
- Las acciones de cortar, copiar y pegar realizadas por un usuario en una vista web etiquetada con esta directiva se tratarán como si se realizara mediante la identidad de directiva de interfaz de usuario actual. Esta directiva sobrescribirá laTreatAllWebViewsAsUnmanaged
marca.
Mayoría de datos que no son de usuario y no de la organización
Si la mayoría de las vistas web dentro de una aplicación muestran contenido no administrado, TreatAllWebViewsAsUnmanaged
se puede establecer en las vistas web de contenido del IntuneMAMWebViewPolicyCurrentIdentity
Info.plist
setWebViewPolicy:forWebViewer:
usuario o la organización.
Datos de usuario y organización de la mayoría
Si la mayoría de las vistas web de una aplicación muestran contenido de usuario o organización, solo setWebViewPolicy:forWebViewer:
es necesario llamar a con IntuneMAMWebViewPolicyUnmanaged
en las vistas web no administradas, ya que todas las vistas web se tratan como administradas de forma predeterminada.
Escenario de vista web 4: contenido de usuario u organización, pero con riesgo de páginas web arbitrarias
Si se usa una vista web para mostrar contenido de usuario u organización, pero tiene el riesgo de navegar a direcciones URL externas arbitrarias, se puede usar una API adicional en combinación con TreatAllWebViewsAsUnmanaged
y setWebViewPolicy:forWebViewer:
. Algunos ejemplos de esto son las páginas web Sugerir una característica o comentarios que tienen vínculos directos o indirectos a un motor de búsqueda.
IntuneMAMWebViewPolicyDelegate
se puede implementar y establecer en una vista web mediante IntuneMAMPolicyManager
setWebViewPolicyDelegate:forWebViewer:
.
IntuneMAMWebViewPolicyDelegate
tiene un método necesario, isExternalURL:
.
Se setWebViewPolicyDelegate:forWebViewer:
debe llamar al método directamente en un WKWebView o SFSafariViewController.
Cada vez que la vista web navega a una página nueva, se llamará al isExternalURL:
método delegado. Las aplicaciones deben determinar si la dirección URL que se pasa al método delegado representa un sitio web interno en el que se pueden pegar datos de usuario o organización o un sitio web externo que podría filtrar datos de la organización. La devolución NO
indicará al SDK que el sitio web que se carga es una ubicación organizativa donde se pueden compartir datos de usuario o organización. Devolver YES
hará que el SDK abra la dirección URL en un explorador administrado en lugar de WKWebView o SFSafariViewController si la configuración de directiva actual lo requiere. Esto garantizará que no se puedan filtrar datos de usuario u organización desde dentro de la aplicación al sitio web externo.
Ejemplo de API de vista web
Una aplicación se compila con cinco vistas web (A, B, C, D y E). Las vistas web A, B y C no muestran datos de usuario ni de la organización. La vista web D muestra una página de organización disponible para todos los usuarios de la empresa. La vista web E representa los documentos del usuario que pueden contener vínculos.
Dado que la mayoría de las vistas web no están administradas (A, B y C), podemos establecer TreatAllWebViewsAsUnmanaged
para reducir el número de veces que necesitamos llamar setWebViewPolicy:forWebViewer:
a .
Dado que las vistas web D y E muestran el contenido del usuario y todas las vistas web no se administran de forma predeterminada ahora, es necesario etiquetarlas con setWebViewPolicy:forWebViewer:
mediante IntuneMAMWebViewPolicyCurrentIdentity
.
Dado que la vista web E contiene vínculos en los que el usuario puede hacer clic y que podría usar para navegar a direcciones URL arbitrarias, también es necesario implementar y establecerla en la IntuneMAMWebViewPolicyDelegate
vista web E mediante setWebViewPolicyDelegate:forWebViewer:
. En nuestra isExternalURL:
implementación, podríamos comprobar las direcciones URL entrantes y ver si son las mismas que la dirección URL del documento. Si no coinciden, sabemos que es una dirección URL externa y que puede devolver YES
. Si coinciden, sabemos que es una dirección URL interna y que puede devolver NO
.
Implementar y llamar a estas API significa que el contenido de usuario u organización administrado no puede filtrarse a las vistas web A, B y C. También significa que el contenido administrado no puede filtrarse a ninguna dirección URL externa a la que el usuario pueda navegar en E haciendo clic en los vínculos dentro de los documentos. El contenido administrado también se protegerá evitando que los datos de las vistas web D y E se filtren fuera de la aplicación.
Compatibilidad con SwiftUI
Una aplicación SwiftUI recién creada admite UIScenes, pero no tiene una UISceneDelegate implementada de forma predeterminada. Si la aplicación tiene la intención de admitir UIScenes y usar el SDK de aplicaciones de Intune, es necesario implementar un UISceneDelegate. Si no tiene intención de admitir UIScenes, se debe quitar la UIApplicationSceneManifest
configuración (también denominada "Manifiesto de escena de aplicación") en info.plist de la aplicación.