Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Esta guía se divide en varias etapas distintas. Comience por revisar Planear la integración.
Objetivos de la etapa
- Descargue el SDK de la aplicación de Intune.
- Obtenga información sobre qué archivos se incluyen en el SDK de la aplicación de Intune.
- Haga referencia al SDK de la aplicación de Intune en la aplicación.
- Confirme que el SDK de la aplicación de Intune está incluido correctamente en la compilación.
- Registre nuevas cuentas para la administración de MAM después de autenticarse con MSAL.
- Para eliminar datos corporativos, cancele el registro de cuentas al cerrar sesión
- (Recomendado) Incorpore el registro MAM en la aplicación.
Requisitos previos
Necesitas un equipo macOS con Xcode 16.0 o posterior.
La aplicación debe estar destinada a iOS 16.0 o posterior.
Revise los Términos de licencia del SDK de la aplicación de Intune para iOS. Imprima y conserve una copia de los términos de licencia de sus registros. Al descargar y usar el SDK de la aplicación de Intune para iOS, acepta dichos términos de licencia. Si no las acepta, no utilice el software.
Descargue los archivos del SDK de la aplicación de Intune para iOS en GitHub.
Qué hay en el repositorio de SDK
IntuneMAMSwift.xcframework: el marco dinámico del SDK de la aplicación de Intune. Se recomienda vincular este marco a la aplicación o extensiones para habilitar la administración de aplicaciones cliente de Intune. Sin embargo, es posible que algunos desarrolladores prefieran las ventajas de rendimiento del marco estático (IntuneMAMStatic.xcframework).
IntuneMAMStatic.xcframework: el marco estático del SDK de la aplicación de Intune. Los desarrolladores pueden optar por vincular el marco estático en lugar del marco dinámico. Dado que el código ejecutable de un marco estático se incrusta directamente en el binario de aplicación/extensión en tiempo de compilación, el uso de la biblioteca estática ofrece algunas ventajas de rendimiento en tiempo de inicio. Sin embargo, si la aplicación incluye extensiones, la vinculación del marco estático a la aplicación y las extensiones da como resultado un tamaño de agrupación de aplicaciones mayor. El código ejecutable se inserta en cada binario de aplicación/extensión. En cambio, al usar el marco dinámico, las aplicaciones y las extensiones pueden compartir el mismo binario del SDK de Intune, lo que da como resultado un tamaño de aplicación más pequeño.
IntuneMAMSwiftStub.xcframework: el marco de trabajo de código auxiliar rápido del SDK de la aplicación de Intune. Este marco es una dependencia necesaria de IntuneMAMSwift.xcframework e IntuneMAMStatic.xcframework, que las aplicaciones o extensiones deben vincular.
IntuneMAMConfigurator: una herramienta usada para configurar el archivo Info.plist de la aplicación o extensión con los cambios mínimos necesarios para la administración de Intune. En función de la funcionalidad de la aplicación o extensión, es posible que deba realizar más cambios manuales en Info.plist.
libIntuneMAMSwift.xcframework: la biblioteca estática del SDK de la aplicación de Intune. Esta variante del SDK de Intune MAM para iOS está en desuso y se quitará en una actualización futura. Se recomienda no vincular la biblioteca estática y, en su lugar, vincular la aplicación o las extensiones al marco dinámico (IntuneMAMSwift.xcframework) o al marco estático (IntuneMAMStatic.xcframework) mencionado anteriormente.
IntuneMAMResources.bundle: un conjunto de recursos que contiene recursos en los que se basa el SDK. El paquete de recursos solo es necesario para las aplicaciones que integran la biblioteca estática obsoleta (libIntuneMAMSwift.xcframework) y la quita en una actualización futura.
Cómo funciona el SDK de la aplicación de Intune
El objetivo del SDK de aplicaciones de Intune para iOS es agregar funcionalidades de administración a las aplicaciones iOS con cambios de código mínimos. Cuantos menos cambios en el código, menos tiempo de comercialización, pero sin afectar la consistencia y estabilidad de su aplicación móvil.
Flujo del proceso
En el diagrama siguiente se proporciona el flujo de proceso del SDK de la aplicación de Intune para iOS:
Compilación del SDK en la aplicación móvil
Importante
Intune publica periódicamente actualizaciones para el SDK de la aplicación de Intune. Compruebe periódicamente si hay actualizaciones en el SDK de aplicaciones de Intune para iOS e incorpórelas al ciclo de versiones de desarrollo de software para asegurarse de que las aplicaciones admiten la configuración más reciente de la directiva de protección de aplicaciones.
Para habilitar el SDK de la aplicación de Intune, siga estos pasos:
Vincular uno
IntuneMAMSwift.xcframeworkoIntuneMAMStatic.xcframeworkhacia su destino: arrastre el paquete xcframework a la lista Marcos, bibliotecas y contenido incrustado del destino del proyecto. Repita estos pasos paraIntuneMAMSwiftStub.xcframework. Para la aplicación principal, seleccione "Embed & Sign" (Insertar signo) en la columna "Embed" (Insertar) para ambos xcframeworks agregados. Para las extensiones, selecciona "No insertar".
Agregue estos marcos de iOS al proyecto:
- MessageUI.framework
- Security.framework
- CoreServices.framework
- SystemConfiguration.framework
- libsqlite3.tbd
- libc++.tbd
- ImageIO.framework
- LocalAuthentication.framework
- AudioToolbox.framework
- QuartzCore.framework
- WebKit.framework
- MetricKit.framework
Para habilitar el uso compartido de llaves, elija Funcionalidades en cada destino del proyecto y habilite el conmutador Uso compartido de llaves . Es necesario compartir la cadena de claves para continuar con el siguiente paso.
Nota:
El perfil de aprovisionamiento debe admitir nuevos valores de uso compartido de Llaveros. Los grupos de acceso a la cadena de claves deben admitir un carácter comodín. Puedes comprobarlo abriendo el archivo .mobileprovision en un editor de texto, buscando keychain-access-groups y comprobando que tienes un carácter comodín. Por ejemplo:
<key>keychain-access-groups</key> <array> <string>YOURBUNDLESEEDID.*</string> </array>Después de habilitar el uso compartido de llaves, siga los pasos para crear un grupo de acceso independiente en el que el SDK de aplicaciones de Intune almacene sus datos. Puede crear un grupo de acceso a la cadena de claves mediante la interfaz de usuario o el archivo de derechos. Si usas la interfaz de usuario para crear el grupo de acceso a llaveros, asegúrate de seguir estos pasos:
Si la aplicación móvil no tiene ningún grupo de acceso a cadena de claves definido, agrega el identificador de agrupación de la aplicación como primer grupo.
Agregue el grupo
com.microsoft.intune.mamde llaveros compartido a sus grupos de acceso existentes. El SDK de la aplicación de Intune usa este grupo de acceso para almacenar datos.Agregue
com.microsoft.adalcachea sus grupos de acceso existentes.
Nota:
Si ha configurado MSAL para usar un grupo de acceso a la cadena de claves personalizado en lugar del valor predeterminado de , no es necesario que especifique este grupo de acceso a la cadena de
com.microsoft.adalcacheclaves aquí. En su lugar, especifique el grupo de llaveros personalizado. También debe configurar Intune para usar el mismo grupo de acceso personalizado a través de la configuración ADALCacheKeychainGroupOverride dentro del diccionario IntuneMAMSettings Info.plist.Si editas el archivo de derechos directamente, en lugar de usar la interfaz de usuario de Xcode para crear los grupos de acceso a la cadena de claves, antepóngalos a los grupos de acceso a la cadena de claves (
$(AppIdentifierPrefix)Xcode controla esto automáticamente). Por ejemplo:$(AppIdentifierPrefix)com.microsoft.intune.mam$(AppIdentifierPrefix)com.microsoft.adalcache
Nota:
Un archivo de derechos es un archivo XML que es único para la aplicación móvil. Se usa para especificar permisos y funcionalidades especiales en la aplicación iOS. Si tu aplicación no tenía previamente un archivo de derechos, habilitar el uso compartido de llaveros (paso 3) debería haber provocado que Xcode generara uno para tu aplicación. Asegúrate de que el id. de agrupación de la aplicación sea la primera entrada de la lista.
Incluya todos los protocolos a los que pase
UIApplication canOpenURLla aplicación en laLSApplicationQueriesSchemesmatriz del archivo Info.plist de la aplicación. Para cada protocolo enumerado en esta matriz, agregue una copia del protocolo anexado a-intunemamla matriz. Además, agregue estos valores a la matriz:http-intunemam,https-intunemam,microsoft-edge-https-intunemamsmart-nswanderalacoonsecuritylookoutwork-aseskycurezipsmicrosoft-edge-http-intunemamsmsecmvisionmobilebetteractiveshieldscmxy .intunemam-mtdSi la aplicación usa el protocolo mailto:, agregue tambiénms-outlook-intunemama la matriz. Guarde los cambios antes de continuar con el paso siguiente.Si la aplicación se queda sin espacio en su lista LSApplicationQueriesSchemes, puede quitar los esquemas "-intunemam" para las aplicaciones que se sabe que también implementan el SDK MAM de Intune. Cuando la aplicación quita "scheme-intunemam" de la lista LSApplicationQueriesSchemes,
canOpenURL()puede devolver respuestas incorrectas para esos esquemas. Para solucionar este problema, llame[IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES]a ese esquema en su lugar. Esta llamada se devuelveNOsi la directiva bloquea la apertura de la dirección URL. Si devuelve true, la aplicación puede llamarcanOpenURL()con una identidad vacía para determinar si se puede abrir la dirección URL. Por ejemplo:BOOL __block canOpen = NO; if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES]) { [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{ canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp]; }]; }Si tu aplicación aún no usa FaceID, asegúrate de que la clave NSFaceIDUsageDescription Info.plist esté configurada con un mensaje predeterminado. Este paso es necesario para que iOS pueda permitir que el usuario sepa cómo la aplicación pretende usar FaceID. Una configuración de directiva de protección de aplicaciones de Intune permite usar FaceID como método de acceso a la aplicación cuando el administrador de TI lo configura.
Usa la herramienta IntuneMAMConfigurator que se incluye en el repositorio del SDK para terminar de configurar el archivo Info.plist de la aplicación. La herramienta tiene tres parámetros:
Propiedad Cómo utilizarlo - Yo <Path to the input plist>- e <Path to the entitlements file>- o (Opcional) <Path to the output plist>Si no se especifica el parámetro "-o", el archivo de entrada se modifica en contexto. La herramienta es idempotente y se debe volver a ejecutar cada vez que realice cambios en el Info.plist o los derechos de la aplicación. También debe descargar y ejecutar la versión más reciente de la herramienta al actualizar el SDK de Intune, en caso de que los requisitos de configuración de Info.plist hayan cambiado en la versión más reciente.
Nota:
Si tienes una aplicación SwiftUI, asegúrate de que UISceneConfigurations no falte el diccionario del UIApplicationSceneManifest archivo Info.pist o que esté vacío. Si no se configura esta opción, puede impedir que el SDK de Intune proteja la aplicación a pesar de que las directivas de protección de aplicaciones se apliquen correctamente.
Si no tiene un valor específico establecido para el UISceneConfigurations , puede usar esta configuración predeterminada:
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
</dict>
</array>
</dict>
Configuración y funcionalidades de compilación de Xcode
La aplicación debe tener "Quitar símbolos rápidos" (STRIP_SWIFT_SYMBOLS) y "Habilitar código bit"(ENABLE_BITCODE) establecido en NO en la configuración de compilación de Xcode. Si la aplicación incluye la funcionalidad "Seguridad mejorada" disponible en Xcode 26+, DEBE deshabilitar las opciones "Autenticar punteros" y "Habilitar memoria de plataforma de solo lectura".
Integración de una extensión de proveedor de archivos
Las extensiones del proveedor de archivos tienen ciertos requisitos de memoria que pueden dificultar la integración del SDK completo. Para hacerlo más fácil, hay una biblioteca libIntuneMAMSwiftFileProvider.xcframeworkestática , que es una versión simplificada del SDK específicamente para extensiones de proveedor de archivos. Tenga en cuenta que esta biblioteca es para la parte que no es de interfaz de usuario de la extensión FileProvider. Debe integrar el SDK completo en la extensión de interfaz de usuario del proveedor de archivos.
Para integrar una de estas bibliotecas con la extensión del proveedor de archivos, siga los pasos para integrar el SDK como una biblioteca estática. Asegúrate de incluir ContainingAppBundleId la configuración.
Integración de una extensión de proveedor de archivos no replicados
La aplicación usa un proveedor de archivos no replicado si implementa el protocolo NSFileProviderExtension. No se replican los proveedores de archivos creados antes de iOS 16.0.
In - startProvidingItemAtURL:completionHandler: check if you should encrypt files using [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]. Use la API encryptFile:forAccountId: en IntuneMAMFileProtectionManager para el cifrado de archivos real. Además, comparta una copia del archivo cuando se requiera cifrado, ya que no deseará almacenar una copia cifrada del archivo en su almacenamiento en la nube.
En - importDocumentAtURL:toParentItemIdentifier:completionHandler: compruebe si el archivo está cifrado mediante la API isFileEncrytped: en IntuneMAMFileProtectionManager. Si es así, descifre mediante la API decryptFile:toCopyPath: de IntuneMAMFileProtectionManager. En las aplicaciones de identidades múltiples, compruebe también con la API canReceiveSharedFile: en IntuneMAMPolicy del propietario de destino para determinar si el propietario puede recibir el archivo.
Integración de una extensión de proveedor de archivos replicados
La aplicación usa un proveedor de archivos duplicados si implementa el protocolo NSFileProviderReplicatedExtension (agregado en iOS 16.0).
En - fetchContentsForItemWithIdentifier:version:request:completionHandler: compruebe si debe cifrar archivos mediante [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]. Use la API encryptFile:forAccountId: en IntuneMAMFileProtectionManager para el cifrado de archivos real. Distribuya una copia del archivo cuando se requiera cifrado, ya que no desea almacenar una copia cifrada del archivo en el almacenamiento en la nube.
En - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: compruebe si el archivo está cifrado mediante la API isFileEncrypted: en IntuneMAMFileProtectionManager. Si es así, descifre mediante la API decryptFile:toCopyPath: de IntuneMAMFileProtectionManager. En las aplicaciones de identidades múltiples, compruebe también con la API canReceiveSharedFile: en IntuneMAMPolicy del propietario de destino para determinar si el propietario puede recibir el archivo.
En cualquier lugar donde el proveedor de archivos duplicados cree y pase un NSFileProviderItem al sistema, llame a la API protectFileProviderItem:forAccountId: de IntuneMAMFileProtectionManager con la identidad del propietario del elemento. En función de dónde se cree el objeto NSFileProviderItem y se conserve dentro de la extensión, es posible que tenga que hacerlo en cada uno de los métodos de protocolo de NSFileProviderReplicatedExtension.
Configurar las opciones para el SDK de la aplicación de Intune
Puede usar el diccionario IntuneMAMSettings en el archivo Info.plist de la aplicación para instalar y configurar el SDK de la aplicación de Intune. Si el diccionario IntuneMAMSettings no se ve en el archivo Info.plist, debe crearlo.
En el diccionario IntuneMAMSettings, puede definir las siguientes opciones admitidas para configurar el SDK de aplicaciones de Intune.
En las secciones anteriores se tratan algunas de estas configuraciones y otras no se aplican a todas las aplicaciones.
| Configuración | Tipo | Definición | ¿Necesario? |
|---|---|---|---|
| ADALClientId | Cadena | Identificador de cliente de Microsoft Entra de la aplicación. | Necesario para todas las aplicaciones. |
| ADALAuthority | Cadena | La autoridad de Microsoft Entra de la aplicación en uso. Debe utilizar su propio entorno donde se configuran las cuentas de Microsoft Entra. Para obtener más información, consulte Opciones de configuración de la aplicación. | Necesario si la aplicación es una aplicación de línea de negocio personalizada creada para su uso en una única organización o inquilino de Microsoft Entra. Si este valor no existe, se usa la autoridad común de Microsoft Entra (solo se admite para aplicaciones multiinquilino). |
| ADALRedirectUri | Cadena | URI de redireccionamiento de Microsoft Entra de la aplicación. | Se requiere ADALRedirectUri o ADALRedirectScheme para todas las aplicaciones. |
| ADALRedirectScheme | Cadena | El esquema de redireccionamiento de Microsoft Entra ID de la aplicación. Esto se puede usar en lugar de ADALRedirectUri si el URI de redireccionamiento de la aplicación tiene el formato scheme://bundle_id. |
Se requiere ADALRedirectUri o ADALRedirectScheme para todas las aplicaciones. |
| ADALLogOverrideDisabled | Booleano | Especifica si el SDK enruta todos los registros de MSAL (incluidas las llamadas MSAL desde la aplicación, si las hay) a su propio archivo de registro. El valor predeterminado es NO. Establézcalo en YES si la aplicación establece su propia devolución de llamada de registro de MSAL. | Opcional. |
| ADALCacheKeychainGroupOverride | Cadena | Especifica el grupo de llaveros que se va a usar para la caché de MSAL, en lugar de "com.microsoft.adalcache". El sistema aplica un prefijo automáticamente en tiempo de ejecución. |
Opcional. |
| AppGroupIdentifiers | Matriz de cadenas | Matriz de grupos de aplicaciones de la sección de derechos com.apple.security.application-groups de la aplicación. |
Necesario si la aplicación usa grupos de aplicaciones. |
| ContainingAppBundleId | Cadena | Especifica el identificador de agrupación de la aplicación que contiene la extensión. | Necesario para las extensiones de iOS. |
| AutoEnrollOnLaunch | Booleano | Especifica si la aplicación debe intentar inscribirse automáticamente al iniciarse si se detecta una identidad administrada existente y aún no lo ha hecho. El valor predeterminado es NO. Nota: Si no se encuentra ninguna identidad administrada o no hay ningún token válido disponible en la caché de MSAL, se produce un error en la inscripción de forma silenciosa a menos que MAMPolicyRequired sea SÍ. |
Opcional. El valor predeterminado es NO. |
| MAMPolicyRequired | Booleano | Especifica si la aplicación no se puede iniciar si no tiene una directiva de protección de aplicaciones de Intune. El valor predeterminado es NO. Nota: Las aplicaciones no se pueden enviar a la App Store con esto establecido en SÍ. Al configurarlo en SÍ, AutoEnrollOnLaunch también debe ser SÍ. |
Opcional. El valor predeterminado es NO. |
| MAMPolicyWarnAbsent | Booleano | Especifica si la aplicación advierte al usuario durante el inicio si no hay ninguna directiva de protección de aplicaciones de Intune presente. Nota: Los usuarios aún pueden continuar después de descartar la advertencia. |
Opcional. El valor predeterminado es NO. |
| Multiidentidad | Booleano | Especifica si la aplicación tiene reconocimiento de identidades múltiples. Para obtener más información, consulte la documentación sobre identidades múltiples. | Opcional. El valor predeterminado es NO. |
| MultiIdentityCancelDisabled | Booleano | Deshabilita el botón Cancelar en las pantallas de interfaz de usuario de inicio condicional de Intune en aplicaciones de identidad múltiple. Si no se establece en SÍ, la aplicación debe controlar el código de IntuneMAMSwitchIdentityResultCanceled error. Consulte Cambiar identidades. |
Opcional. El valor predeterminado es NO. |
| SafariViewControllerBlockedOverride | Booleano | Deshabilita los ganchos SafariViewController de Intune para habilitar la autenticación MSAL a través de SFSafariViewController, SFAuthSession o ASWebAuthSession. Nota: Un botón de actividad configurada aparece solo si la vista no está administrada y está establecida en SÍ. |
Opcional. El valor predeterminado es NO. Advertencia: Puede provocar la pérdida de datos si se usa incorrectamente. |
| SplashIconFile SplashIconFile~ipad |
Cadena | Especifica el archivo de icono de inicio de Intune. | Opcional. |
| SplashDuration | Número | Tiempo mínimo en segundos que se muestra la pantalla de inicio de Intune. El valor predeterminado es 1.5. | Opcional. |
| BackgroundColor | Cadena | Especifica el color de fondo de los componentes de interfaz de usuario del SDK de Intune. Acepta #XXXXXX un valor hexadecimal sin el signo de almohadilla. |
Opcional. El valor predeterminado es el color de fondo del sistema. |
| Color de primer plano | Cadena | Especifica el color de primer plano o de texto para los componentes de la interfaz de usuario. Acepta #XXXXXX o hexadecimal sin signo de almohadilla. |
Opcional. El valor predeterminado es el color de la etiqueta del sistema. |
| AccentColor | Cadena | Especifica el color de énfasis de los componentes de la interfaz de usuario (botones, cuadro de PIN resaltado). Acepta #XXXXXX o hexadecimal sin signo de almohadilla. |
Opcional. El valor predeterminado es azul del sistema. |
| SecondaryBackgroundColor | Cadena | Especifica el color de fondo secundario para las pantallas MTD. Acepta #XXXXXX o hexadecimal sin signo de almohadilla. |
Opcional. El valor predeterminado es blanco. |
| SecondaryForegroundColor | Cadena | Especifica el color de primer plano secundario para las pantallas MTD. Acepta #XXXXXX o hexadecimal sin signo de almohadilla. |
Opcional. El valor predeterminado es gris. |
| SupportsDarkMode | Booleano | Especifica si los colores de la interfaz de usuario siguen el modo oscuro del sistema cuando no se establecen colores explícitos. | Opcional. El valor predeterminado es SÍ. |
| MAMTelemetryDisabled | Booleano | Especifica si la telemetría se envía al back-end. | Opcional. El valor predeterminado es NO. |
| MAMTelemetryUsePPE | Booleano | Envía la telemetría al back-end de los equipos de protección personal. Útil para probar aplicaciones para que los datos no se mezclen con los datos de los clientes. | Opcional. El valor predeterminado es NO. |
| MaxFileProtectionLevel | Cadena | Especifica el máximo NSFileProtectionType que admite la aplicación. Reemplaza la directiva si el servicio envía un nivel superior.Valores posibles: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.Aviso: Con NSFileProtectionComplete, la aplicación pierde el acceso a los archivos protegidos ~10 segundos después de que se bloquee el dispositivo, lo que puede romper componentes como bases de datos locales. Las aplicaciones con interfaz de usuario de pantalla de bloqueo deben usar NSFileProtectionCompleteUntilFirstUserAuthentication. |
Opcional. Valores predeterminados de NSFileProtectionComplete. |
| OpenInActionExtension | Booleano | Establézcalo en Sí para las extensiones Abrir en acción. Consulte Uso compartido de datos a través de UIActivityViewController. | Opcional. |
| TreatAllWebViewsAsUnmanaged | Booleano | Trata todas las vistas Web como no administradas para el cumplimiento de cortar, copiar y pegar. Consulte Mostrar contenido web. | Opcional. El valor predeterminado es NO. |
| WebViewHandledURLSchemes | Matriz de cadenas | Esquemas de dirección URL controlados por WebView de la aplicación. | Necesario si su vista web controla vínculos o navegación JavaScript. |
| DocumentBrowserFileCachePath | Cadena | Si usa UIDocumentBrowserViewController, establezca una ruta (relativa al directorio principal de la aplicación) para los archivos administrados descifrados. |
Opcional. Valores predeterminados de /Documents/. |
| VerboseLoggingEnabled | Booleano | Habilita el registro detallado. | Opcional. El valor predeterminado es NO. |
| FinishLaunchingAtStartup | Booleano | Requerido al usar [BGTaskScheduler registerForTaskWithIdentifier:]; debe ser SÍ. |
Opcional. El valor predeterminado es NO. |
| ValuesToScrubFromLogging | Matriz de cadenas | Valores de configuración de la aplicación que se deben quitar de los registros. También se puede establecer a través de valuesToScrubFromLogging on IntuneMAMSettings. |
Opcional. |
Recibir directiva de protección de aplicaciones
Información general
Para recibir la directiva de protección de aplicaciones de Intune, las aplicaciones deben iniciar una solicitud de inscripción con el servicio MAM de Intune. Las aplicaciones se pueden configurar en el Centro de administración de Intune para recibir la directiva de protección de aplicaciones con o sin inscripción de dispositivos. Administración de aplicaciones móviles (MAM), permite que las aplicaciones sean administradas por Intune sin necesidad de que el dispositivo esté inscrito en la administración de dispositivos móviles (MDM) de Intune. En ambos casos, es necesario inscribirse con el servicio MAM de Intune para recibir la directiva.
Importante
El SDK de la aplicación de Intune para iOS usa claves de cifrado de 256 bits cuando el cifrado está habilitado por las directivas de protección de aplicaciones. Todas las aplicaciones deben tener una versión actual del SDK para permitir el uso compartido de datos protegido.
Aplicaciones que ya usan ADAL o MSAL
Nota:
La biblioteca de autenticación de Autenticación de Azure AD (ADAL) y la API de Graph API de Azure AD están obsoletas. Para obtener más información, consulte Actualizar las aplicaciones para que usen la Biblioteca de autenticación de Microsoft (MSAL) y la API de Microsoft Graph.
Las aplicaciones que ya usan MSAL deben llamar al registerAndEnrollAccountId método en la IntuneMAMEnrollmentManager instancia después de que el usuario se autentique correctamente:
/*
* This method adds the account to the list of registered accounts.
* An enrollment request starts immediately.
* @param accountId The Entra object ID of the account to be registered with the SDK
*/
(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;
Si inicia sesión correctamente, MSAL devuelve el resultado en el objeto MSALResult. Use tenantProfile.identifier en MSALResult como parámetro accountId para la API.
Al llamar al registerAndEnrollAccountId método, el SDK registra la cuenta de usuario e intenta inscribir la aplicación en nombre de esta cuenta. Si se produce un error en la inscripción por cualquier motivo, el SDK vuelve a intentarlo automáticamente 24 horas después. Para fines de depuración, la aplicación puede recibir notificaciones, a través de un delegado, sobre los resultados de cualquier solicitud de inscripción.
Después de invocar esta API, la aplicación puede seguir funcionando con normalidad. Si la inscripción se realiza correctamente, el SDK notifica al usuario que es necesario reiniciar la aplicación. En ese momento, el usuario puede reiniciar inmediatamente la aplicación.
[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];
Aplicaciones que no usan ADAL o MSAL
Las aplicaciones que no inician sesión en el usuario con ADAL o MSAL pueden seguir recibiendo la directiva de protección de aplicaciones del servicio MAM de Intune llamando a la API para que el SDK controle esa autenticación. Las aplicaciones deben usar esta técnica cuando no han autenticado a un usuario con Microsoft Entra ID, pero aún necesitan recuperar la directiva de protección de aplicaciones para ayudar a proteger los datos. Un ejemplo es si se usa otro servicio de autenticación para el inicio de sesión de la aplicación o si la aplicación no admite el inicio de sesión en absoluto. Para ello, la aplicación puede llamar al loginAndEnrollAccount método en la IntuneMAMEnrollmentManager instancia:
/**
* Creates an enrollment request, which starts immediately.
* If no token can be retrieved for the identity, the user is prompted
* to enter their credentials, after which enrollment is retried.
* @param identity The UPN of the account to be logged in and enrolled.
*/
(void)loginAndEnrollAccount: (NSString *)identity;
Al llamar a este método, el SDK solicita al usuario las credenciales si no se encuentra ningún token existente. Después, el SDK intenta inscribir la aplicación con el servicio MAM de Intune en nombre de la cuenta de usuario proporcionada. El método se puede llamar con "nil" como identidad. En ese caso, el SDK se inscribe con el usuario administrado existente en el dispositivo (si es MDM) o solicita al usuario un nombre de usuario si no se encuentra ningún usuario existente.
Si se produce un error en la inscripción, la aplicación debe considerar la posibilidad de volver a llamar a esta API en un momento futuro, en función de los detalles del error. La aplicación puede recibir notificaciones, a través de un delegado, sobre los resultados de cualquier solicitud de inscripción.
Después de invocar esta API, la aplicación puede seguir funcionando con normalidad. Si la inscripción se realiza correctamente, el SDK notifica al usuario que es necesario reiniciar la aplicación.
Una vez administrada la aplicación, es necesario consultar el valor del id. de objeto de Microsoft Entra mediante enrolledAccountId en el IntuneMAMEnrollmentManagerarchivo . Use esta opción para todas las API del SDK de MAM que la aplicación usa para esta cuenta inscrita.
Ejemplo:
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];
Dejar que Intune se encargue de la autenticación y la inscripción en el lanzamiento
Si desea que el SDK de Intune controle toda la autenticación con ADAL/MSAL y la inscripción antes de que la aplicación termine de iniciarse y la aplicación siempre requiere directivas de protección de aplicaciones, no tiene que usar loginAndEnrollAccount la API. Puede establecer la siguiente configuración en YES en el diccionario IntuneMAMSettings en el Info.plist de la aplicación.
| Configuración | Tipo | Definición |
|---|---|---|
| AutoEnrollOnLaunch | Booleano | Especifica si la aplicación debe intentar inscribirse automáticamente al iniciarse si se detecta una identidad administrada existente y aún no lo ha hecho. El valor predeterminado es NO. Nota: Si no se encuentra ninguna identidad administrada o no hay ningún token válido para la identidad disponible en la caché de ADAL/MSAL, se produce un error en el intento de inscripción sin pedir credenciales sin solicitar credenciales, a menos que la aplicación también se establezca MAMPolicyRequired en YES. |
| MAMPolicyRequired | Booleano | Especifica si la aplicación no se puede iniciar si la aplicación no tiene una directiva de protección de aplicaciones de Intune. El valor predeterminado es NO. Nota: Las aplicaciones no se pueden enviar a la App Store con MAMPolicyRequired el valor establecido en SÍ. Al establecer MAMPolicyRequired en SÍ, AutoEnrollOnLaunch también debe establecerse en SÍ. |
Si elige esta opción para la aplicación, no tiene que controlar el reinicio de la aplicación después de inscribirse.
Anular el registro de las cuentas de usuario
Antes de que un usuario cierre la sesión de una aplicación, la aplicación debe anular el registro del usuario en el SDK. Este proceso garantiza:
Los reintentos de inscripción ya no se realizan para la cuenta del usuario.
Se quitará la directiva de protección de aplicaciones.
Los datos corporativos se eliminan si la aplicación inicia un borrado selectivo (opcional).
Antes de que el usuario cierre la sesión, la aplicación debe llamar al siguiente método en la IntuneMAMEnrollmentManager instancia:
/*
* This method removes the provided account from the list of
* registered accounts. Once removed, if the account enrolled
* the application, the account is un-enrolled.
* @note In the case where an un-enroll is required, this method blocks
* until the Intune APP AAD token is acquired, then returns. This method must be called before
* the user is removed from the application (so that required AAD tokens are not purged
* before this method is called).
* @param accountId The object ID of the account to be removed.
* @param doWipe If YES, a selective wipe if the account is un-enrolled
*/
(void)deRegisterAndUnenrollAccountId:(NSString *)accountId withWipe:(BOOL)doWipe;
Se debe llamar a este método antes de que se eliminen los tokens de Microsoft Entra de la cuenta del usuario. El SDK necesita los tokens de Microsoft Entra de la cuenta del usuario para realizar solicitudes específicas al servicio MAM de Intune en nombre del usuario.
Si la aplicación elimina los datos corporativos del usuario por sí sola, la doWipe marca se puede establecer en false. De lo contrario, la aplicación puede hacer que el SDK inicie un borrado selectivo. Esta acción da como resultado una llamada al delegado de borrado selectivo de la aplicación.
Ejemplo:
[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];
Notificaciones de estado, resultado y depuración
La aplicación puede recibir notificaciones de estado, resultados y depuración sobre las siguientes solicitudes al servicio MAM de Intune:
- Solicitudes de inscripción
- Solicitudes de actualización de directivas
- Solicitudes de anulación de la inscripción
Las notificaciones se presentan a través de métodos delegados en IntuneMAMEnrollmentDelegate.h:
/**
* Called when an enrollment request operation is completed.
* @param status status object containing debug information
*/
(void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a MAM policy request operation is completed.
* @param status status object containing debug information
*/
(void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a un-enroll request operation is completed.
* @Note: when a user is un-enrolled, the user is also de-registered with the SDK
* @param status status object containing debug information
*/
(void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
Estos métodos delegados devuelven un IntuneMAMEnrollmentStatus objeto que tiene la siguiente información:
- El accountId (Id. de objeto) de la cuenta asociada a la solicitud
- La identidad (UPN) de la cuenta asociada a la solicitud
- Un código de estado que indica el resultado de la solicitud
- Una cadena de error con una descripción del código de estado
- Un
NSErrorobjeto. Este objeto se define enIntuneMAMEnrollmentStatus.h, junto con los códigos de estado específicos que se pueden devolver.
Código de ejemplo
A continuación se muestran implementaciones de ejemplo de los métodos delegados:
- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"enrollment result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"policy check-in result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"un-enroll result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
Reinicio de la aplicación
Cuando una aplicación recibe directivas MAM por primera vez, debe reiniciarse para aplicar los enlaces necesarios. Para notificar a la aplicación que es necesario un reinicio, el SDK proporciona un método delegado en IntuneMAMPolicyDelegate.h.
- (BOOL) restartApplication
El valor devuelto por este método indica al SDK si la aplicación debe controlar el reinicio requerido:
Si se devuelve true, la aplicación debe controlar el reinicio.
Si se devuelve false, el SDK reinicia la aplicación después de que se devuelva este método. El SDK muestra inmediatamente un cuadro de diálogo que indica al usuario que reinicie la aplicación.
Nota:
Las aplicaciones .NET MAUI no requieren un reinicio.
Criterios de salida
Después de configurar el complemento de compilación o integrar la herramienta de línea de comandos en el proceso de compilación, valide que se esté ejecutando correctamente:
- Asegúrese de que la compilación se compila y compila correctamente.
- Inicie la aplicación compilada, inicie sesión con un usuario de Microsoft Entra que no esté de destino con la directiva de protección de aplicaciones y confirme que la aplicación funciona según lo previsto.
- Cierre la sesión y repita esta prueba con un usuario de Microsoft Entra de destino con la directiva de protección de aplicaciones, y confirme que la aplicación está administrada por Intune y se ha reiniciado.
En este punto de la integración, la aplicación ahora puede recibir y aplicar la directiva de protección de aplicaciones. Ejecute las siguientes pruebas para validar la integración.
Primera prueba de aplicación de directiva
Ejecute primero la siguiente prueba para familiarizarse con la experiencia completa del usuario final de la aplicación de directivas en la aplicación:
- Cree una directiva de protección de aplicaciones iOS en el Centro de administración de Microsoft Intune. Para esta prueba, configure la directiva:
- En Requisitos de acceso, deje la configuración predeterminada. En particular, "PIN para acceso" debe ser "Requerir".
- Asegúrese de que la directiva de protección de aplicaciones está dirigida a su aplicación. Es posible que deba agregar manualmente el identificador de agrupación de la aplicación en el asistente para la creación de directivas.
- Asigne la directiva de protección de aplicaciones a un grupo de usuarios que contenga la cuenta de prueba.
- Instale la aplicación.
- Inicie sesión en la aplicación con la cuenta de prueba de destino de la directiva de protección de aplicaciones.
- Confirme que aparece una pantalla administrada de Intune y confirme que el mensaje reinicia la aplicación. Esta pantalla indica que el SDK recupera correctamente la directiva para esta cuenta.
- Cree un PIN cuando se le pida que establezca un PIN de aplicación.
- Cierre la sesión de la cuenta administrada de la aplicación.
- Navegue por la aplicación y confirme que la aplicación funciona según lo previsto, si es posible, sin iniciar sesión.
Esta lista de pasos es una prueba mínima para confirmar que la aplicación registra la cuenta correctamente, registra la devolución de llamada de autenticación y anula el registro de la cuenta. Ejecute las siguientes pruebas para validar más a fondo cómo otras configuraciones de directiva de protección de aplicaciones modifican el comportamiento de la aplicación.
Pasos siguientes
Después de completar todos los criterios de salida, continúe con la Fase 4: Características de participación en la aplicación.