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 les liaisons Xamarin.Forms et Xamarin du SDK d’application Intune. Pour la prise en charge d’Intune sur les plateformes Android et iOS, consultez Sdk d’application Intune pour .NET MAUI - Androidet Sdk d’application Microsoft Intune pour MAUI.iOS.
Vue d’ensemble
Les liaisons Xamarin du SDK d’application Intune activent la stratégie de protection des applications Intune dans les applications iOS et Android créées avec Xamarin. Les liaisons permettent aux développeurs d’intégrer facilement des fonctionnalités de protection des applications Intune dans leur application Xamarin.
Les liaisons Xamarin du SDK d’application Microsoft Intune vous permettent d’incorporer des stratégies de protection des applications Intune (é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 SDK d’application Intune. 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
Scénarios de gestion des applications mobiles Intune
- Gestion des applications mobiles Intune
- Appareils inscrits à la gestion des appareils mobiles Intune
- 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 (MDM) 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 l’ID Microsoft Entra.
Si votre application est déjà configurée pour utiliser MSAL et possède son propre ID client personnalisé utilisé pour s’authentifier avec l’ID Microsoft Entra, vérifiez que les étapes pour 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 :
- Vérifiez que le développement d’applications Xamarin est effectué sur un poste de travail sécurisé.
- Vérifiez que les liaisons proviennent d’une source Microsoft valide :
- Profil NuGet du SDK d’application MS Intune
- Référentiel GitHub Xamarin du SDK d’application Intune
- Configurez votre configuration NuGet pour que votre projet approuve les packages NuGet signés et non modifiés. Pour plus d’informations, consultez Installation de packages signés .
- Sécurisez le répertoire de sortie qui contient l’application Xamarin. Envisagez d’utiliser un répertoire au niveau de l’utilisateur pour la sortie.
Activation des stratégies de protection des applications Intune dans votre application mobile iOS
Importante
Intune publie régulièrement des mises à jour du Kit de développement logiciel (SDK) de l’application Intune. Vérifiez régulièrement les liaisons Xamarin du SDK d’application Intune pour les mises à jour et incorporez-les 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.
Ajoutez le package NuGet Microsoft.Intune.MAM.Xamarin.iOS à votre projet Xamarin.iOS.
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 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 le package Microsoft.Intune.MAM.Xamarin.iOS et sera exécuté automatiquement au moment de la génération. Important : L’activation du partage de trousseaux 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 de trousseaux 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.
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;
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 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 info.plist de l’application, comme mentionné dans le Guide du sdk d’application Intune pour le développeur iOS, ou vous pouvez le faire dans le code via les propriétés de remplacement de l’ID Microsoft Entra 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;
Activation des stratégies de protection des applications Intune dans votre application mobile Android
- Ajoutez le package NuGet Microsoft.Intune.MAM.Xamarin.Android à votre projet Xamarin.Android.
- Pour une application Xamarin.Forms, ajoutez également le package NuGet Microsoft.Intune.MAM.Remapper.Tasks à votre projet Xamarin.Android.
- Suivez les étapes générales requises pour intégrer le SDK d’application Intune 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 SDK d’application Intune dans le guide du SDK d’application Microsoft Intune 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 MAMNotificationReceiverRegistry
de . 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>();
Intégration de Xamarin.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
L’intégration de Xamarin.Forms doit être effectuée en plus de l’intégration Xamarin.Android décrite ci-dessus. Le remapper se comporte différemment pour les applications Xamarin.Forms. Par conséquent, 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éessealed
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 parpublic
. Si vous remplacez l’une de ces fonctions, vous devez modifier les modificateurs d’accès pour que ces remplacements le soientpublic
é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 principal.
- 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 les classes GAM MvvmCross et Intune. Bien que certains clients aient pu réussir l’intégration après avoir déplacé leurs applications vers Xamarin.Forms simple, 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 comme une application normale qui ne prend pas en charge les stratégies de protection des applications Intune.
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.
Support
Si votre organisation 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.