Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Ce guide est divisé en plusieurs étapes distinctes. Commencez par consulter Planifier l’intégration.
Objectifs de la phase
- Téléchargez le Kit de développement logiciel (SDK) Intune App.
- Découvrez les fichiers inclus dans le Kit de développement logiciel (SDK) Intune App.
- Référencez le KIT de développement logiciel (SDK) Intune App dans votre application.
- Vérifiez que le KIT de développement logiciel (SDK) Intune App est correctement inclus dans votre build.
- Inscrivez de nouveaux comptes pour la gestion MAM après l’authentification auprès de MSAL.
- Pour supprimer des données d’entreprise, annulez l’inscription des comptes lors de la déconnexion
- (Recommandé) Incorporez la connexion MAM dans votre application.
Configuration requise
Vous avez besoin d’un ordinateur macOS, avec Xcode 16.0 ou version ultérieure.
Votre application doit être ciblée pour iOS 16.0 ou version ultérieure.
Passez en revue les termes du contrat de licence Intune App SDK pour iOS. Imprimez et conservez une copie des termes du contrat de licence pour vos enregistrements. En téléchargeant et en utilisant le SDK d’application Intune pour iOS, vous acceptez ces termes du contrat de licence. Si vous ne les acceptez pas, n’utilisez pas le logiciel.
Téléchargez les fichiers du SDK d’application Intune pour iOS sur GitHub.
Qu’est-ce qui se trouve dans le référentiel sdk ?
IntuneMAMSwift.xcframework : framework dynamique du SDK d’application Intune. Il est recommandé de lier cette infrastructure à votre application/extensions pour activer Intune gestion des applications clientes. Toutefois, certains développeurs peuvent préférer les avantages en matière de performances de l’infrastructure statique (IntuneMAMStatic.xcframework).
IntuneMAMStatic.xcframework : framework statique du SDK d’application Intune. Les développeurs peuvent choisir de lier l’infrastructure statique au lieu de l’infrastructure dynamique. Étant donné que le code exécutable d’une infrastructure statique est incorporé directement dans le binaire d’application/d’extension au moment de la génération, l’utilisation de la bibliothèque statique présente des avantages en matière de performances au moment du lancement. Toutefois, si votre application inclut des extensions, la liaison de l’infrastructure statique à l’application et aux extensions entraîne une plus grande taille d’ensemble d’applications. Le code exécutable est incorporé dans chaque fichier binaire d’application/extension. En revanche, lors de l’utilisation de l’infrastructure dynamique, les applications et les extensions peuvent partager le même Intune binaire du SDK, ce qui réduit la taille de l’application.
IntuneMAMSwiftStub.xcframework : framework Swift Stub du SDK d’application Intune. Cette infrastructure est une dépendance obligatoire d’IntuneMAMSwift.xcframework et d’IntuneMAMStatic.xcframework, que les applications/extensions doivent lier.
IntuneMAMConfigurator : outil utilisé pour configurer info.plist de l’application ou de l’extension avec les modifications minimales requises pour la gestion des Intune. Selon les fonctionnalités de votre application ou extension, vous devrez peut-être apporter des modifications manuelles à Info.plist.
libIntuneMAMSwift.xcframework : bibliothèque statique du SDK d’application Intune. Cette variante du kit de développement logiciel (SDK) iOS mam Intune est déconseillée et supprimée dans une prochaine mise à jour. Nous vous recommandons de ne pas lier la bibliothèque statique, mais plutôt de lier votre application/extensions à l’infrastructure dynamique (IntuneMAMSwift.xcframework) ou statique (IntuneMAMStatic.xcframework) mentionnée précédemment.
IntuneMAMResources.bundle : offre groupée de ressources qui contient des ressources sur lesquelles le SDK s’appuie. L’offre groupée de ressources est requise uniquement pour les applications qui intègrent la bibliothèque statique déconseillée (libIntuneMAMSwift.xcframework) et la suppriment dans une prochaine mise à jour.
Fonctionnement du Kit de développement logiciel (SDK) Intune App
L’objectif du SDK d’application Intune pour iOS est d’ajouter des fonctionnalités de gestion aux applications iOS avec des modifications de code minimales. Moins le code change, moins le temps de mise sur le marché est réduit, mais sans affecter la cohérence et la stabilité de votre application mobile.
Flux de processus
Le diagramme suivant fournit le flux de processus du SDK d’application Intune pour iOS :
Créer le KIT de développement logiciel (SDK) dans votre application mobile
Importante
Intune publie régulièrement des mises à jour du Kit de développement logiciel (SDK) Intune App. Vous case activée régulièrement le KIT de développement logiciel (SDK) d’application Intune pour iOS pour les mises à jour et l’intégrer à 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.
Pour activer le Kit de développement logiciel (SDK) Intune App, procédez comme suit :
IntuneMAMSwift.xcframeworkLier ouIntuneMAMStatic.xcframeworkà votre cible : faites glisser le bundle xcframework vers la liste Frameworks, Bibliothèques et Contenu incorporé de la cible du projet. Répétez ces étapes pourIntuneMAMSwiftStub.xcframework. Pour votre application principale, sélectionnez « Incorporer & connexion » dans la colonne « Incorporer » pour les deux xcframeworks ajoutés. Pour toutes les extensions, sélectionnez « Ne pas incorporer ».
Ajoutez ces frameworks iOS au projet :
- MessageUI.framework
- Security.framework
- CoreServices.framework
- SystemConfiguration.framework
- libsqlite3.tbd
- libc++.tbd
- ImageIO.framework
- LocalAuthentication.framework
- AudioToolbox.framework
- QuartzCore.framework
- WebKit.framework
- MetricKit.framework
Activez le partage de trousseau (s’il n’est pas déjà activé) en choisissant Fonctionnalités dans chaque cible de projet et en activant le commutateur Partage de trousseau . Le partage de trousseau est nécessaire pour passer à l’étape suivante.
Remarque
Votre profil d’approvisionnement doit prendre en charge de nouvelles valeurs de partage de trousseau. Les groupes d’accès au trousseau doivent prendre en charge un caractère générique. Vous pouvez case activée cela en ouvrant le fichier .mobileprovision dans un éditeur de texte, en recherchant trousseau-access-groups et en veillant à disposer d’un caractère générique. Par exemple :
<key>keychain-access-groups</key> <array> <string>YOURBUNDLESEEDID.*</string> </array>Après avoir activé le partage de trousseau, suivez les étapes pour créer un groupe d’accès distinct dans lequel le SDK d’application Intune stocke ses données. Vous pouvez créer un groupe d’accès au trousseau à l’aide de l’interface utilisateur ou du fichier de droits. Si vous utilisez l’interface utilisateur pour créer le groupe d’accès au trousseau, veillez à suivre ces étapes :
Si aucun groupe d’accès au trousseau n’est défini pour votre application mobile, ajoutez l’ID de bundle de l’application en tant que premier groupe.
Ajoutez le groupe
com.microsoft.intune.mamde trousseaux partagés à vos groupes d’accès existants. Le SDK d’application Intune utilise ce groupe d’accès pour stocker des données.Ajoutez
com.microsoft.adalcacheà vos groupes d’accès existants.
Remarque
Si vous avez configuré MSAL pour utiliser un groupe d’accès au trousseau personnalisé plutôt que la valeur par défaut de , vous n’avez pas besoin de
com.microsoft.adalcachespécifier ce groupe d’accès au trousseau ici. Au lieu de cela, spécifiez le groupe de trousseaux personnalisé. Vous devez également configurer Intune pour utiliser le même groupe d’accès personnalisé via le paramètre ADALCacheKeychainGroupOverride dans le dictionnaire Info.plist IntuneMAMSettings.Si vous modifiez directement le fichier de droits, au lieu d’utiliser l’interface utilisateur Xcode pour créer les groupes d’accès au trousseau, ajoutez les groupes d’accès au trousseau avec
$(AppIdentifierPrefix)(Xcode gère cela automatiquement). Par exemple :$(AppIdentifierPrefix)com.microsoft.intune.mam$(AppIdentifierPrefix)com.microsoft.adalcache
Remarque
Un fichier de droits est un fichier XML unique à votre application mobile. Il est utilisé pour spécifier des autorisations et des fonctionnalités spéciales dans votre application iOS. Si votre application ne disposait pas auparavant d’un fichier de droits, l’activation du partage de trousseau (étape 3) aurait dû entraîner la génération par Xcode d’un fichier pour votre application. Vérifiez que l’ID de bundle de l’application est la première entrée de la liste.
Incluez chaque protocole auquel votre application passe dans
UIApplication canOpenURLleLSApplicationQueriesSchemestableau du fichier Info.plist de votre application. Pour chaque protocole répertorié dans ce tableau, ajoutez une copie du protocole ajouté avec-intunemamau tableau. Ajoutez également ces valeurs au tableau :http-intunemam, ,https-intunemammicrosoft-edge-http-intunemam,microsoft-edge-https-intunemam,smart-ns,zips,lacoonsecurity,skycurelookoutwork-asewanderabetteractiveshield, ,smsec,mvisionmobile,scmxet .intunemam-mtdSi votre application utilise le protocole mailto :, ajoutezms-outlook-intunemamégalement au tableau. Enregistrez vos modifications avant de passer à l’étape suivante.Si l’application manque d’espace dans sa liste LSApplicationQueriesSchemes, elle peut supprimer les schémas « -intunemam » pour les applications qui sont connues pour implémenter également le sdk gam Intune. Lorsque l’application supprime « scheme-intunemam » de la liste LSApplicationQueriesSchemes,
canOpenURL()peut retourner des réponses incorrectes pour ces schémas. Pour résoudre ce problème, appelez[IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES]plutôt ce schéma. Cet appel retourneNOsi la stratégie bloque l’ouverture de l’URL. Si elle retourne true, l’application peut appelercanOpenURL()avec une identité vide pour déterminer si l’URL peut être ouverte. Par exemple :BOOL __block canOpen = NO; if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES]) { [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{ canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp]; }]; }Si votre application n’utilise pas déjà FaceID, vérifiez que la clé NSFaceIDUsageDescription Info.plist est configurée avec un message par défaut. Cette étape est nécessaire pour qu’iOS puisse indiquer à l’utilisateur comment l’application envisage d’utiliser FaceID. Un paramètre de stratégie de protection des applications Intune permet d’utiliser FaceID comme méthode d’accès aux applications lorsqu’il est configuré par l’administrateur informatique.
Utilisez l’outil IntuneMAMConfigurator inclus dans le dépôt sdk pour terminer la configuration d’Info.plist de votre application. L’outil a trois paramètres :
Propriété Comment l’utiliser -Je <Path to the input plist>- e <Path to the entitlements file>- o (Facultatif) <Path to the output plist>Si le paramètre « -o » n’est pas spécifié, le fichier d’entrée est modifié sur place. L’outil est idempotent et doit être réexécuté chaque fois que vous apportez des modifications au fichier Info.plist ou aux droits d’utilisation de l’application. Vous devez également télécharger et exécuter la dernière version de l’outil lors de la mise à jour du Kit de développement logiciel (SDK) Intune, au cas où les exigences de configuration d’Info.plist changent dans la dernière version.
Remarque
Si vous disposez d’une application SwiftUI, vérifiez que UISceneConfigurations le dictionnaire dans le UIApplicationSceneManifest fichier Info.pist n’est pas manquant ou vide. Si vous ne configurez pas ce paramètre, le kit de développement logiciel (SDK) Intune peut protéger votre application en dépit de l’application réussie des stratégies de protection des applications.
Si vous n’avez pas de valeur spécifique définie pour , UISceneConfigurations vous pouvez utiliser cette configuration par défaut :
<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>
Paramètres et fonctionnalités de build Xcode
L’application doit avoir à la fois « Strip Swift Symbols » (STRIP_SWIFT_SYMBOLS) et « Enable Bitcode » (ENABLE_BITCODE) définis sur NON dans les paramètres de build Xcode. Si votre application inclut la fonctionnalité « Sécurité renforcée » disponible dans Xcode 26+, vous DEVEZ désactiver les options « Authentifier les pointeurs » et « Activer la mémoire de plateforme en lecture seule ».
Intégration d’une extension de fournisseur de fichiers
Les extensions de fournisseur de fichiers ont certaines exigences en mémoire qui peuvent compliquer l’intégration du Kit de développement logiciel (SDK) complet. Pour faciliter la tâche, il existe une bibliothèque libIntuneMAMSwiftFileProvider.xcframeworkstatique , qui est une version simplifiée du Kit de développement logiciel (SDK) spécifiquement pour les extensions de fournisseur de fichiers. Notez que cette bibliothèque est destinée à la partie non-interface utilisateur de l’extension FileProvider. Vous devez intégrer le Kit de développement logiciel (SDK) complet dans l’extension d’interface utilisateur du fournisseur de fichiers.
Pour intégrer l’une de ces bibliothèques à votre extension de fournisseur de fichiers, suivez les étapes d’intégration du Kit de développement logiciel (SDK) en tant que bibliothèque statique. Veillez à inclure le ContainingAppBundleId paramètre.
Intégration d’une extension de fournisseur de fichiers non répliquée
Votre application utilise un fournisseur de fichiers non répliqué si elle implémente le protocole NSFileProviderExtension. Tous les fournisseurs de fichiers créés avant iOS 16.0 ne sont pas répliqués.
Dans - startProvidingItemAtURL :completionHandler : case activée si vous devez chiffrer des fichiers à l’aide de [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]. Utilisez l’API encryptFile :forAccountId : dans IntuneMAMFileProtectionManager pour le chiffrement de fichier réel. Partagez également une copie du fichier lorsque le chiffrement est requis, car vous ne souhaitez pas stocker une copie chiffrée du fichier dans votre stockage cloud.
Dans - importDocumentAtURL :toParentItemIdentifier :completionHandler : case activée si le fichier est chiffré à l’aide de l’API isFileEncrytped : dans IntuneMAMFileProtectionManager. Si c’est le cas, déchiffrez-le à l’aide de l’API decryptFile :toCopyPath : d’IntuneMAMFileProtectionManager. Dans les applications à plusieurs identités, case activée également à l’API canReceiveSharedFile : dans l’IntuneMAMPolicy du propriétaire de destination pour déterminer si le propriétaire peut recevoir le fichier.
Intégration d’une extension de fournisseur de fichiers répliqué
Votre application utilise un fournisseur de fichiers répliqué si elle implémente le protocole NSFileProviderReplicatedExtension (ajouté dans iOS 16.0).
Dans - fetchContentsForItemWithIdentifier :version :request :completionHandler : case activée si vous devez chiffrer des fichiers à l’aide de [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]. Utilisez l’API encryptFile :forAccountId : dans IntuneMAMFileProtectionManager pour le chiffrement de fichier réel. Partagez une copie du fichier lorsque le chiffrement est requis, car vous ne souhaitez pas stocker une copie chiffrée du fichier dans votre stockage cloud.
Dans - createItemBasedOnTemplate :fields :contents :options :request :completionHandler : case activée si le fichier est chiffré à l’aide de l’API isFileEncrypted : dans IntuneMAMFileProtectionManager. Si c’est le cas, déchiffrez-le à l’aide de l’API decryptFile :toCopyPath : d’IntuneMAMFileProtectionManager. Dans les applications à plusieurs identités, case activée également à l’API canReceiveSharedFile : dans l’IntuneMAMPolicy du propriétaire de destination pour déterminer si le propriétaire peut recevoir le fichier.
Partout où le fournisseur de fichiers répliqué crée et passe un NSFileProviderItem au système, appelez l’API protectFileProviderItem :forAccountId : d’IntuneMAMFileProtectionManager avec l’identité du propriétaire de l’élément. Selon l’emplacement où l’objet NSFileProviderItem est créé et conservé dans votre extension, vous devrez peut-être le faire dans chacune des méthodes de protocole de NSFileProviderReplicatedExtension.
Configurer les paramètres du KIT de développement logiciel (SDK) de l’application Intune
Vous pouvez utiliser le dictionnaire IntuneMAMSettings dans le fichier Info.plist de l’application pour configurer et configurer le SDK d’application Intune. Si le dictionnaire IntuneMAMSettings n’est pas visible dans votre fichier Info.plist, vous devez le créer.
Sous le dictionnaire IntuneMAMSettings, vous pouvez définir les paramètres pris en charge suivants pour configurer le Kit de développement logiciel (SDK) Intune App.
Les sections précédentes couvrent certains de ces paramètres, et d’autres ne s’appliquent pas à toutes les applications.
| Setting | Type | Définition | Obligatoire ? |
|---|---|---|---|
| ADALClientId | String | Identificateur client Microsoft Entra de l’application. | Obligatoire pour toutes les applications. |
| ADALAuthority | String | Autorité de Microsoft Entra de l’application en cours d’utilisation. Vous devez utiliser votre propre environnement où Microsoft Entra comptes sont configurés. Pour plus d’informations, consultez Options de configuration d’application. | Obligatoire si l’application est une application métier personnalisée conçue pour une utilisation au sein d’un seul locataire organization/Microsoft Entra. Si cette valeur est absente, l’autorité de Microsoft Entra commune est utilisée (prise en charge uniquement pour les applications multilocataires). |
| ADALRedirectUri | String | URI de redirection Microsoft Entra de l’application. | ADALRedirectUri ou ADALRedirectScheme est requis pour toutes les applications. |
| ADALRedirectScheme | String | Schéma de redirection Microsoft Entra ID de l’application. Cela peut être utilisé à la place d’ADALRedirectUri si l’URI de redirection de l’application est au format scheme://bundle_id. |
ADALRedirectUri ou ADALRedirectScheme est requis pour toutes les applications. |
| ADALLogOverrideDisabled | Booléen | Spécifie si le Kit de développement logiciel (SDK) achemine tous les journaux MSAL (y compris les appels MSAL de l’application, le cas échéant) vers son propre fichier journal. La valeur par défaut est NO. Définissez sur OUI si l’application définit son propre rappel de journal MSAL. | Facultatif. |
| ADALCacheKeychainGroupOverride | String | Spécifie le groupe de trousseaux à utiliser pour le cache MSAL, au lieu de "com.microsoft.adalcache". Le système le préfixe automatiquement au moment de l’exécution. |
Facultatif. |
| AppGroupIdentifiers | Tableau de chaînes | Tableau de groupes d’applications de la section des com.apple.security.application-groups droits d’utilisation de l’application. |
Obligatoire si l’application utilise des groupes d’applications. |
| ContainingAppBundleId | String | Spécifie l’ID de bundle de l’application contenant l’extension. | Obligatoire pour les extensions iOS. |
| AutoEnrollOnLaunch | Booléen | Spécifie si l’application doit tenter de s’inscrire automatiquement au lancement si une identité managée existante est détectée et qu’elle ne l’a pas encore fait. La valeur par défaut est NO. Note: Si aucune identité managée n’est trouvée ou qu’aucun jeton valide n’est disponible dans le cache MSAL, l’inscription échoue en mode silencieux, sauf si MAMPolicyRequired la valeur est OUI. |
Facultatif. La valeur par défaut est NO. |
| MAMPolicyRequired | Booléen | Spécifie si le démarrage de l’application n’est pas bloqué si elle n’a pas de stratégie de protection des applications Intune. La valeur par défaut est NO. Note: Les applications ne peuvent pas être envoyées au App Store avec cette valeur définie sur OUI. Lorsque vous la définissez sur OUI, AutoEnrollOnLaunch doit également avoir la valeur OUI. |
Facultatif. La valeur par défaut est NO. |
| MAMPolicyWarnAbsent | Booléen | Spécifie si l’application avertit l’utilisateur lors du lancement si aucune stratégie de protection des applications Intune n’est présente. Note: Les utilisateurs peuvent toujours continuer après avoir ignoré l’avertissement. |
Facultatif. La valeur par défaut est NO. |
| MultiIdentity | Booléen | Spécifie si l’application prend en charge les identités multiples. Pour plus d’informations, consultez la documentation sur les identités multiples. | Facultatif. La valeur par défaut est NO. |
| MultiIdentityCancelDisabled | Booléen | Désactive le bouton Annuler sur Intune écrans d’interface utilisateur de lancement conditionnel dans les applications multi-identités. Si ce n’est pas défini sur OUI, l’application doit gérer le code d’échec IntuneMAMSwitchIdentityResultCanceled . Consultez Changer d’identité. |
Facultatif. La valeur par défaut est NO. |
| SafariViewControllerBlockedOverride | Booléen | Désactive les hooks SafariViewController de Intune pour activer l’authentification MSAL via SFSafariViewController, SFAuthSession ou ASWebAuthSession. Note: Un bouton d’activité configuré s’affiche uniquement si l’affichage n’est pas géré et que cette option est définie sur OUI. |
Facultatif. La valeur par défaut est NO. Avertissement: Peut entraîner une fuite de données si elle est utilisée de manière incorrecte. |
| SplashIconFile SplashIconFile~ipad |
String | Spécifie le fichier d’icône de démarrage (démarrage) Intune. | Facultatif. |
| SplashDuration | Nombre | Durée minimale en secondes d’affichage de l’écran de démarrage Intune. La valeur par défaut est 1.5. | Facultatif. |
| BackgroundColor | String | Spécifie la couleur d’arrière-plan des composants d’interface utilisateur du SDK Intune. Accepte #XXXXXX ou une valeur hexadécimale sans signe dièse. |
Facultatif. La couleur d’arrière-plan système est définie par défaut. |
| ForegroundColor | String | Spécifie la couleur de premier plan/texte pour les composants de l’interface utilisateur. Accepte #XXXXXX ou hexadécimal sans signe dièse. |
Facultatif. La valeur par défaut est la couleur de l’étiquette système. |
| AccentColor | String | Spécifie la couleur d’accentuation des composants de l’interface utilisateur (boutons, mise en surbrillance de la zone de code confidentiel). Accepte #XXXXXX ou hexadécimal sans signe dièse. |
Facultatif. La valeur par défaut est bleu système. |
| SecondaryBackgroundColor | String | Spécifie la couleur d’arrière-plan secondaire pour les écrans MTD. Accepte #XXXXXX ou hexadécimal sans signe dièse. |
Facultatif. La valeur par défaut est blanc. |
| SecondaryForegroundColor | String | Spécifie la couleur de premier plan secondaire pour les écrans MTD. Accepte #XXXXXX ou hexadécimal sans signe dièse. |
Facultatif. La valeur par défaut est gris. |
| SupportsDarkMode | Booléen | Spécifie si les couleurs de l’interface utilisateur suivent le mode sombre système lorsque les couleurs explicites ne sont pas définies. | Facultatif. La valeur par défaut est OUI. |
| MAMTelemetryDisabled | Booléen | Spécifie si les données de télémétrie sont envoyées au back-end. | Facultatif. La valeur par défaut est NO. |
| MAMTelemetryUsePPE | Booléen | Envoie des données de télémétrie au back-end PPE. Utile pour tester les applications afin que les données ne se mélangent pas avec les données client. | Facultatif. La valeur par défaut est NO. |
| MaxFileProtectionLevel | String | Spécifie la valeur maximale NSFileProtectionType prise en charge par l’application. Remplace la stratégie si le service envoie un niveau supérieur.Valeurs possibles : NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.Remarquer: Avec NSFileProtectionComplete, l’application perd l’accès aux fichiers protégés environ 10 secondes après le verrouillage de l’appareil, ce qui peut interrompre des composants tels que les bases de données locales. Les applications avec l’interface utilisateur de l’écran de verrouillage doivent utiliser NSFileProtectionCompleteUntilFirstUserAuthentication. |
Facultatif. La valeur par défaut est NSFileProtectionComplete. |
| OpenInActionExtension | Booléen | Définissez sur OUI pour les extensions Ouvrir en action. Consultez Partage de données via UIActivityViewController. | Facultatif. |
| TreatAllWebViewsAsUnmanaged | Booléen | Traite tous les WebViews comme non gérés pour l’application couper/copier/coller. Consultez Affichage du contenu web. | Facultatif. La valeur par défaut est NO. |
| WebViewHandledURLSchemes | Tableau de chaînes | Schémas d’URL gérés par le WebView de l’application. | Obligatoire si votre WebView gère les liens ou la navigation JavaScript. |
| DocumentBrowserFileCachePath | String | Si vous utilisez UIDocumentBrowserViewController, définissez un chemin d’accès (relatif au répertoire de base de l’application) pour les fichiers managés déchiffrés. |
Facultatif. La valeur par défaut est /Documents/. |
| VerboseLoggingEnabled | Booléen | Active la journalisation détaillée. | Facultatif. La valeur par défaut est NO. |
| FinishLaunchingAtStartup | Booléen | Obligatoire lors de l’utilisation [BGTaskScheduler registerForTaskWithIdentifier:]de ; doit être OUI. |
Facultatif. La valeur par défaut est NO. |
| ValuesToScrubFromLogging | Tableau de chaînes | Valeurs de configuration d’application qui doivent être supprimées des journaux. Peut également être défini via valuesToScrubFromLogging sur IntuneMAMSettings. |
Facultatif. |
Recevoir la stratégie de protection des applications
Vue d’ensemble
Pour recevoir Intune stratégie de protection des applications, les applications doivent lancer une demande d’inscription auprès du service GAM Intune. Les applications peuvent être configurées dans le centre d’administration Intune pour recevoir la stratégie de protection des applications avec ou sans inscription d’appareil. La gestion des applications mobiles (MAM) permet aux applications d’être gérées par Intune sans que l’appareil ait besoin d’être inscrit dans Intune gestion des appareils mobiles (GPM). Dans les deux cas, l’inscription auprès du service GAM Intune est nécessaire pour recevoir la stratégie.
Importante
Le SDK d’application Intune pour iOS utilise des clés de chiffrement 256 bits lorsque le chiffrement est activé par les stratégies de protection des applications. Toutes les applications doivent avoir une version actuelle du KIT de développement logiciel (SDK) pour autoriser le partage de données protégées.
Applications qui utilisent déjà ADAL ou MSAL
Remarque
Azure AD Authentication Library (ADAL) et Azure ad API Graph sont déconseillés. Pour plus d’informations, consultez Mettre à jour vos applications afin d’utiliser la bibliothèque d’authentification Microsoft (MSAL) et l’API Microsoft Graph.
Les applications qui utilisent déjà MSAL doivent appeler la registerAndEnrollAccountId méthode sur le IntuneMAMEnrollmentManager instance une fois l’utilisateur authentifié :
/*
* 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;
En cas de connexion réussie, MSAL renvoie le résultat dans l’objet MSALResult. Utilisez tenantProfile.identifier dans MSALResult comme paramètre accountId pour l’API.
En appelant la registerAndEnrollAccountId méthode , le Kit de développement logiciel (SDK) inscrit le compte d’utilisateur et tente d’inscrire l’application pour le compte de ce compte. Si l’inscription échoue pour une raison quelconque, le SDK retente automatiquement l’inscription 24 heures plus tard. À des fins de débogage, l’application peut recevoir des notifications, via un délégué, sur les résultats des demandes d’inscription.
Une fois cette API appelée, l’application peut continuer à fonctionner normalement. Si l’inscription réussit, le Kit de développement logiciel (SDK) informe l’utilisateur qu’un redémarrage de l’application est nécessaire. À ce moment-là, l’utilisateur peut redémarrer immédiatement l’application.
[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];
Applications qui n’utilisent pas ADAL ou MSAL
Les applications qui ne connectent pas l’utilisateur à l’aide d’ADAL ou MSAL peuvent toujours recevoir la stratégie de protection des applications du service GAM Intune en appelant l’API pour que le SDK gère cette authentification. Les applications doivent utiliser cette technique lorsqu’elles n’ont pas authentifié un utilisateur avec Microsoft Entra ID, mais qu’elles doivent quand même récupérer la stratégie de protection des applications pour protéger les données. Par exemple, si un autre service d’authentification est utilisé pour la connexion à l’application, ou si l’application ne prend pas du tout en charge la connexion. Pour ce faire, l’application peut appeler la loginAndEnrollAccount méthode sur le IntuneMAMEnrollmentManager instance :
/**
* 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;
En appelant cette méthode, le Kit de développement logiciel (SDK) invite l’utilisateur à fournir des informations d’identification si aucun jeton existant n’est trouvé. Le Kit de développement logiciel (SDK) tente ensuite d’inscrire l’application auprès du service GAM Intune pour le compte d’utilisateur fourni. La méthode peut être appelée avec « nil » comme identité. Dans ce cas, le Kit de développement logiciel (SDK) s’inscrit auprès de l’utilisateur managé existant sur l’appareil (si GPM) ou invite l’utilisateur à entrer un nom d’utilisateur si aucun utilisateur existant n’est trouvé.
Si l’inscription échoue, l’application doit envisager d’appeler à nouveau cette API à un moment ultérieur, en fonction des détails de l’échec. L’application peut recevoir des notifications, via un délégué, sur les résultats de toutes les demandes d’inscription.
Une fois cette API appelée, l’application peut continuer à fonctionner normalement. Si l’inscription réussit, le Kit de développement logiciel (SDK) informe l’utilisateur qu’un redémarrage de l’application est nécessaire.
Une fois l’application gérée, la valeur de l’ID d’objet Microsoft Entra doit être interrogée à l’aide enrolledAccountId de dans .IntuneMAMEnrollmentManager Utilisez-la pour toutes les API du KIT de développement logiciel (SDK) GAM que l’application utilise pour ce compte inscrit.
Exemple :
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];
Laisser Intune gérer l’authentification et l’inscription au lancement
Si vous souhaitez que le SDK Intune gère toute l’authentification avec ADAL/MSAL et l’inscription avant la fin du lancement de votre application, et que votre application nécessite toujours des stratégies de protection des applications, vous n’avez pas besoin d’utiliser loginAndEnrollAccount l’API. Vous pouvez définir les paramètres suivants sur OUI dans le dictionnaire IntuneMAMSettings dans le fichier Info.plist de l’application.
| Setting | Type | Définition |
|---|---|---|
| AutoEnrollOnLaunch | Booléen | Spécifie si l’application doit tenter de s’inscrire automatiquement au lancement si une identité managée existante est détectée et qu’elle ne l’a pas encore fait. La valeur par défaut est NO. Note: Si aucune identité managée n’est trouvée ou qu’aucun jeton valide pour l’identité n’est disponible dans le cache ADAL/MSAL, la tentative d’inscription échoue en mode silencieux sans demander d’informations d’identification, sauf si l’application définit MAMPolicyRequired également sur OUI. |
| MAMPolicyRequired | Booléen | Spécifie si le démarrage de l’application est bloqué si l’application n’a pas de stratégie de protection des applications Intune. La valeur par défaut est NO. Note: Les applications ne peuvent pas être envoyées au App Store avec MAMPolicyRequired défini sur OUI. Lorsque vous définissez MAMPolicyRequiredsur OUI, AutoEnrollOnLaunch doit également être défini sur OUI. |
Si vous choisissez cette option pour votre application, vous n’avez pas à gérer le redémarrage de votre application après l’inscription.
Désinscrire les comptes d’utilisateur
Avant qu’un utilisateur ne soit déconnecté d’une application, l’application doit annuler l’inscription de l’utilisateur à partir du KIT de développement logiciel (SDK). Ce processus garantit :
Les nouvelles tentatives d’inscription ne se produisent plus pour le compte de l’utilisateur.
Protection d'applications stratégie est supprimée.
Les données d’entreprise sont supprimées si l’application lance une réinitialisation sélective (facultatif).
Avant que l’utilisateur ne soit déconnecté, l’application doit appeler la méthode suivante sur le IntuneMAMEnrollmentManager instance :
/*
* 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;
Cette méthode doit être appelée avant que les jetons Microsoft Entra du compte d’utilisateur soient supprimés. Le Kit de développement logiciel (SDK) a besoin des jetons Microsoft Entra du compte d’utilisateur pour effectuer des requêtes spécifiques au service GAM Intune pour le compte de l’utilisateur.
Si l’application supprime les données d’entreprise de l’utilisateur par elle-même, l’indicateur doWipe peut être défini sur false. Dans le cas contraire, le SDK peut lancer une réinitialisation sélective de l’application. Cette action entraîne un appel au délégué de réinitialisation sélective de l’application.
Exemple :
[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];
Notifications d’état, de résultat et de débogage
L’application peut recevoir des notifications de status, de résultat et de débogage concernant les requêtes suivantes adressées au service GAM Intune :
- Demandes d’inscription
- Demandes de mise à jour de stratégie
- Demandes de désinscription
Les notifications sont présentées via des méthodes déléguées dans 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;
Ces méthodes déléguées retournent un IntuneMAMEnrollmentStatus objet qui contient les informations suivantes :
- AccountId (ID d’objet) du compte associé à la demande
- L’identité (UPN) du compte associé à la demande
- Code status qui indique le résultat de la requête
- Chaîne d’erreur avec une description du code status
- Objet
NSError. Cet objet est défini dansIntuneMAMEnrollmentStatus.h, ainsi que les codes status spécifiques qui peuvent être retournés.
Exemple de code
Voici des exemples d’implémentation des méthodes déléguées :
- (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);
}
Redémarrage de l’application
Lorsqu’une application reçoit des stratégies GAM pour la première fois, elle doit redémarrer pour appliquer les hooks requis. Pour informer l’application qu’un redémarrage doit se produire, le SDK fournit une méthode déléguée dans IntuneMAMPolicyDelegate.h.
- (BOOL) restartApplication
La valeur de retour de cette méthode indique au SDK si l’application doit gérer le redémarrage requis :
Si true est retourné, l’application doit gérer le redémarrage.
Si false est retourné, le KIT de développement logiciel (SDK) redémarre l’application après le retour de cette méthode. Le Kit de développement logiciel (SDK) affiche immédiatement une boîte de dialogue qui indique à l’utilisateur de redémarrer l’application.
Remarque
Les applications .NET MAUI ne nécessitent pas de redémarrage.
Critères de sortie
Après avoir configuré le plug-in de build ou intégré l’outil en ligne de commande dans votre processus de génération, vérifiez qu’il s’exécute correctement :
- Assurez-vous que votre build est compilée et générée correctement.
- Lancez votre application compilée, connectez-vous avec un utilisateur Microsoft Entra qui n’est pas ciblé par la stratégie de protection des applications et vérifiez que l’application fonctionne comme prévu.
- Déconnectez-vous et répétez ce test avec un utilisateur Microsoft Entra ciblé par la stratégie de protection des applications et vérifiez que l’application est désormais gérée par Intune et redémarrée.
À ce stade de l’intégration, votre application peut désormais recevoir et appliquer la stratégie de protection des applications. Exécutez les tests suivants pour valider l’intégration.
Premier test d’application de stratégie
Exécutez d’abord le test suivant pour vous familiariser avec l’expérience utilisateur final complète de l’application de stratégie au sein de votre application :
- Créez une stratégie de protection des applications iOS dans le centre d’administration Microsoft Intune. Pour ce test, configurez la stratégie :
- Sous Exigences d’accès, conservez les paramètres par défaut. En particulier, « CODE CONFIDENTIEL pour Access » doit être « Exiger ».
- Vérifiez que la stratégie de protection des applications est ciblée sur votre application. Vous devrez peut-être ajouter manuellement l’ID de bundle de l’application dans l’Assistant création de stratégie.
- Affectez la stratégie de protection des applications à un groupe d’utilisateurs contenant votre compte de test.
- Installez votre application.
- Connectez-vous à votre application avec votre compte de test ciblé avec la stratégie de protection des applications.
- Vérifiez que vous êtes invité à entrer un Intune écran géré et que l’invite redémarre l’application. Cet écran indique que le Kit de développement logiciel (SDK) récupère correctement la stratégie pour ce compte.
- Créez un code confidentiel lorsque vous êtes invité à définir un code confidentiel d’application.
- Déconnectez le compte managé de votre application.
- Parcourez votre application et vérifiez que votre application fonctionne comme prévu si possible sans vous connecter.
Cette liste d’étapes est un test *strict minimum pour vérifier que votre application inscrit correctement le compte, inscrit le rappel d’authentification et annule l’inscription du compte. Exécutez les tests suivants pour valider de manière plus approfondie la façon dont les autres paramètres de stratégie de protection des applications modifient le comportement de votre application.
Étapes suivantes
Une fois que vous avez terminé tous les critères de sortie, passez à l’Étape 4 : Fonctionnalités de participation aux applications.