Compartir vía


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 TreatAllWebViewsAsUnmanagedYES 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 IntuneMAMPolicyManagerAPI 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 la TreatAllWebViewsAsUnmanaged 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á la TreatAllWebViewsAsUnmanaged 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á la TreatAllWebViewsAsUnmanaged 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 IntuneMAMWebViewPolicyCurrentIdentityInfo.plistsetWebViewPolicy: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.

IntuneMAMWebViewPolicyDelegatese puede implementar y establecer en una vista web mediante IntuneMAMPolicyManagersetWebViewPolicyDelegate: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.