Partager via


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

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) de l’application Intune.
  • Découvrez les fichiers inclus dans le Kit de développement logiciel (SDK) de l’application Intune.
  • Référencez le SDK d’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 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.

Conditions préalables

  • Vous avez besoin d’un ordinateur macOS sur lequel Xcode 14.0 ou version ultérieure est installé.

  • Votre application doit être ciblée pour iOS 14.0 ou version ultérieure.

  • Passez en revue les termes du contrat de licence du SDK d’application Intune pour iOS. Imprimez et conservez une copie des termes du contrat de licence pour vos enregistrements. En téléchargeant et en utilisant le Kit de développement logiciel (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 la gestion des applications clientes Intune. Toutefois, certains développeurs peuvent préférer les avantages en matière de performances de l’infrastructure statique (IntuneMAMStatic.xcframework). Voir ci-dessous.

  • 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, car 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 fichier binaire du SDK Intune, 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 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 d’application Intune. Cette variante du Kit de développement logiciel (SDK) Intune MAM iOS est déconseillée et sera supprimée dans une prochaine mise à jour. Il est recommandé 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 sera supprimée dans une prochaine mise à jour.

Fonctionnement du SDK d’application Intune

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 :

Diagramme architectural de haut niveau pour Microsoft Intune.

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) de l’application Intune. Vérifiez régulièrement les mises à jour du SDK d’application Intune pour iOS et intégrez-les à 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 SDK d’application Intune, procédez comme suit :

  1. IntuneMAMSwift.xcframework Lier ou IntuneMAMStatic.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 pour IntuneMAMSwiftStub.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 ».

    Framework iOS du SDK d’application Intune : frameworks Xcode, bibliothèques et contenu incorporé

  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 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 vérifier 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>
    
  4. 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 stockera 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 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.

    2. Ajoutez le groupe com.microsoft.intune.mam de 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.

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

      Sdk d’application Intune iOS : partage de trousseau

    4. Si vous modifiez directement le fichier de droits, plutôt que d’utiliser l’interface utilisateur Xcode ci-dessus 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.

  5. Incluez chaque protocole auquel votre application passe dans UIApplication canOpenURL le LSApplicationQueriesSchemes tableau du fichier Info.plist de votre application. Pour chaque protocole répertorié dans ce tableau, une copie du protocole ajouté avec -intunemam doit également être ajoutée au tableau. En outre, , http-intunemam, microsoft-edge-http-intunemam, , smart-nsmicrosoft-edge-https-intunemam, zips, lacoonsecurity, wanderalookoutwork-ase, skycure, mvisionmobilebetteractiveshieldsmsecscmxet intunemam-mtd doivent être ajoutés au tableau. https-intunemam Si votre application utilise le protocole mailto :, ms-outlook-intunemam doit également être ajoutée au tableau. Veillez à enregistrer 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, l’application doit plutôt appeler [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] pour ce schéma. Cet appel retourne NO si la stratégie bloque l’ouverture de l’URL. Si elle retourne 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, 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.

  7. 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 des modifications ont été apportées à Info.plist ou à des 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 auraient changé dans la dernière version.

Paramètres de build Xcode

L’application doit avoir à la fois « Supprimer les symboles Swift » (STRIP_SWIFT_SYMBOLS) et « Activer le code binaire » (ENABLE_BITCODE) définis sur NON.

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.xcframework statique qui est une version simplifiée du Kit de développement logiciel (SDK) spécifiquement pour les extensions de fournisseur de fichiers. Notez qu’il s’agit de 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, comme indiqué ci-dessus. 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 : vérifiez si vous devez chiffrer des fichiers à l’aide de [[Instance IntuneMAMPolicy]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 : vérifiez si le fichier est chiffré à l’aide de isFileEncrytped : API dans IntuneMAMFileProtectionManager. Si c’est le cas, déchiffrez-le à l’aide decryptFile :toCopyPath : API d’IntuneMAMFileProtectionManager. Dans les applications multi-identités, vérifiez également l’API canReceiveSharedFile : dans intuneMAMPolicy du propriétaire de destination pour voir 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 : vérifiez si vous devez chiffrer les fichiers à l’aide de [[Instance IntuneMAMPolicy]shouldFileProviderEncryptFileFiles]]. 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 - createItemBasedOnTemplate :fields :contents :options :request :completionHandler : vérifiez si le fichier est chiffré à l’aide de l’API isFileEncrypted : dans IntuneMAMFileProtectionManager. Si c’est le cas, déchiffrez-le à l’aide decryptFile :toCopyPath : API d’IntuneMAMFileProtectionManager. Dans les applications multi-identités, vérifiez également l’API canReceiveSharedFile : dans intuneMAMPolicy du propriétaire de destination pour voir 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 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 SDK d’application Intune.

Certains de ces paramètres ont peut-être été abordés dans les sections précédentes, et d’autres ne s’appliquent pas à toutes les applications.

Setting Type Définition Obligatoire ?
ADALClientId Chaîne Identificateur du client Microsoft Entra de l’application. Obligatoire pour toutes les applications.
ADALAuthority Chaîne L’autorité Microsoft Entra de l’application en cours d’utilisation. Vous devez utiliser votre propre environnement où les comptes Microsoft Entra ont été 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’une seule organisation/locataire Microsoft Entra. Si cette valeur est absente, l’autorité Microsoft Entra commune est utilisée (qui n’est prise en charge que pour les applications multilocataires).
ADALRedirectUri Chaîne URI de redirection Microsoft Entra de l’application. ADALRedirectUri ou ADALRedirectScheme est requis pour toutes les applications.
ADALRedirectScheme Chaîne Schéma de redirection de l’ID Microsoft Entra 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 Valeur booléenne Spécifie si le SDK acheminera 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. Optional.
ADALCacheKeychainGroupOverride Chaîne Spécifie le groupe de trousseaux à utiliser pour le cache MSAL, au lieu de « com.microsoft.adalcache ». Notez qu’il n’a pas le préfixe app-id. Il sera préfixé à la chaîne fournie au moment de l’exécution. Optional.
AppGroupIdentifiers Tableau de chaînes Tableau de groupes d’applications de la section com.apple.security.application-groups des droits de l’application. Obligatoire si l’application utilise des groupes d’applications.
ContainingAppBundleId Chaîne Spécifie l’ID de bundle de l’application contenant l’extension. Obligatoire pour les extensions iOS.
AutoEnrollOnLaunch Valeur booléenne 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.

Remarques : Si aucune identité managée n’est trouvée ou qu’aucun jeton valide pour l’identité n’est disponible dans le cache MSAL, la tentative d’inscription échoue en mode silencieux sans demander d’informations d’identification, sauf si l’application a également défini MAMPolicyRequired sur OUI.
Optional. La valeur par défaut est non.
MAMPolicyRequired Valeur booléenne Spécifie si le démarrage de l’application n’est pas bloqué si l’application n’a pas de stratégie de protection des applications Intune. La valeur par défaut est NO.

Remarques : Les applications ne peuvent pas être envoyées à l’App Store avec MAMPolicyRequired défini sur OUI. Lorsque vous définissez MAMPolicyRequired sur OUI, AutoEnrollOnLaunch doit également être défini sur OUI.
Optional. La valeur par défaut est non.
MAMPolicyWarnAbsent Valeur booléenne Spécifie si l’application avertit l’utilisateur lors du lancement si l’application n’a pas de stratégie de protection des applications Intune.

Remarque : les utilisateurs sont toujours autorisés à utiliser l’application sans stratégie après avoir ignoré l’avertissement.
Optional. La valeur par défaut est non.
MultiIdentity Valeur booléenne Spécifie si l’application prend en charge les identités multiples. Optional. La valeur par défaut est non.
SafariViewControllerBlockedOverride Valeur booléenne Désactive les hooks SafariViewController d’Intune pour activer l’authentification MSAL via SFSafariViewController, SFAuthSession ou ASWebAuthSession.

Remarque : la propriété du bouton d’activité SFSafariViewControllerConfiguration n’est pas prise en charge par le contrôleur d’affichage Safari géré d’Intune. Un bouton d’activité configuré s’affiche uniquement dans safariViewController si l’affichage n’est pas géré et que safariViewControllerBlockedOverride est défini sur oui.
Optional. La valeur par défaut est non. AVERTISSEMENT : peut entraîner une fuite de données en cas d’utilisation incorrecte. Activez uniquement si cela est absolument nécessaire. Pour plus d’informations, consultez Considérations spéciales lors de l’utilisation de MSAL pour l’authentification lancée par l’application.
SplashIconFile
SplashIconFile~ipad
Chaîne Spécifie le fichier d’icône de démarrage (démarrage) Intune. Optional.
SplashDuration Nombre Durée minimale, en secondes, pendant laquelle l’écran de démarrage Intune s’affiche au lancement de l’application. La valeur par défaut est 1.5. Optional.
BackgroundColor Chaîne Spécifie la couleur d’arrière-plan des composants d’interface utilisateur du SDK Intune. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. Par défaut, la couleur d’arrière-plan du système peut varier selon les versions d’iOS et selon le paramètre mode sombre iOS.
ForegroundColor Chaîne Spécifie la couleur de premier plan pour les composants d’interface utilisateur du SDK Intune, comme la couleur du texte. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. Par défaut, la couleur de l’étiquette système peut varier selon les versions d’iOS et selon le paramètre Mode sombre iOS.
AccentColor Chaîne Spécifie la couleur d’accentuation des composants de l’interface utilisateur du Kit de développement logiciel (SDK) Intune, comme la couleur du texte du bouton et la couleur de surbrillance de la zone de code confidentiel. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. La valeur par défaut est bleu système.
SecondaryBackgroundColor Chaîne Spécifie la couleur d’arrière-plan secondaire pour les écrans MTD. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. La valeur par défaut est blanc.
SecondaryForegroundColor Chaîne Spécifie la couleur de premier plan secondaire pour les écrans MTD, comme la couleur de la note de bas de page. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. La valeur par défaut est gris.
SupportsDarkMode Valeur booléenne Spécifie si le jeu de couleurs de l’interface utilisateur du SDK Intune doit respecter le paramètre du mode sombre système, si aucune valeur explicite n’a été définie pour BackgroundColor/ForegroundColor/AccentColor Optional. La valeur par défaut est Oui.
MAMTelemetryDisabled Valeur booléenne Spécifie si le Kit de développement logiciel (SDK) n’envoie pas de données de télémétrie à son back-end. Optional. La valeur par défaut est non.
MAMTelemetryUsePPE Valeur booléenne Spécifie si le SDK MAM envoie des données au back-end de télémétrie PPE. Utilisez-la lors du test de vos applications avec la stratégie Intune afin que les données de télémétrie de test ne se mélangent pas aux données client. Optional. La valeur par défaut est non.
MaxFileProtectionLevel Chaîne Permet à l’application de spécifier le maximum NSFileProtectionType qu’elle peut prendre en charge. Cette valeur remplace la stratégie envoyée par le service si le niveau est supérieur à ce que l’application peut prendre en charge. Valeurs possibles : NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone. Remarque : avec le niveau de protection de fichier le plus élevé (NSFileProtectionComplete), les fichiers protégés ne sont accessibles que lorsque l’appareil est déverrouillé. 10 secondes après le verrouillage de l’appareil, l’application perd l’accès aux fichiers protégés. Dans certains cas, cela peut entraîner une perte d’accès aux composants internes (tels que les bases de données MySQL), ce qui peut entraîner un comportement inattendu. Il est recommandé que les applications qui présentent des éléments d’interface utilisateur d’écran de verrouillage définissent cette valeur sur NSFileProtectionCompleteUntilFirstUserAuthentication. Optional. La valeur par défaut est NSFileProtectionComplete.
OpenInActionExtension Valeur booléenne Définissez sur OUI pour les extensions Ouvrir en action. Pour plus d’informations, consultez la section Partage de données via UIActivityViewController .
WebViewHandledURLSchemes Tableau de chaînes Spécifie les schémas d’URL gérés par le WebView de votre application. Obligatoire si votre application utilise un WebView qui gère les URL via des liens et/ou JavaScript.
DocumentBrowserFileCachePath Chaîne Si votre application utilise pour parcourir les UIDocumentBrowserViewController fichiers de différents fournisseurs de fichiers, vous pouvez définir ce chemin d’accès par rapport au répertoire de base dans le bac à sable de l’application afin que le SDK Intune puisse supprimer les fichiers managés déchiffrés dans ce dossier. Optional. La valeur par défaut est le /Documents/ répertoire .
VerboseLoggingEnabled Valeur booléenne Si la valeur est OUI, Intune se connecte en mode détaillé. Optional. La valeur par défaut est NO
FinishLaunchingAtStartup Valeur booléenne Si l’application utilise [BGTaskScheduler registerForTaskWithIdentifier:] , ce paramètre doit être défini sur OUI. Optional. La valeur par défaut est NO
ValuesToScrubFromLogging Tableau de chaînes Spécifie les valeurs de configuration de l’application qui doivent être nettoyées à partir des journaux. Vous pouvez également attribuer à la propriété valuesToScrubFromLogging de la classe IntuneMAMSettings un tableau de chaînes pour le même comportement. Optional.

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 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 la gestion des appareils mobiles (MDM) Intune. Dans les deux cas, l’inscription auprès du service GAM Intune est nécessaire pour recevoir la stratégie.

Importante

Le Kit de développement logiciel (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 devront disposer d’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

La bibliothèque d’authentification Azure AD (ADAL) et l’API Graph Azure AD seront déconseillées. 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’utilisateur authentifié :

/*
 *  This method will add the account to the list of registered accounts.
 *  An enrollment request will immediately be started.
 *  @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 ci-dessus.

En appelant la registerAndEnrollAccountId méthode , le 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 Kit de développement logiciel (SDK) retentera 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 l’ID Microsoft Entra, mais qu’elles doivent toujours 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 is started immediately.
 *  If no token can be retrieved for the identity, the user will be prompted
 *  to enter their credentials, after which enrollment will be 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 (dans le cas de la gestion des appareils mobiles) 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 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 une stratégie d’application, vous n’avez pas besoin d’utiliser l’API loginAndEnrollAccount . Vous pouvez simplement définir les deux paramètres ci-dessous sur OUI dans le dictionnaire IntuneMAMSettings dans info.plist de l’application.

Setting Type Définition
AutoEnrollOnLaunch Valeur booléenne 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 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 a également défini MAMPolicyRequired sur OUI.
MAMPolicyRequired Valeur booléenne Spécifie si le démarrage de l’application n’est pas 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 défini sur OUI. Lorsque vous définissez MAMPolicyRequired sur 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). Cela garantit les points suivants :

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

  2. La stratégie de protection des applications sera supprimée.

  3. Toutes 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 l’instance IntuneMAMEnrollmentManager :

/*
 *  This method will remove the provided account from the list of
 *  registered accounts.  Once removed, if the account has enrolled
 *  the application, the account will be un-enrolled.
 *  @note In the case where an un-enroll is required, this method will block
 *  until the Intune APP AAD token is acquired, then return.  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 SDK a besoin du ou des jetons Microsoft Entra du compte d’utilisateur pour effectuer des requêtes spécifiques au service GAM Intune au nom de l’utilisateur.

Si l’application supprime les données d’entreprise de l’utilisateur seule, 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. Cela 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 d’état, de résultat et de débogage concernant les demandes 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 d’état qui indique le résultat de la demande
  • Chaîne d’erreur avec une description du code d’état
  • Objet NSError . Cet objet est défini dans IntuneMAMEnrollmentStatus.h, ainsi que les codes d’état 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.

Critères de sortie

Une fois que vous avez 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é avec la stratégie de protection des applications et confirmez 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 :

  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 Exigences d’accès, conservez les paramètres par défaut. En particulier, « CODE CONFIDENTIEL pour Access » doit être « Exiger ».
  2. 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.
  3. Affectez 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é avec la stratégie de protection des applications.
  6. Vérifiez que vous êtes invité à utiliser un écran géré par Intune 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.
  7. Créez un code confidentiel lorsque vous êtes invité à définir un code confidentiel d’application.
  8. Déconnectez le compte managé de votre application.
  9. 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.