Share via


Liaisons Xamarin du SDK d’application Microsoft Intune

Importante

Xamarin. Forms a évolué en interface utilisateur d’application multiplateforme .NET (MAUI). Les projets Xamarin existants doivent être migrés vers .NET MAUI. Pour plus d’informations sur la mise à niveau de projets Xamarin vers .NET, consultez la documentation Mettre à niveau de Xamarin vers .NET & .NET MAUI .

La prise en charge de Xamarin a pris fin le 1er mai 2024 pour tous les sdk Xamarin, y compris Xamarin. liaisons Xamarin du SDK d’application Forms et Intune. Pour Intune prise en charge sur les plateformes Android et iOS, consultez Intune SDK d’application pour .NET MAUI - Androidand Microsoft Intune App SDK for MAUI.iOS.

Vue d’ensemble

Les liaisons Xamarin du SDK d’application Intune activent Intune stratégie de protection des applications dans les applications iOS et Android créées avec Xamarin. Les liaisons permettent aux développeurs d’intégrer facilement Intune fonctionnalités de protection des applications dans leur application basée sur Xamarin.

Les liaisons Xamarin du SDK d’application Microsoft Intune vous permettent d’incorporer Intune stratégies de protection des applications (également appelées stratégies APP ou GAM) dans vos applications développées avec Xamarin. Une application compatible GAM est une application intégrée au KIT de développement logiciel (SDK) Intune App. Les administrateurs informatiques peuvent déployer des stratégies de protection des applications sur votre application mobile quand Intune gère activement l’application.

Qu’est-ce qui est pris en charge ?

Machines de développement

  • Windows (Visual Studio version 15.7+)
  • macOS

Plateformes d’applications mobiles

  • Android
  • iOS

Intune scénarios de gestion des applications mobiles

  • Intune GAM
  • Intune appareils inscrits à mdm
  • Appareils inscrits auprès d’EMM tiers

Les applications Xamarin créées avec les liaisons Xamarin du SDK d’application Intune peuvent désormais recevoir des stratégies de protection des applications Intune sur les appareils inscrits à la gestion des appareils mobiles (GPM) Intune et sur les appareils non inscrits.

Configuration requise

Passez en revue les termes du contrat de licence. Imprimez et conservez une copie des termes du contrat de licence pour vos enregistrements. En téléchargeant et en utilisant les liaisons Xamarin du SDK d’application Intune, vous acceptez ces termes du contrat de licence. Si vous ne les acceptez pas, n’utilisez pas le logiciel.

Le SDK Intune s’appuie sur la bibliothèque d’authentification Microsoft (MSAL) pour ses scénarios d’authentification et de lancement conditionnel, qui nécessitent la configuration des applications avec Microsoft Entra ID.

Si votre application est déjà configurée pour utiliser MSAL et dispose de son propre ID client personnalisé utilisé pour s’authentifier auprès de Microsoft Entra ID, vérifiez que les étapes permettant d’accorder à votre application Xamarin des autorisations sur le service gestion des applications mobiles (GAM) Intune sont suivies. Suivez les instructions de la section « Accorder à votre application l’accès au service de gestion des applications mobiles Intune » du guide de prise en main du Kit de développement logiciel (SDK) Intune.

Aspects relatifs à la sécurité

Pour empêcher les attaques potentielles d’usurpation d’identité, de divulgation d’informations et d’élévation de privilèges :

Activation Intune stratégies de protection des applications dans votre application mobile iOS

Importante

Intune publie régulièrement des mises à jour du Kit de développement logiciel (SDK) Intune App. Régulièrement case activée les liaisons Xamarin du SDK d’application Intune pour les mises à jour et les incorporer dans votre cycle de publication de développement logiciel pour vous assurer que vos applications prennent en charge les derniers paramètres de stratégie de protection des applications.

  1. Ajoutez microsoft.Intune. MAM. Package NuGet Xamarin.iOS dans votre projet Xamarin.iOS.

  2. Suivez les étapes générales requises pour intégrer le SDK d’application Intune dans une application mobile iOS. Vous pouvez commencer par l’étape 3 des instructions d’intégration du Guide du Kit de développement logiciel (SDK) d’application Intune pour les développeurs iOS. Vous pouvez ignorer la dernière étape de cette section d’exécution d’IntuneMAMConfigurator, car cet outil est inclus dans Microsoft. Intune. MAM. Le package Xamarin.iOS et sera exécuté automatiquement au moment de la génération. Important : L’activation du partage keychain pour une application est légèrement différente dans Visual Studio de Xcode. Ouvrez la liste des droits de l’application et vérifiez que l’option « Activer le trousseau » est activée et que les groupes de partage keychain appropriés sont ajoutés dans cette section. Ensuite, vérifiez que la liste plist des droits est spécifiée dans le champ « Droits personnalisés » des options « Signature de bundle iOS » du projet pour toutes les combinaisons configuration/plateforme appropriées.

  3. Une fois que les liaisons sont ajoutées et que l’application est correctement configurée, votre application peut commencer à utiliser les API du SDK Intune. Pour ce faire, vous devez inclure l’espace de noms suivant :

    using Microsoft.Intune.MAM;
    
  4. Pour commencer à recevoir des stratégies de protection des applications, votre application doit s’inscrire au service GAM Intune. Si votre application n’utilise pas la bibliothèque d’authentification Microsoft (MSAL) pour authentifier les utilisateurs et que vous souhaitez que le SDK Intune gère l’authentification, votre application doit fournir l’UPN de l’utilisateur à la méthode LoginAndEnrollAccount d’IntuneMAMEnrollmentManager :

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

    Les applications peuvent transmettre null si l’UPN de l’utilisateur est inconnu au moment de l’appel. Dans ce cas, les utilisateurs sont invités à entrer leur adresse e-mail et leur mot de passe.

    Si votre application utilise déjà MSAL pour authentifier les utilisateurs, vous pouvez configurer une expérience d’authentification unique (SSO) entre votre application et le SDK Intune. Tout d’abord, vous devez remplacer les paramètres de Microsoft Entra par défaut utilisés par le SDK Intune par ceux de votre application. Vous pouvez le faire via le dictionnaire IntuneMAMSettings dans le fichier Info.plist de l’application, comme indiqué dans le Guide du sdk d’application Intune pour les développeurs iOS, ou vous pouvez le faire dans le code via les propriétés de remplacement Microsoft Entra ID de la classe IntuneMAMSettings. L’approche Info.plist est recommandée pour les applications dont les paramètres MSAL sont statiques, tandis que les propriétés de remplacement sont recommandées pour les applications qui déterminent ces valeurs au moment de l’exécution. Une fois tous les paramètres d’authentification unique configurés, votre application doit fournir l’UPN de l’utilisateur à la méthode RegisterAndEnrollmentAccount d’IntuneMAMEnrollmentManager après s’être authentifiée :

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Les applications peuvent déterminer le résultat d’une tentative d’inscription en implémentant la méthode EnrollmentRequestWithStatus dans une sous-classe d’IntuneMAMEnrollmentDelegate et en définissant la propriété Delegate d’IntuneMAMEnrollmentManager sur une instance de cette classe.

    Une fois l’inscription réussie, les applications peuvent déterminer l’UPN du compte inscrit (s’il était inconnu auparavant) en interrogeant la propriété suivante :

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Exemples d’applications

Des exemples d’applications mettant en évidence la fonctionnalité GAM dans les applications Xamarin.iOS sont disponibles sur GitHub.

Remarque

Il n’existe aucun remapper pour iOS/iPadOS. Intégration dans un Xamarin. Forms’application doit être identique à celle d’un projet Xamarin.iOS standard.

Activation Intune stratégies de protection des applications dans votre application mobile Android

  1. Ajoutez microsoft.Intune. MAM. Package NuGet Xamarin.Android dans votre projet Xamarin.Android.
    1. Pour un Xamarin. Forms’application, ajoutez microsoft.Intune. MAM. Le package NuGet Remapper.Tasks dans votre projet Xamarin.Android également.
  2. Suivez les étapes générales requises pour intégrer le SDK Intune App dans une application mobile Android tout en vous référant à ce document pour plus d’informations.

Intégration de Xamarin.Android

Vous trouverez une vue d’ensemble complète de l’intégration du KIT de développement logiciel (SDK) d’application Intune dans le guide Microsoft Intune du SDK d’application pour les développeurs Android. À mesure que vous lisez le guide et que vous intégrez le SDK d’application Intune à votre application Xamarin, les sections suivantes sont destinées à mettre en évidence les différences entre l’implémentation d’une application Android native développée en Java et une application Xamarin développée en C#. Ces sections doivent être traitées comme des sections supplémentaires et ne peuvent pas remplacer la lecture du guide dans son intégralité.

Remapper

À compter de la version 1.4428.1, le Microsoft.Intune.MAM.Remapper package peut être ajouté à une application Xamarin.Android en tant qu’outils de génération pour effectuer les remplacements de la classe, de la méthode et des services système MAM. Si le remapper est inclus, les parties de remplacement mam équivalentes des sections Méthodes renommées et Application GAM sont automatiquement exécutées lors de la génération de l’application.

Pour exclure une classe de l’ification GAM par remapper, la propriété suivante peut être ajoutée dans votre fichier de projet .csproj .

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

Remarque

Remapper empêche actuellement le débogage dans les applications Xamarin.Android. L’intégration manuelle est recommandée pour déboguer votre application.

Méthodes renommées

Dans de nombreux cas, une méthode disponible dans la classe Android a été marquée comme finale dans la classe de remplacement MAM. Dans ce cas, la classe de remplacement MAM fournit une méthode nommée de même nom (suffixe avec MAM) que vous devez remplacer à la place. Par exemple, en dérivant de MAMActivity, au lieu de remplacer OnCreate() et d’appeler base.OnCreate(), Activity doit remplacer OnMAMCreate() et appeler base.OnMAMCreate().

Application GAM

Votre application doit définir une Android.App.Application classe. Si vous intégrez manuellement MAM, il doit hériter de MAMApplication. Assurez-vous que votre sous-classe est correctement décorée avec l’attribut [Application] et remplace le (IntPtr, JniHandleOwnership) constructeur.

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

Remarque

Un problème avec les liaisons MAM Xamarin peut entraîner le blocage de l’application lorsqu’elle est déployée en mode Débogage. Pour contourner ce problème, l’attribut Debuggable=false doit être ajouté à la Application classe et l’indicateur android:debuggable="true" doit être supprimé du manifeste s’il a été défini manuellement.

Activer les fonctionnalités qui nécessitent la participation de l’application

Exemple : Déterminer si le code confidentiel est requis pour l’application

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Exemple : Déterminer l’utilisateur Intune principal

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

Exemple : déterminer si l’enregistrement sur un appareil ou un stockage cloud est autorisé

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

S’inscrire aux notifications à partir du KIT de développement logiciel (SDK)

Votre application doit s’inscrire aux notifications à partir du KIT de développement logiciel (SDK) en créant un MAMNotificationReceiver et en l’inscrivant auprès MAMNotificationReceiverRegistryde . Pour ce faire, fournissez le récepteur et le type de notification souhaité dans App.OnMAMCreate, comme l’illustre l’exemple ci-dessous :

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);
    }
    ...

Gestionnaire d’inscription mam

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

Xamarin. intégration Forms

Pour Xamarin.Forms les applications, le Microsoft.Intune.MAM.Remapper package effectue automatiquement le remplacement des classes MAM en injectant des MAM classes dans la hiérarchie de classes couramment utilisées Xamarin.Forms .

Remarque

The Xamarin. Forms intégration doit être effectuée en plus de l’intégration Xamarin.Android décrite ci-dessus. Le Remapper se comporte différemment pour Xamarin. Forms les applications, de sorte que les remplacements manuels mam doivent toujours être effectués.

Une fois remapper ajouté à votre projet, vous devez effectuer les remplacements équivalents MAM. Par exemple, FormsAppCompatActivity et FormsApplicationActivity peuvent continuer à être utilisés dans votre application, les remplacements OnCreate fournis à et OnResume sont remplacés par les équivalents OnMAMCreate MAM et OnMAMResume respectivement.

    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 les remplacements ne sont pas effectués, vous pouvez rencontrer les erreurs de compilation suivantes jusqu’à ce que vous procédiez aux remplacements :

  • Erreur du compilateur CS0239. Cette erreur est couramment affichée sous cette forme 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Cela est normal, car lorsque remapper modifie l’héritage des classes Xamarin, certaines fonctions sont effectuées sealed et une nouvelle variante GAM est ajoutée à remplacer à la place.
  • Erreur du compilateur CS0507 : cette erreur est généralement affichée sous cette forme 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Lorsque remapper modifie l’héritage de certaines classes Xamarin, certaines fonctions membres sont remplacées par public. Si vous remplacez l’une de ces fonctions, vous devez modifier les modificateurs d’accès pour que ces remplacements le soient public également.

Remarque

Remapper réécrit une dépendance que Visual Studio utilise pour la saisie semi-automatique IntelliSense. Par conséquent, vous devrez peut-être recharger et reconstruire le projet lorsque remapper est ajouté pour qu’IntelliSense reconnaisse correctement les modifications.

Résolution des problèmes

  • Si vous rencontrez un écran blanc vide dans votre application au lancement, vous devrez peut-être forcer les appels de navigation à s’exécuter sur le thread main.
  • Les liaisons Xamarin du SDK Intune ne prennent pas en charge les applications qui utilisent une infrastructure multiplateforme telle que MvvmCross en raison de conflits entre MvvmCross et Intune classes GAM. Bien que certains clients aient pu réussir l’intégration après avoir déplacé leurs applications vers Xamarin simple. Forms, nous ne fournissons pas de conseils ou de plug-ins explicites pour les développeurs d’applications utilisant MvvmCross.

Application Portail d’entreprise

Les liaisons Xamarin du SDK Intune s’appuient sur la présence de l’application Android Portail d'entreprise sur l’appareil pour activer les stratégies de protection des applications. Le Portail d'entreprise récupère les stratégies de protection des applications à partir du service Intune. Lorsque l’application s’initialise, elle charge la stratégie et le code pour appliquer cette stratégie à partir du Portail d'entreprise. L’utilisateur n’a pas besoin d’être connecté.

Remarque

Lorsque l’application Portail d'entreprise n’est pas sur l’appareil Android, une application gérée par Intune se comporte de la même façon qu’une application normale qui ne prend pas en charge Intune stratégies de protection des applications.

Pour la protection des applications sans inscription d’appareil, l’utilisateur n’est pas tenu d’inscrire l’appareil à l’aide de l’application Portail d'entreprise.

Exemples d’applications

Exemples d’applications mettant en évidence les fonctionnalités GAM dans Xamarin.Android et Xamarin. Forms applications sont disponibles sur GitHub.

Support

Si votre organization est un client Intune existant, contactez votre représentant du support Microsoft pour ouvrir un ticket de support et créer un problème sur la page des problèmes GitHub. Nous vous aiderons dès que possible.