Compartir por


Enlaces de Xamarin del SDK de aplicaciones de Microsoft Intune

Importante

Xamarin.Forms ha evolucionado hasta convertirse en 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, incluidos xamarin.forms y enlaces de Xamarin del SDK de aplicaciones de Intune. Para obtener compatibilidad con Intune en plataformas Android e iOS, consulte SDK de aplicaciones de Intune para .NET MAUI: Androidy SDK de aplicaciones de Microsoft Intune para MAUI.iOS.

Información general

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

Los enlaces de Xamarin del SDK de aplicaciones de Microsoft Intune permiten incorporar directivas de protección de aplicaciones de Intune (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 aplicaciones de Intune. Los administradores de TI pueden implementar directivas de protección de aplicaciones en la aplicación móvil cuando Intune administra la aplicación de forma activa.

¿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

  • MAM de Intune
  • Dispositivos inscritos en MDM de Intune
  • 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 de Intune tanto en dispositivos inscritos en la administración de dispositivos móviles (MDM) de Intune 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 el identificador de Microsoft Entra.

Si la aplicación ya está configurada para usar MSAL y tiene su propio identificador de cliente personalizado que se usa para autenticarse con el id. de Microsoft Entra, 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:

  • Asegúrese de que el desarrollo de aplicaciones de Xamarin se realiza en una estación de trabajo segura.
  • Asegúrese de que los enlaces proceden de un origen de Microsoft válido:
  • Configure la configuración de NuGet para que el proyecto confíe en paquetes NuGet firmados y sin modificar. Consulte Instalación de paquetes firmados para obtener más información.
  • Proteja el directorio de salida que contiene la aplicación Xamarin. Considere la posibilidad de usar un directorio de nivel de usuario para la salida.

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

Importante

Intune publica periódicamente las actualizaciones del SDK de aplicaciones de Intune. Compruebe periódicamente los enlaces de Xamarin del SDK de aplicaciones de Intune para obtener actualizaciones e incorpore en el ciclo de lanzamiento 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.

  1. Agregue el paquete NuGet Microsoft.Intune.MAM.Xamarin.iOS al proyecto de Xamarin.iOS.

  2. Siga los pasos generales necesarios para integrar el SDK de aplicaciones de Intune 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 del SDK de aplicaciones de Intune para iOS. Puede omitir el paso final de esa sección de ejecución de IntuneMAMConfigurator, ya que esta herramienta se incluye en el paquete Microsoft.Intune.MAM.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 MAM de Intune. Si la aplicación no usa la Biblioteca de autenticación de Microsoft (MSAL) para autenticar a los 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, tendrá que invalidar la configuración predeterminada de Microsoft Entra 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 del SDK de aplicaciones de Intune para iOS, o bien puede hacerlo en el código a través de las propiedades de invalidación de id. de Microsoft Entra 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;
    

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

  1. Agregue el paquete NuGet Microsoft.Intune.MAM.Xamarin.Android al proyecto de Xamarin.Android.
    1. Para una aplicación de Xamarin.Forms, agregue también el paquete NuGet Microsoft.Intune.MAM.Remapper.Tasks al proyecto de Xamarin.Android.
  2. Siga los pasos generales necesarios para integrar el SDK de aplicaciones de Intune 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 aplicaciones de Intune 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 aplicaciones 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: Determinación del usuario principal de Intune

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>();

Integración de Xamarin.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:

La integración de Xamarin.Forms debe realizarse además de la integración de Xamarin.Android detallada anteriormente. Remapper se comporta de forma diferente para las aplicaciones de Xamarin.Forms, por lo que todavía se deben realizar los reemplazos de MAM manuales.

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 las clases MVVMCross e Intune MAM. Aunque algunos clientes podrían haber tenido éxito con la integración después de mover sus aplicaciones a Xamarin.Forms sin formato, 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 Android del Portal de empresa 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 aplicarla desde el Portal de empresa. No es necesario que el usuario inicie sesión.

Nota:

Cuando la aplicación 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 directivas de protección de aplicaciones de Intune.

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.

Soporte técnico

Si su organización es un cliente de 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.