Étape 3 : Intégration du SDK Intune dans votre application iOS

Remarque

Ce guide est divisé en plusieurs étapes distinctes. Commencez par passer en revue Planifiez l’intégration.

Objectifs de la scène

  • Téléchargez le Kit de développement logiciel (SDK) d’application Intune.
  • Découvrez quels fichiers sont inclus dans le SDK d’application Intune.
  • Référencez le Kit de développement logiciel (SDK) de l’application Intune dans votre application.
  • Vérifiez que le SDK d’application Intune est correctement inclus dans votre build.
  • Inscrivez de nouveaux comptes pour la gestion des applications de gestion des applications mobiles après leur authentification avec MSAL.
  • Pour supprimer des données d’entreprise, désinscrivez les comptes lors de la déconnexion
  • (Recommandé) Intégrez la journalisation 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 destinée à être destinée à iOS 16.0 ou version ultérieure.

  • Consulter les termes du contrat de licence de l’application Intune pour iOS. Imprimez et conservez une copie des termes du contrat de licence pour vos archives. En téléchargeant et en utilisant le Kit de développement logiciel (SDK) de l’application Intune pour iOS, vous acceptez ces termes du contrat de licence. Si vous ne les acceptez, n’utilisez pas le logiciel.

  • Téléchargez les fichiers du Kit de développement logiciel (SDK) de l’application Intune pour iOS sur GitHub.

Contenu du référentiel du Kit de développement logiciel (SDK)

  • IntuneMAMSwift.xcframework : infrastructure dynamique du SDK de l’application Intune. Nous vous recommandons de lier cette infrastructure à votre application/extensions pour activer la gestion des applications clientes Intune. Toutefois, certains développeurs peuvent préférer les avantages en termes de performances de l’infrastructure statique (IntuneMAMStatic.xcframework).

  • IntuneMAMStatic.xcframework : infrastructure statique du SDK d’application Intune. Les développeurs peuvent choisir de lier l’infrastructure statique à l’infrastructure dynamique. Étant donné que le code exécutable d’une infrastructure statique est incorporé directement dans le binaire de l’application/de l’extension au moment de la création, l’utilisation de la bibliothèque statique présente certains avantages en termes de performances au moment du lancement. Toutefois, si votre application inclut des extensions, le fait de lier l’infrastructure statique à l’application et aux extensions entraîne une taille d’offre groupée d’applications plus importante. Le code exécutable est incorporé dans chaque 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 SDK, ce qui entraîne une taille d’application plus petite.

  • IntuneMAMSwiftStub.xcframework : infrastructure Swift Stub du kit de développement logiciel (SDK) de l’application Intune. Cette infrastructure est une dépendance requise de IntuneMAMSwift.xcframework et 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 d’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 de l’application Intune. Cette variante du 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 et de lier vos applications/extensions à l’infrastructure dynamique (IntuneMAMSwift.xcframework) ou à l’infrastructure statique (IntuneMAMStatic.xcframework) mentionnée précédemment.

  • IntuneMAMResources.bundle : ensemble de ressources qui contient des ressources sur lesquelles repose le kit de développement logiciel (SDK). Le groupe de ressources est requis uniquement pour les applications qui intègrent la bibliothèque statique déconseillée (libIntuneMAMSwift.xcframework) et la supprime dans une prochaine mise à jour.

Fonctionnement du SDK d’application Intune

L’objectif du Kit de développement logiciel (SDK) d’application Intune pour iOS est d’ajouter des fonctionnalités de gestion aux applications iOS avec un minimum de modifications de code. Moins le code change, moins le délai de mise sur le marché est long, 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 Kit de développement logiciel (SDK) d’application Intune pour iOS :

Diagramme architectural général pour Microsoft Intune.

Intégrez le SDK dans votre application mobile

Importante

Intune publie régulièrement des mises à jour du kit de développement logiciel (SDK) d’application Intune. Effectuez régulièrement case activée la mise à jour du Kit de développement logiciel (SDK) d’application Intune pour iOS et intégrez-la à 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) d’application Intune, procédez comme suit :

  1. Lier l’un IntuneMAMSwift.xcframework ou IntuneMAMStatic.xcframework l’autre ou à 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 pour IntuneMAMSwiftStub.xcframework. Pour votre application principale, sélectionnez « Incorporer & Signature » dans la colonne « Incorporer » pour les deux xcframeworks ajoutés. Pour toutes les extensions, sélectionnez « Ne pas incorporer ».

    SDK de l’application Intune Infrastructure iOS : exemple Infrastructures, bibliothèques et contenu incorporé Xcode

  2. 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
  3. Activez le partage du trousseau (s’il n’est pas déjà activé) en choisissant Fonctionnalités dans chaque cible de projet et en activant le commutateur Partage du trousseau . Le partage du trousseau est nécessaire pour passer à l’étape suivante.

    Remarque

    Votre profil d’approvisionnement doit prendre en charge les nouvelles valeurs de partage du trousseau. Les groupes d’accès au trousseau doivent prendre en charge les caractères génériques. Vous pouvez case activée cela en ouvrant le fichier .mobileprovision dans un éditeur de texte, en recherchant keychain-access-groups et en vous assurant que vous disposez d’un caractère générique. Par exemple :

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Après avoir activé le partage du trousseau, suivez les étapes pour créer un groupe d’accès distinct dans lequel le kit de développement logiciel (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 :

    1. Si votre application mobile n’a pas de groupe d’accès au trousseau défini, ajoutez l’ID d’offre groupée de l’application en tant que premier groupe.

    2. Ajoutez le groupe com.microsoft.intune.mam trousseau partagé à vos groupes d’accès existants. Le Kit de développement logiciel (SDK) de l’application Intune utilise ce groupe d’accès pour stocker des données.

    3. Ajoutez com.microsoft.adalcache à vos groupes d’accès existants.

      SDK de l’application Intune iOS : partage de trousseau

      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 spécifier ce groupe d’accès com.microsoft.adalcacheau trousseau ici. Spécifiez plutôt 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 IntuneMAMSettings Info.plist.

    4. Si vous modifiez directement le fichier de droits plutôt que d’utiliser l’interface utilisateur Xcode pour créer les groupes d’accès au trousseau, ajoutez les groupes d’accès au trousseau ( $(AppIdentifierPrefix) Xcode s’en charge automatiquement). Par exemple :

      • $(AppIdentifierPrefix)com.microsoft.intune.mam
      • $(AppIdentifierPrefix)com.microsoft.adalcache

      Remarque

      Un fichier de droits est un fichier XML propre à 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 du trousseau (étape 3) aurait dû entraîner la génération d’un fichier Xcode pour votre application. Vérifiez que l’ID d’offre groupée de l’application est la première entrée de la liste.

  5. Incluez chaque protocole transmis par UIApplication canOpenURL votre application dans le LSApplicationQueriesSchemes tableau du fichier Info.plist de votre application. Pour chaque protocole répertorié dans ce tableau, ajoutez une copie du protocole ajouté -intunemam au tableau. Ajoutez également les valeurs suivantes au tableau : http-intunemam, , https-intunemammicrosoft-edge-http-intunemam, smart-nswanderalacoonsecuritylookoutwork-aseskycurezipsmicrosoft-edge-https-intunemamsmsecmvisionmobilebetteractiveshieldscmxet .intunemam-mtd Si votre application utilise le protocole mailto :, ajoutez-le ms-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 connues pour implémenter également le kit de développement logiciel (SDK) Intune MAM. 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 est renvoyé NO si la stratégie bloque l’ouverture de l’URL. Si la valeur est true, l’application peut appeler canOpenURL() 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];
        }];
    }
    
  6. Si votre application n’utilise pas déjà FaceID, assurez-vous que la clé NSFaceIDUsageDescription Info.plist est configurée avec un message par défaut. Cette étape est nécessaire pour qu’iOS puisse faire savoir à l’utilisateur comment l’application a l’intention 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.

  7. Utilisez l’outil IntuneMAMConfigurator inclus dans le référentiel du Kit de développement logiciel (SDK ) pour terminer la configuration de Info.plist de votre application. L’outil comporte trois paramètres :

    Propriété Comment l’utiliser
    - i <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 aux Info.plist ou aux droits 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 changeraient dans la dernière version.

Remarque

Si vous disposez d’une application SwiftUI, assurez-vous que UISceneConfigurations le UIApplicationSceneManifest dictionnaire contenu dans le fichier Info.pist n’est pas manquant ou vide. L’échec de la configuration de ce paramètre peut empêcher le SDK Intune de protéger votre application malgré l’application réussie des stratégies de protection des applications. Si vous n’avez pas de valeur spécifique définie pour le, vous pouvez utiliser cette UISceneConfigurations 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

Dans l’application, les paramètres « Strip Swift Symbols » (STRIP_SWIFT_SYMBOLS) et « Enable Bitcode » (ENABLE_BITCODE) doivent être définis sur NO 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 rendre l’intégration du kit de développement logiciel (SDK) complet difficile. Pour faciliter les choses, il existe une bibliothèque libIntuneMAMSwiftFileProvider.xcframeworkstatique , qui est une version allégé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 liée à l’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 à l’extension de votre fournisseur de fichiers, suivez les étapes d’intégration du SDK en tant que bibliothèque statique. Assurez-vous d’inclure ContainingAppBundleId le paramètre.

Intégration d’une extension de fournisseur de fichiers non répliqué

Votre application utilise un fournisseur de fichiers non répliqués 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 encryptFile :forAccountId : API dans IntuneMAMFileProtectionManager pour le chiffrement de fichier réel. Partagez également une copie du fichier lorsque le chiffrement est nécessaire, 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 multi-identités, vérifiez également la case activée par rapport à 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és

Votre application utilise un fournisseur de fichiers répliqués si elle implémente le protocole NSFileProviderReplicatedExtension (ajouté dans iOS 16.0).

Dans - fetchContentsForItemWithIdentifier :version :request :completionHandler : case activée si vous devez chiffrer les 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 multi-identités, vérifiez également la case activée par rapport à l’API canReceiveSharedFile : dans l’IntuneMAMPolicy du propriétaire de destination pour déterminer si le propriétaire peut recevoir le fichier.

Chaque fois que le fournisseur de fichiers répliqués crée et transmet 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 installer et configurer le Kit de développement logiciel (SDK) d’application Intune. Si le dictionnaire IntuneMAMSettings n’est pas visible dans votre fichier Info.plist, vous devez le créer.

Dans le dictionnaire IntuneMAMSettings, vous pouvez définir les paramètres pris en charge suivants pour configurer le kit de développement logiciel (SDK) d’application Intune.

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 L’autorité Microsoft Entra de l’application en cours d’utilisation. Vous devez utiliser votre propre environnement où les comptes Microsoft Entra sont configurés. Pour plus d’informations, voir Options de configuration des applications. Obligatoire si l’application est une application métier personnalisée conçue pour être utilisée au sein d’une seule organisation/d’un seul locataire Microsoft Entra. En l’absence de cette valeur, l’autorité Microsoft Entra commune est utilisée (prise en charge uniquement pour les applications mutualisées).
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. Cette option peut être utilisée à la place de 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 à partir de l’application, le cas échéant) vers son propre fichier journal. La valeur par défaut est NO. Définissez la valeur 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 à partir de la section des com.apple.security.application-groups droits de l’application. Obligatoire si l’application utilise des groupes d’applications.
ContainingAppBundleId String Spécifie l’ID de bundle de l’application conteneurte de 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.

Remarque : Si aucune identité managée n’est trouvée ou si aucun jeton valide n’est disponible dans le cache MSAL, l’inscription échoue silencieusement, sauf si MAMPolicyRequired elle est OUI.
Facultatif. La valeur par défaut est NO.
MAMPolicyRequired Booléen Spécifie si l’application est bloquée au démarrage si elle n’a pas de stratégie de protection des applications Intune. La valeur par défaut est NO.

Remarque : Les applications ne peuvent pas être soumises à l’App Store avec ce paramètre défini sur OUI. Lorsque vous le définissez sur OUI, AutoEnrollOnLaunch il devrait également être OUI.
Facultatif. La valeur par défaut est NO.
MAMPolicyWarnAbsent Booléen Spécifie si l’application avertit l’utilisateur au moment du lancement si aucune stratégie de protection de l’application Intune n’est présente.

Remarque : Les utilisateurs peuvent continuer après avoir masqué l’avertissement.
Facultatif. La valeur par défaut est NO.
Multi-identités Booléen Indique 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 les écrans d’interface utilisateur de lancement conditionnel d’Intune dans les applications multi-identités. Si ce paramètre n’est pas défini sur OUI, l’application doit gérer le code d’erreur IntuneMAMSwitchIdentityResultCanceled . Voir Changer d’identité. Facultatif. La valeur par défaut est NO.
SafariViewControllerBlockedOverride Booléen Désactive les hooks SafariViewController d’Intune pour activer l’authentification MSAL via SFSafariViewController, SFAuthSession ou ASWebAuthSession.

Remarque : Un bouton d’activité configuré apparaît uniquement si la vue n’est pas gérée et qu’elle est définie sur OUI.
Facultatif. La valeur par défaut est NO.

Avertissement : Peut provoquer une fuite de données si elle est utilisée de manière incorrecte.
Fichier SplashIcon
SplashIconFile~ipad
String Spécifie le fichier d’icône d’éclaboussure de Intune (démarrage). Facultatif.
Durée d’éclaboussure Nombre Durée minimale en secondes pendant laquelle l’écran de démarrage d’Intune s’affiche. La valeur par défaut est 1,5. Facultatif.
BackgroundColor String Spécifie la couleur d’arrière-plan de Intune composants de l’interface utilisateur du kit de développement logiciel (SDK). Accepte #XXXXXX ou une valeur hexadécimale sans le signe dièse. Facultatif. Par défaut, la couleur d’arrière-plan du système est utilisée.
Couleur de premier plan 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. Par défaut, la couleur de l’étiquette système est utilisée.
Couleur d’accentuation String Spécifie la couleur d’accentuation des composants de l’interface utilisateur (boutons, mise en surbrillance de la zone PIN). 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 blanche.
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 du 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 serveur principal. Facultatif. La valeur par défaut est NO.
MAMTelemetryUsePPE Booléen Envoie les données de télémétrie au serveur principal de l’EPI. 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 le maximum NSFileProtectionType que l’application prend en charge. Remplace la stratégie si le service envoie un niveau supérieur.

Valeurs possibles : NSFileProtectionComplete, , NSFileProtectionCompleteUnlessOpenNSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.

Avis : Avec NSFileProtectionComplete, l’application perd l’accès aux fichiers protégés ~10 secondes après le verrouillage de l’appareil, ce qui peut endommager des composants tels que des bases de données locales. Les applications avec interface utilisateur d’écran de verrouillage doivent utiliser NSFileProtectionCompleteUntilFirstUserAuthentication.
Facultatif. La valeur par défaut est NSFileProtectionComplete.
OpenInActionExtension Booléen Définissez la valeur OUI pour les extensions Ouvrir dans l’action. Consultez Partage de données via UIActivityViewController. Facultatif.
TreatAllWebViewsAsUnmanaged Booléen Traite toutes les vues web comme non gérées pour l’application du couper/copuier/coller. Voir Affichage de contenu web. Facultatif. La valeur par défaut est NO.
WebViewHandledURLSchemes Tableau de chaînes Schémas d’URL gérés par l’affichage web de l’application. Obligatoire si votre WebView gère la navigation via des liens ou JavaScript.
DocumentBrowserFileCachePath String Si vous utilisez UIDocumentBrowserViewController, définissez un chemin (relatif au répertoire de base de l’application) pour les fichiers géré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:]; 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 la stratégie de protection des applications Intune, les applications doivent lancer une demande d’inscription auprès du service de gestion des applications 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 de l’appareil. La gestion des applications mobiles (MAM) permet aux applications d’être gérées par Intune sans qu’il soit nécessaire d’inscrire l’appareil dans Intune gestion des périphériques mobiles (MDM). Dans les deux cas, l’inscription auprès du service Intune MAM 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 des stratégies de protection des applications. Toutes les applications doivent disposer d’une version actuelle du SDK pour permettre un partage de données protégé.

Applications qui utilisent déjà ADAL ou MSAL

Remarque

La bibliothèque d’Azure AD Authentication Library (ADAL) et l’API Azure AD Graph sont obsolètes. 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 l’instance IntuneMAMEnrollmentManager une fois l’authentification de l’utilisateur réussie :

/*
 *  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;

Une fois la 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 au nom de ce compte. Si l’inscription échoue pour une raison quelconque, le Kit de développement logiciel (SDK) réessaie automatiquement de procéder 24 heures plus tard. À des fins de débogage, l’application peut recevoir des notifications, par l’intermédiaire d’un délégué, concernant les résultats de toute demande 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 requis. À ce moment-là, l’utilisateur peut immédiatement redémarrer 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 de ADAL ou MSAL peuvent toujours recevoir une 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 ont quand même besoin de 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 l’instance IntuneMAMEnrollmentManager :

/**
 *  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 à entrer 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 MAM Intune pour le compte d’utilisateur fourni. La méthode peut être appelée avec « nil » comme identité. Dans ce cas, le SDK s’inscrit avec l’utilisateur géré existant sur l’appareil (si MDM) 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 ultérieurement, en fonction des détails de l’échec. L’application peut recevoir des notifications, par l’intermédiaire d’un délégué, concernant les résultats de toute demande 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 requis. Une fois l’application gérée, la valeur d’ID d’objet Microsoft Entra doit être interrogée à l’aide enrolledAccountId de la IntuneMAMEnrollmentManager. Utilisez cette option pour toutes les API du 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 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 YES dans le dictionnaire IntuneMAMSettings dans 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.

Remarque : Si aucune identité managée n’est trouvée ou si aucun jeton valide pour l’identité n’est disponible dans le cache ADAL/MSAL, la tentative d’inscription échoue silencieusement 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.

Remarque : Les applications ne peuvent pas être envoyées à l’App Store avec MAMPolicyRequired le paramètre OUI. Lorsque la commande est définie MAMPolicyRequired sur OUI, AutoEnrollOnLaunch elle doit également être définie 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’utilisateurs

Avant qu’un utilisateur ne soit déconnecté d’une application, l’application doit annuler l’inscription de l’utilisateur du Kit de développement logiciel (SDK). Ce processus garantit :

  1. Les nouvelles tentatives d’inscription ne se produisent plus pour le compte de l’utilisateur.

  2. La stratégie de protection d’applications est supprimée.

  3. Les données d’entreprise sont supprimées si l’application lance un effacement sélectif (facultatif).

Avant que l’utilisateur ne soit déconnecté, l’application doit appeler la méthode suivante sur l’instance IntuneMAMEnrollmentManager :

/*
 *  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 la suppression des jetons Microsoft Entra du compte d’utilisateur. Le Kit de développement logiciel (SDK) a besoin des jetons Microsoft Entra du compte d’utilisateur pour effectuer des demandes spécifiques au service MAM Intune pour le compte de l’utilisateur.

Si l’application supprime d’elle-même les données d’entreprise de l’utilisateur, l’indicateur doWipe peut être défini sur false. Dans le cas contraire, l’application peut faire en sorte que le Kit de développement logiciel (SDK) lance un nettoyage sélectif. Cette action entraîne un appel au délégué d’effacement sélectif 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 demandes suivantes adressées au service de gestion des applications 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 :

  • Account Id (ID d’objet) du compte associé à la demande
  • L’identité (UPN) du compte associé à la demande
  • Code de status qui indique le résultat de la demande
  • Chaîne d’erreur avec une description du code de status
  • Un NSError objet. Cet objet est défini dans IntuneMAMEnrollmentStatus.h, avec les codes de status spécifiques qui peuvent être renvoyés.

Exemple de code

Voici des exemples d’implémentation des méthodes de délégation :

- (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 signaler à l’application qu’un redémarrage doit se produire, le Kit de développement logiciel (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 renvoyé, l’application doit gérer le redémarrage.

  • Si false est renvoyé, le 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 invite l’utilisateur à 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 génération 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 de 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 de Microsoft Entra ciblé par la stratégie de protection des applications et vérifiez que l’application est maintenant gérée par Intune et redémarrée.

À ce stade de l’intégration, votre application peut maintenant 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 dans votre application :

  1. 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 Conditions d’accès, conservez les paramètres par défaut. Notamment, « PIN for Access » devrait être « Require ».
  2. Assurez-vous que la stratégie de protection des applications est ciblée sur votre application. Vous devrez peut-être ajouter manuellement l’ID d’offre groupée de l’application dans l’Assistant de création de stratégie.
  3. Attribuez la stratégie de protection des applications à un groupe d’utilisateurs contenant votre compte de test.
  4. Installez votre application.
  5. Connectez-vous à votre application avec votre compte de test ciblé par la stratégie de protection des applications.
  6. Confirmez qu’un écran géré par Intune s’affiche et, lorsque 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.
  7. Créez un code confidentiel lorsque vous êtes invité à le faire.
  8. Déconnectez le compte managé de votre application.
  9. Naviguez autour de votre application et vérifiez qu’elle fonctionne comme prévu, si possible sans vous connecter.

Cette liste d’étapes est un test *minimal- pour confirmer que votre application inscrit correctement le compte, inscrit le rappel d’authentification et désinscrit le compte. Exécutez les tests suivants pour valider plus précisément 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 rempli tous les critères de sortie, passez à l’étape 4 : fonctionnalités de participation de l’application.