Microsoft Intune enlaces de Xamarin del SDK de aplicaciones

Importante

Xamarin. Forms ha evolucionado a la interfaz de usuario de aplicaciones multiplataforma (MAUI) de .NET. Los proyectos de Xamarin existentes deben migrarse a .NET MAUI. Para obtener más información sobre cómo actualizar proyectos de Xamarin a .NET, consulte la documentación Actualización de Xamarin a .NET & .NET MAUI .

La compatibilidad con Xamarin ha finalizado a partir del 1 de mayo de 2024 para todos los SDK de Xamarin, incluido Xamarin. Forms y Intune enlaces de Xamarin del SDK de aplicaciones. Para obtener Intune compatibilidad con plataformas Android e iOS, consulte Intune SDK de aplicaciones para .NET MAUI: Androidy Microsoft Intune App SDK para MAUI.iOS.

Información general

Los enlaces de Xamarin del SDK de Intune aplicación permiten Intune directiva de protección de aplicaciones en aplicaciones iOS y Android compiladas con Xamarin. Los enlaces permiten a los desarrolladores compilar fácilmente Intune características de protección de aplicaciones en su aplicación basada en Xamarin.

Los enlaces de Xamarin del SDK de Microsoft Intune aplicación permiten incorporar Intune directivas de protección de aplicaciones (también conocidas como directivas DE APLICACIÓN o MAM) en las aplicaciones desarrolladas con Xamarin. Una aplicación habilitada para MAM es una que se integra con el SDK de Intune App. Los administradores de TI pueden implementar directivas de protección de aplicaciones en la aplicación móvil cuando Intune administra activamente la aplicación.

¿Qué se admite?

Máquinas para desarrolladores

  • Windows (versión 15.7 y posteriores de Visual Studio)
  • macOS

Plataformas de aplicaciones móviles

  • Android
  • iOS

escenarios de administración de aplicaciones móviles de Intune

  • Intune MAM
  • Intune dispositivos inscritos en MDM
  • Dispositivos inscritos en EMM de terceros

Las aplicaciones de Xamarin creadas con los enlaces de Xamarin del SDK de aplicaciones de Intune ahora pueden recibir directivas de protección de aplicaciones Intune tanto en dispositivos inscritos Intune administración de dispositivos móviles (MDM) como en dispositivos no inscritos.

Requisitos previos

Revise los términos de licencia. Imprima y conserve una copia de los términos de licencia de los registros. Al descargar y usar los enlaces de Xamarin del SDK de aplicaciones de Intune, acepta dichos términos de licencia. Si no los acepta, no utilice el software.

El SDK de Intune se basa en la Biblioteca de autenticación de Microsoft (MSAL) para sus escenarios de autenticación e inicio condicional, que requieren que las aplicaciones se configuren con Microsoft Entra ID.

Si la aplicación ya está configurada para usar MSAL y tiene su propio identificador de cliente personalizado que se usa para autenticarse con Microsoft Entra ID, asegúrese de que se siguen los pasos para conceder permisos de aplicación xamarin al servicio Intune Mobile Application Management (MAM). Use las instrucciones de la sección "Dar acceso a la aplicación al servicio Intune Mobile App Management" de la guía introducción al SDK de Intune.

Consideraciones de seguridad

Para evitar posibles ataques de suplantación de identidad, divulgación de información y elevación de privilegios:

Habilitación de Intune directivas de protección de aplicaciones en la aplicación móvil de iOS

Importante

Intune publica periódicamente las actualizaciones del SDK de Intune App. Compruebe periódicamente los enlaces de Xamarin del SDK de aplicaciones de Intune para obtener actualizaciones e incorpore a su ciclo de versión de desarrollo de software para asegurarse de que las aplicaciones admiten la configuración de directiva de protección de aplicaciones más reciente.

  1. Agregue microsoft.Intune. MAM. Paquete NuGet de Xamarin.iOS para el proyecto de Xamarin.iOS.

  2. Siga los pasos generales necesarios para integrar el SDK de Intune App en una aplicación móvil de iOS. Puede comenzar con el paso 3 de las instrucciones de integración de la Guía para desarrolladores de Intune App SDK para iOS. Puede omitir el paso final de esa sección de ejecución de IntuneMAMConfigurator, ya que esta herramienta se incluye en Microsoft. Intune. MAM. Paquete Xamarin.iOS y se ejecutará automáticamente en tiempo de compilación. Importante: La habilitación del uso compartido de cadenas de claves para una aplicación es ligeramente diferente en Visual Studio de Xcode. Abra la lista plist de derechos de la aplicación y asegúrese de que la opción "Habilitar cadena de claves" está habilitada y que los grupos de intercambio de cadenas de claves adecuados se agregan en esa sección. A continuación, asegúrese de que la lista plist de derechos se especifica en el campo "Derechos personalizados" de las opciones "Firma de agrupación de iOS" del proyecto para todas las combinaciones de configuración y plataforma adecuadas.

  3. Una vez que se agregan los enlaces y la aplicación está configurada correctamente, la aplicación puede empezar a usar las API del SDK de Intune. Para ello, debe incluir el siguiente espacio de nombres:

    using Microsoft.Intune.MAM;
    
  4. Para empezar a recibir directivas de protección de aplicaciones, la aplicación debe inscribirse en el servicio Intune MAM. Si la aplicación no usa la Biblioteca de autenticación de Microsoft (MSAL) para autenticar usuarios y desea que el SDK de Intune controle la autenticación, la aplicación debe proporcionar el UPN del usuario al método LoginAndEnrollAccount de IntuneMAMEnrollmentManager:

     IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
    

    Las aplicaciones pueden pasar null si el UPN del usuario es desconocido en el momento de la llamada. En este caso, se pedirá a los usuarios que escriban su dirección de correo electrónico y contraseña.

    Si la aplicación ya usa MSAL para autenticar usuarios, puede configurar una experiencia de inicio de sesión único (SSO) entre la aplicación y el SDK de Intune. En primer lugar, deberá invalidar la configuración de Microsoft Entra predeterminada que usa el SDK de Intune con las de la aplicación. Puede hacerlo a través del diccionario IntuneMAMSettings en info.plist de la aplicación, como se menciona en la Guía para desarrolladores de Intune App SDK para iOS, o bien puede hacerlo en el código mediante las propiedades de invalidación de Microsoft Entra ID de la clase IntuneMAMSettings. El enfoque Info.plist se recomienda para las aplicaciones cuya configuración de MSAL es estática mientras que las propiedades de invalidación se recomiendan para las aplicaciones que determinan esos valores en tiempo de ejecución. Una vez configurada toda la configuración de SSO, la aplicación debe proporcionar el UPN del usuario al método RegisterAndEnrollAccount de IntuneMAMEnrollmentManager después de autenticarse correctamente:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Las aplicaciones pueden determinar el resultado de un intento de inscripción implementando el método EnrollmentRequestWithStatus en una subclase de IntuneMAMEnrollmentDelegate y estableciendo la propiedad Delegate de IntuneMAMEnrollmentManager en una instancia de esa clase.

    Tras una inscripción correcta, las aplicaciones pueden determinar el UPN de la cuenta inscrita (si se desconoce previamente) consultando la siguiente propiedad:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Aplicaciones de ejemplo

Las aplicaciones de ejemplo que resaltan la funcionalidad mam en aplicaciones xamarin.iOS están disponibles en GitHub.

Nota:

No hay ningún remapper para iOS/iPadOS. Integración en xamarin. Forms aplicación debe ser la misma que para un proyecto de Xamarin.iOS normal.

Habilitación de Intune directivas de protección de aplicaciones en la aplicación móvil Android

  1. Agregue microsoft.Intune. MAM. Paquete NuGet de Xamarin.Android para el proyecto de Xamarin.Android.
    1. Para un xamarin. Forms aplicación, agregue microsoft.Intune. MAM. Paquete NuGet Remapper.Tasks para el proyecto de Xamarin.Android.
  2. Siga los pasos generales necesarios para integrar el SDK de Intune App en una aplicación móvil Android mientras hace referencia a este documento para obtener más detalles.

Integración de Xamarin.Android

Puede encontrar información general completa para la integración del SDK de Intune App en la guía para desarrolladores de Microsoft Intune App SDK para Android. A medida que lea la guía e integre el SDK de aplicación de Intune con la aplicación xamarin, las secciones siguientes están diseñadas para resaltar las diferencias entre la implementación de una aplicación android nativa desarrollada en Java y una aplicación xamarin desarrollada en C#. Estas secciones deben tratarse como complementarias y no pueden actuar como sustitutos para leer la guía en su totalidad.

Remapper

A partir de la versión 1.4428.1, el Microsoft.Intune.MAM.Remapper paquete se puede agregar a una aplicación Xamarin.Android como herramientas de compilación para realizar los reemplazos de servicios de sistemas, métodos y clases MAM. Si se incluye Remapper, las partes de reemplazo equivalentes de MAM de las secciones Métodos con nombre y Aplicación MAM se realizarán automáticamente cuando se compile la aplicación.

Para excluir una clase de MAM-ification mediante Remapper, se puede agregar la siguiente propiedad en el archivo de proyectos .csproj .

  <PropertyGroup>
    <ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
  </PropertyGroup>

Nota:

Remapper impide actualmente la depuración en aplicaciones de Xamarin.Android. Se recomienda la integración manual para depurar la aplicación.

Métodos cuyo nombre se ha cambiado

En muchos casos, un método disponible en la clase Android se ha marcado como final en la clase de reemplazo MAM. En este caso, la clase de reemplazo MAM proporciona un método con nombre similar (con sufijo MAM) que debe invalidar en su lugar. Por ejemplo, al derivar de MAMActivity, en lugar de reemplazar OnCreate() y llamar a base.OnCreate(), Activity debe invalidar OnMAMCreate() y llamar a base.OnMAMCreate().

Aplicación MAM

La aplicación debe definir una Android.App.Application clase. Si integra manualmente MAM, debe heredar de MAMApplication. Asegúrese de que la subclase está correctamente decorada con el [Application] atributo e invalida el (IntPtr, JniHandleOwnership) constructor.

    [Application]
    class TaskrApp : MAMApplication
    {
    public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
        : base(handle, transfer) { }

Nota:

Un problema con los enlaces de Xamarin de MAM puede provocar que la aplicación se bloquee cuando se implementa en modo de depuración. Como solución alternativa, el Debuggable=false atributo debe agregarse a la Application clase y la android:debuggable="true" marca debe quitarse del manifiesto si se estableció manualmente.

Habilitación de características que requieren la participación de la aplicación

Ejemplo: Determinar si es necesario el PIN para la aplicación

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Ejemplo: Determinar el usuario de Intune principal

IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;

Ejemplo: Determinar si se permite guardar en el dispositivo o el almacenamiento en la nube

MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);

Registro de notificaciones desde el SDK

La aplicación debe registrarse para recibir notificaciones desde el SDK creando y MAMNotificationReceiver registrándola con MAMNotificationReceiverRegistry. Para ello, proporcione el receptor y el tipo de notificación deseado en , como se muestra en App.OnMAMCreateel ejemplo siguiente:

public override void OnMAMCreate()
{
    // Register the notification receivers
    IMAMNotificationReceiverRegistry registry = MAMComponents.Get<IMAMNotificationReceiverRegistry>();
    foreach (MAMNotificationType notification in MAMNotificationType.Values())
    {
        registry.RegisterReceiver(new ToastNotificationReceiver(this), notification);
    }
    ...

Administrador de inscripción de MAM

IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();

Xamarin. integración Forms

En Xamarin.Forms el caso de las aplicaciones, el paquete realiza automáticamente el Microsoft.Intune.MAM.Remapper reemplazo de clase MAM insertando MAM clases en la jerarquía de clases de las clases que se usan Xamarin.Forms habitualmente.

Nota:

The Xamarin. Forms integración debe realizarse además de la integración de Xamarin.Android detallada anteriormente. Remapper se comporta de manera diferente para Xamarin. Forms aplicaciones, por lo que se deben seguir realizando los reemplazos manuales de MAM.

Una vez que remapper se agrega al proyecto, deberá realizar los reemplazos equivalentes de MAM. Por ejemplo, FormsAppCompatActivity y FormsApplicationActivity se pueden seguir usando en las invalidaciones proporcionadas por la aplicación a OnCreate y OnResume se reemplazan por los equivalentes OnMAMCreate mam y OnMAMResume respectivamente.

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnMAMCreate(Bundle savedInstanceState)
        {
            base.OnMAMCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }

Si no se realizan los reemplazos, es posible que encuentre los siguientes errores de compilación hasta que realice los reemplazos:

  • Error del compilador CS0239. Este error se suele ver con este formato 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Esto se espera porque cuando Remapper modifica la herencia de clases de Xamarin, se realizarán sealed ciertas funciones y se agregará una nueva variante MAM para invalidar en su lugar.
  • Error del compilador CS0507: este error se suele ver con este formato 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Cuando Remapper cambia la herencia de algunas de las clases de Xamarin, determinadas funciones miembro se cambiarán a public. Si invalida cualquiera de estas funciones, deberá cambiar los modificadores de acceso para que también lo sean public .

Nota:

Remapper vuelve a escribir una dependencia que Visual Studio usa para la finalización automática de IntelliSense. Por lo tanto, es posible que tenga que volver a cargar y volver a compilar el proyecto cuando se agregue Remapper para IntelliSense para reconocer correctamente los cambios.

Solución de problemas

  • Si encuentra una pantalla blanca en blanco en la aplicación al iniciarse, es posible que tenga que forzar la ejecución de las llamadas de navegación en el subproceso principal.
  • Los enlaces de Xamarin del SDK de Intune no admiten aplicaciones que usan un marco multiplataforma, como MvvmCross, debido a conflictos entre MvvmCross y Intune clases MAM. Aunque algunos clientes podrían haber tenido éxito con la integración después de mover sus aplicaciones a Xamarin sin formato. Forms, no proporcionamos instrucciones ni complementos explícitos para los desarrolladores de aplicaciones que usan MvvmCross.

Aplicación Portal de empresa

Los enlaces de Xamarin del SDK de Intune se basan en la presencia de la aplicación Portal de empresa Android en el dispositivo para habilitar las directivas de protección de aplicaciones. El Portal de empresa recupera las directivas de protección de aplicaciones del servicio Intune. Cuando se inicializa la aplicación, carga la directiva y el código para aplicar esa directiva desde el Portal de empresa. No es necesario que el usuario inicie sesión.

Nota:

Cuando la aplicación de Portal de empresa no está en el dispositivo Android, una aplicación administrada por Intune se comporta igual que una aplicación normal que no admite Intune directivas de protección de aplicaciones.

Para la protección de aplicaciones sin inscripción de dispositivos, no es necesario que el usuario inscriba el dispositivo mediante la aplicación Portal de empresa.

Aplicaciones de ejemplo

Aplicaciones de ejemplo que resaltan la funcionalidad MAM en Xamarin.Android y Xamarin. Forms aplicaciones están disponibles en GitHub.

Soporte técnico

Si su organización es un cliente Intune existente, trabaje con su representante de soporte técnico de Microsoft para abrir una incidencia de soporte técnico y crear un problema en la página problemas de GitHub. Le ayudaremos tan pronto como podamos.