Freigeben über


Phase 3: Intune SDK-Integration in Ihre iOS-App

Hinweis

Dieser Leitfaden ist in mehrere unterschiedliche Phasen unterteilt. Lesen Sie zunächst Planen der Integration.

Etappenziele

  • Laden Sie das Intune App SDK herunter.
  • Erfahren Sie, welche Dateien im Intune App SDK enthalten sind.
  • Verweisen Sie in Ihrer Anwendung auf das Intune App SDK.
  • Vergewissern Sie sich, dass das Intune App SDK ordnungsgemäß in Ihrem Build enthalten ist.
  • Registrieren Sie nach der Authentifizierung bei MSAL neue Konten für die MAM-Verwaltung.
  • Um Unternehmensdaten zu entfernen, heben Sie die Registrierung von Konten bei der Abmeldung auf
  • (Empfohlen) Integrieren Sie die MAM-Protokollierung in Ihre App.

Voraussetzungen

  • Sie benötigen einen macOS-Computer mit Xcode 16.0 oder höher.

  • Ihre App muss für iOS 16.0 oder höher vorgesehen sein.

  • Lesen Sie die Lizenzbedingungen für Intune App SDK für iOS. Drucken und aufbewahren Sie eine Kopie der Lizenzbedingungen für Ihre Aufzeichnungen. Durch das Herunterladen und Verwenden des Intune App SDK für iOS stimmen Sie diesen Lizenzbedingungen zu. Wenn Sie sie nicht akzeptieren, verwenden Sie die Software nicht.

  • Laden Sie die Dateien für das Intune App SDK für iOS auf GitHub herunter.

Inhalt des SDK-Repositorys

  • IntuneMAMSwift.xcframework: Das dynamische Framework Intune App SDK. Es wird empfohlen, dieses Framework mit Ihren Apps/Erweiterungen zu verknüpfen, um Intune Clientanwendungsverwaltung zu ermöglichen. Einige Entwickler bevorzugen jedoch möglicherweise die Leistungsvorteile des statischen Frameworks (IntuneMAMStatic.xcframework).

  • IntuneMAMStatic.xcframework: Das statische Framework Intune App SDK. Entwickler können das statische Framework anstelle des dynamischen Frameworks verknüpfen. Da der ausführbare Code aus einem statischen Framework zur Buildzeit direkt in die App-/Erweiterungsbinärdatei eingebettet wird, hat die Verwendung der statischen Bibliothek einige Vorteile bei der Startzeit. Wenn Ihre App jedoch Erweiterungen enthält, führt das Verknüpfen des statischen Frameworks mit der App und den Erweiterungen zu einer größeren App-Bündelgröße. Der ausführbare Code wird in jede App-/Erweiterungsbinärdatei eingebettet. Im Gegensatz dazu können Apps und Erweiterungen bei Verwendung des dynamischen Frameworks dieselbe Intune SDK-Binärdatei verwenden, was zu einer kleineren App-Größe führt.

  • IntuneMAMSwiftStub.xcframework: Das swift Stub-Framework Intune App SDK. Dieses Framework ist eine erforderliche Abhängigkeit von IntuneMAMSwift.xcframework und IntuneMAMStatic.xcframework, die Apps/Erweiterungen verknüpfen müssen.

  • IntuneMAMConfigurator: Ein Tool, das verwendet wird, um die Datei "Info.plist" der App oder Erweiterung mit den mindestens erforderlichen Änderungen für Intune-Verwaltung zu konfigurieren. Abhängig von der Funktionalität Ihrer App oder Erweiterung müssen Sie möglicherweise weitere manuelle Änderungen an der Datei "Info.plist" vornehmen.

  • libIntuneMAMSwift.xcframework: Die statische Bibliothek Intune App SDK. Diese Variante des Intune MAM iOS SDK ist veraltet und wird in einem zukünftigen Update entfernt. Es wird empfohlen, die statische Bibliothek nicht zu verknüpfen und stattdessen Ihre App/Erweiterungen mit dem zuvor erwähnten dynamischen Framework (IntuneMAMSwift.xcframework) oder dem statischen Framework (IntuneMAMStatic.xcframework) zu verknüpfen.

  • IntuneMAMResources.bundle: Ein Ressourcenpaket, das Ressourcen enthält, auf denen das SDK basiert. Das Ressourcenpaket ist nur für Apps erforderlich, die die veraltete statische Bibliothek (libIntuneMAMSwift.xcframework) integrieren und in einem zukünftigen Update entfernen.

Funktionsweise des Intune App SDK

Das Ziel des Intune App SDK für iOS besteht darin, iOS-Anwendungen Verwaltungsfunktionen mit minimalen Codeänderungen hinzuzufügen. Je weniger der Code geändert wird, desto kürzer ist die Markteinführungszeit, ohne die Konsistenz und Stabilität Ihrer mobilen Anwendung zu beeinträchtigen.

Prozessablauf

Das folgende Diagramm zeigt den Prozessablauf Intune App SDK für iOS:

Allgemeines Architekturdiagramm für Microsoft Intune.

Erstellen des SDK in Ihrer mobilen App

Wichtig

Intune veröffentlicht regelmäßig Updates für das Intune App SDK. Überprüfen Sie regelmäßig das Intune App SDK für iOS auf Updates, und integrieren Sie sie in Ihren Releasezyklus für die Softwareentwicklung, um sicherzustellen, dass Ihre Apps die neuesten Einstellungen der App-Schutzrichtlinie unterstützen.

Führen Sie die folgenden Schritte aus, um das Intune App SDK zu aktivieren:

  1. Verknüpfen Sie entweder IntuneMAMSwift.xcframework oder IntuneMAMStatic.xcframework mit Ihrem Ziel: Ziehen Sie das xcframework-Paket in die Liste Frameworks, Bibliotheken und eingebettete Inhalte des Projektziels . Wiederholen Sie diese Schritte für IntuneMAMSwiftStub.xcframework. Wählen Sie für Ihre Haupt-App in der Spalte "Einbetten" für beide hinzugefügten xcframeworks die Option "& Sign einbetten" aus. Wählen Sie für alle Erweiterungen "Do Not Embed" (Nicht einbetten) aus.

    Intune App SDK iOS Framework: Beispiel für Xcode-Frameworks, Bibliotheken und eingebettete Inhalte

  2. Fügen Sie dem Projekt die folgenden iOS-Frameworks hinzu:

    • 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. Aktivieren Sie die Schlüsselbundfreigabe (sofern noch nicht aktiviert), indem Sie in jedem Projektziel Funktionen auswählen und den Schlüsselbundfreigabeschalter aktivieren. Die Schlüsselbundfreigabe ist erforderlich, damit Sie mit dem nächsten Schritt fortfahren können.

    Hinweis

    Ihr Bereitstellungsprofil muss neue Schlüsselbundfreigabewerte unterstützen. Die Schlüsselbundzugriffsgruppen sollten ein Wildcardzeichen unterstützen. Sie können dies überprüfen, indem Sie die MOBILEPROVISION-Datei in einem Text-Editor öffnen, nach Keychain-access-groups suchen und sicherstellen, dass Sie über ein Wildcardzeichen verfügen. Zum Beispiel:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Nachdem Sie die Schlüsselbundfreigabe aktiviert haben, führen Sie die Schritte zum Erstellen einer separaten Zugriffsgruppe aus, in der das Intune App SDK seine Daten speichert. Sie können eine Keychainzugriffsgruppe über die Benutzeroberfläche oder mithilfe der Berechtigungsdatei erstellen. Wenn Sie die Benutzeroberfläche verwenden, um die Keychain-Zugriffsgruppe zu erstellen, stellen Sie sicher, dass Sie die folgenden Schritte ausführen:

    1. Wenn für Ihre mobile App keine Schlüsselbundzugriffsgruppen definiert sind, fügen Sie die Bündel-ID der App als erste Gruppe hinzu.

    2. Fügen Sie die freigegebene Keychaingruppe com.microsoft.intune.mam Ihren vorhandenen Zugriffsgruppen hinzu. Das Intune App SDK verwendet diese Zugriffsgruppe zum Speichern von Daten.

    3. Fügen Sie com.microsoft.adalcache Ihren vorhandenen Zugriffsgruppen hinzu.

      Intune App SDK iOS: Schlüsselbundfreigabe

      Hinweis

      Wenn Sie MSAL für die Verwendung einer benutzerdefinierten Keychainzugriffsgruppe anstelle des Standardwerts com.microsoft.adalcachekonfiguriert haben, müssen Sie diese Keychainzugriffsgruppe hier nicht angeben. Geben Sie stattdessen die benutzerdefinierte Keychaingruppe an. Sie sollten auch Intune konfigurieren, um dieselbe benutzerdefinierte Zugriffsgruppe über die Einstellung ADALCacheKeychainGroupOverride im IntuneMAMSettings Info.plist-Wörterbuch zu verwenden.

    4. Wenn Sie die Berechtigungsdatei direkt bearbeiten, anstatt die Xcode-Benutzeroberfläche zum Erstellen der Keychainzugriffsgruppen zu verwenden, stellen Sie den Schlüsselbundzugriffsgruppen $(AppIdentifierPrefix) voran (Xcode behandelt dies automatisch). Beispiel:

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

      Hinweis

      Eine Berechtigungsdatei ist eine XML-Datei, die für Ihre mobile Anwendung eindeutig ist. Es wird verwendet, um spezielle Berechtigungen und Funktionen in Ihrer iOS-App anzugeben. Wenn Ihre App zuvor nicht über eine Berechtigungsdatei verfügte, sollte die Aktivierung der Keychainfreigabe (Schritt 3) dazu geführt haben, dass Xcode eine datei für Ihre App generiert hat. Stellen Sie sicher, dass die Bündel-ID der App der erste Eintrag in der Liste ist.

  5. Schließen Sie jedes Protokoll, an das Ihre App übergibt UIApplication canOpenURL , in das LSApplicationQueriesSchemes Array der Datei "Info.plist" Ihrer App ein. Fügen Sie für jedes Protokoll, das in diesem Array aufgeführt ist, eine Kopie des Protokolls hinzu, das mit -intunemam an das Array angefügt wird. Fügen Sie dem Array außerdem die folgenden Werte hinzu: http-intunemam, , https-intunemam, microsoft-edge-https-intunemammicrosoft-edge-http-intunemam, , smart-nszips, wanderaskycurelookoutwork-asesmseclacoonsecuritybetteractiveshield, mvisionmobile, , scmxund .intunemam-mtd Wenn Ihre App das mailto:-Protokoll verwendet, fügen Sie auch dem Array hinzu ms-outlook-intunemam . Speichern Sie Ihre Änderungen, bevor Sie mit dem nächsten Schritt fortfahren.

    Wenn der App in der LSApplicationQueriesSchemes-Liste nicht mehr speicherplatz vorhanden ist, können die "-intunemam"-Schemas für Apps entfernt werden, von denen bekannt ist, dass sie auch das Intune MAM SDK implementieren. Wenn die App "scheme-intunemam" aus der LSApplicationQueriesSchemes-Liste entfernt, canOpenURL() kann falsche Antworten für diese Schemas zurückgeben. Um dieses Problem zu beheben, rufen Sie [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] stattdessen für dieses Schema auf. Dieser Aufruf gibt zurück NO , wenn die Richtlinie das Öffnen der URL blockiert. Wenn true zurückgegeben wird, kann die App mit einer leeren Identität aufrufen canOpenURL() , um festzustellen, ob die URL geöffnet werden kann. Zum Beispiel:

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. Wenn Ihre App FaceID noch nicht verwendet, stellen Sie sicher, dass der Schlüssel NSFaceIDUsageDescription Info.plist mit einer Standardmeldung konfiguriert ist. Dieser Schritt ist erforderlich, damit iOS dem Benutzer mitteilen kann, wie die App FaceID verwenden möchte. Eine Intune App-Schutzrichtlinieneinstellung ermöglicht die Verwendung von FaceID als Methode für den App-Zugriff, wenn sie vom IT-Administrator konfiguriert wurde.

  7. Verwenden Sie das IntuneMAMConfigurator-Tool, das im SDK-Repository enthalten ist, um die Konfiguration von Info.plist Ihrer App abzuschließen. Das Tool verfügt über drei Parameter:

    Eigenschaft Hinweise zur Verwendung
    -Ich <Path to the input plist>
    - e <Path to the entitlements file>
    - o (Optional) <Path to the output plist>

    Wenn der Parameter "-o" nicht angegeben wird, wird die Eingabedatei an Ort und Stelle geändert. Das Tool ist idempotent und sollte immer dann erneut ausgeführt werden, wenn Sie Änderungen an der Info.plist oder den Berechtigungen der App vornehmen. Sie sollten auch die neueste Version des Tools herunterladen und ausführen, wenn Sie das Intune SDK aktualisieren, falls sich die Konfigurationsanforderungen für Info.plist in der neuesten Version geändert haben.

Hinweis

Wenn Sie über eine SwiftUI-App verfügen, stellen Sie sicher, dass UISceneConfigurations das Wörterbuch in der UIApplicationSceneManifest Datei Info.pist nicht fehlt oder leer ist. Wenn Sie diese Einstellung nicht konfigurieren, kann dies verhindern, dass das Intune SDK Ihre App schützt, obwohl App-Schutzrichtlinien erfolgreich angewendet wurden. Wenn Sie keinen bestimmten Wert für UISceneConfigurations festgelegt haben, können Sie diese Standardkonfiguration verwenden:

<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>

Xcode-Buildeinstellungen und -Funktionen

In der App sollten sowohl "Swift Symbols entfernen"(STRIP_SWIFT_SYMBOLS) als auch "Bitcode aktivieren" (ENABLE_BITCODE) in den Xcode-Buildeinstellungen auf NO festgelegt sein. Wenn Ihre Anwendung die in Xcode 26+ verfügbare Funktion "Erweiterte Sicherheit" enthält, MÜSSEN Sie die Optionen "Zeiger authentifizieren" und "Schreibgeschützten Plattformspeicher aktivieren" deaktivieren.

Integrieren einer Dateianbietererweiterung

Dateianbietererweiterungen weisen bestimmte Speicheranforderungen auf, die die Integration des vollständigen SDK erschweren können. Um dies zu vereinfachen, gibt es eine statische Bibliothek libIntuneMAMSwiftFileProvider.xcframework, bei der es sich um eine abgespeckte Version des SDK speziell für Dateianbietererweiterungen handelt. Beachten Sie, dass diese Bibliothek für den Nicht-UI-Teil der FileProvider-Erweiterung vorgesehen ist. Sie müssen das vollständige SDK in die Dateianbieter-UI-Erweiterung integrieren.

Um eine dieser Bibliotheken in Ihre Dateianbietererweiterung zu integrieren, führen Sie die Schritte zum Integrieren des SDK als statische Bibliothek aus. Stellen Sie sicher, dass Sie die Einstellung einschließen ContainingAppBundleId .

Integrieren einer Erweiterung für nicht replizierte Dateianbieter

Ihre App verwendet einen nicht replizierten Dateianbieter, wenn sie das NSFileProviderExtension-Protokoll implementiert. Alle Dateianbieter, die vor iOS 16.0 erstellt wurden, sind nicht repliziert.

In - startProvidingItemAtURL:completionHandler: Überprüfen Sie, ob Sie Dateien mit [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles verschlüsseln sollten. Verwenden Sie encryptFile:forAccountId: API in IntuneMAMFileProtectionManager für die tatsächliche Dateiverschlüsselung. Geben Sie außerdem eine Kopie der Datei frei, wenn eine Verschlüsselung erforderlich ist, da Sie keine verschlüsselte Kopie der Datei in Ihrem Cloudspeicher speichern möchten.

In – importDocumentAtURL:toParentItemIdentifier:completionHandler: Überprüfen Sie, ob die Datei mit der API isFileEncrytped: in IntuneMAMFileProtectionManager verschlüsselt ist. Wenn dies der Fehler ist, entschlüsseln Sie sie mithilfe der decryptFile:toCopyPath:-API von IntuneMAMFileProtectionManager. Überprüfen Sie in Apps mit mehreren Identitäten auch anhand der API canReceiveSharedFile: in der IntuneMAMPolicy des Zielbesitzers, ob der Besitzer die Datei empfangen kann.

Integrieren einer Erweiterung für replizierte Dateianbieter

Ihre App verwendet einen replizierten Dateianbieter, wenn sie das Protokoll NSFileProviderReplicatedExtension (in iOS 16.0 hinzugefügt) implementiert.

In - fetchContentsForItemWithIdentifier:version:request:completionHandler: Überprüfen Sie, ob Sie Dateien mit [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles verschlüsseln sollten. Verwenden Sie die API encryptFile:forAccountId: in IntuneMAMFileProtectionManager für die tatsächliche Dateiverschlüsselung. Geben Sie eine Kopie der Datei frei, wenn eine Verschlüsselung erforderlich ist, da Sie keine verschlüsselte Kopie der Datei in Ihrem Cloudspeicher speichern möchten.

In – createItemBasedOnTemplate:fields:contents:options:request:completionHandler: Überprüfen Sie mithilfe der API isFileEncrypted: in IntuneMAMFileProtectionManager, ob die Datei verschlüsselt ist. Wenn dies der Fehler ist, entschlüsseln Sie sie mithilfe der decryptFile:toCopyPath:-API von IntuneMAMFileProtectionManager. Überprüfen Sie in Apps mit mehreren Identitäten auch anhand der API canReceiveSharedFile: in der IntuneMAMPolicy des Zielbesitzers, ob der Besitzer die Datei empfangen kann.

Überall dort, wo der replizierte Dateianbieter ein NSFileProviderItem erstellt und an das System übergibt, rufen Sie die intuneMAMFileProtectionManager-API protectFileProviderItem:forAccountId: mit der Besitzeridentität des Elements auf. Je nachdem, wo das NSFileProviderItem-Objekt erstellt und in Ihrer Erweiterung beibehalten wird, müssen Sie dies möglicherweise in jeder der Protokollmethoden von NSFileProviderReplicatedExtension tun.

Konfigurieren von Einstellungen für das Intune App SDK

Sie können das IntuneMAMSettings-Wörterbuch in der Datei Info.plist der Anwendung verwenden, um das Intune App SDK einzurichten und zu konfigurieren. Wenn das IntuneMAMSettings-Wörterbuch in Ihrer Datei "Info.plist" nicht angezeigt wird, sollten Sie es erstellen.

Im IntuneMAMSettings-Wörterbuch können Sie die folgenden unterstützten Einstellungen definieren, um das Intune App SDK zu konfigurieren.

In den vorherigen Abschnitten werden einige dieser Einstellungen behandelt, und einige gelten nicht für alle Apps.

Einstellung Typ Definition Pflichtfeld?
ADALClientId Zeichenfolge Der Microsoft Entra Clientbezeichner der App. Erforderlich für alle Apps.
ADALAuthority Zeichenfolge Die verwendete Microsoft Entra Autorität der App. Sie sollten Ihre eigene Umgebung verwenden, in der Microsoft Entra Konten konfiguriert sind. Weitere Informationen finden Sie unter Optionen für die Anwendungskonfiguration. Erforderlich, wenn es sich bei der App um eine benutzerdefinierte Branchenanwendung handelt, die für die Verwendung innerhalb eines einzelnen organization/Microsoft Entra Mandanten erstellt wurde. Wenn dieser Wert nicht vorhanden ist, wird die allgemeine Microsoft Entra-Autorität verwendet (nur für mehrinstanzenfähige Apps unterstützt).
ADALRedirectUri Zeichenfolge Der Microsoft Entra Umleitungs-URI der App. ADALRedirectUri oder ADALRedirectScheme ist für alle Apps erforderlich.
ADALRedirectScheme Zeichenfolge Das Microsoft Entra ID Umleitungsschema der App. Dies kann anstelle von ADALRedirectUri verwendet werden, wenn der Umleitungs-URI der Anwendung das Format scheme://bundle_idaufweist. ADALRedirectUri oder ADALRedirectScheme ist für alle Apps erforderlich.
ADALLogOverrideDisabled Boolean Gibt an, ob das SDK alle MSAL-Protokolle (einschließlich MSAL-Aufrufe von der App, falls vorhanden) an eine eigene Protokolldatei weitergibt. Der Standardwert ist NO. Legen Sie diesen Wert auf JA fest, wenn die App einen eigenen MSAL-Protokollrückruf festlegt. Optional.
ADALCacheKeychainGroupOverride Zeichenfolge Gibt die Schlüsselbundgruppe an, die anstelle von "com.microsoft.adalcache"für den MSAL-Cache verwendet werden soll. Das System stellt dies automatisch zur Laufzeit voran. Optional.
AppGroupIdentifiers Array aus Zeichenfolgen Array von App-Gruppen aus dem Abschnitt "Berechtigungen com.apple.security.application-groups " der App. Erforderlich, wenn die App Anwendungsgruppen verwendet.
ContainingAppBundleId Zeichenfolge Gibt die Bündel-ID der enthaltenden Anwendung der Erweiterung an. Erforderlich für iOS-Erweiterungen.
AutoEnrollOnLaunch Boolean Gibt an, ob die App versuchen soll, sich beim Start automatisch zu registrieren, wenn eine vorhandene verwaltete Identität erkannt wird und dies noch nicht geschehen ist. Der Standardwert ist NO.

Anmerkung: Wenn keine verwaltete Identität gefunden wird oder kein gültiges Token im MSAL-Cache verfügbar ist, schlägt die Registrierung automatisch fehl, es sei denn MAMPolicyRequired , der Wert ist JA.
Optional. Der Standardwert ist NO.
MAMPolicyRequired Boolean Gibt an, ob das Starten der App blockiert wird, wenn sie nicht über eine Intune App-Schutzrichtlinie verfügt. Der Standardwert ist NO.

Anmerkung: Apps können nicht an die App Store übermittelt werden, wenn diese Option auf JA festgelegt ist. Wenn sie auf JA festgelegt wird, AutoEnrollOnLaunch sollte auch JA sein.
Optional. Der Standardwert ist NO.
MAMPolicyWarnAbsent Boolean Gibt an, ob die App den Benutzer beim Start warnt, wenn keine Intune App-Schutzrichtlinie vorhanden ist.

Anmerkung: Benutzer können nach dem Schließen der Warnung weiterhin fortfahren.
Optional. Der Standardwert ist NO.
MultiIdentity Boolean Gibt an, ob die App mehrere Identitäten unterstützt. Weitere Informationen finden Sie in der Dokumentation zu mehreren Identitäten. Optional. Der Standardwert ist NO.
MultiIdentityCancelDisabled Boolean Deaktiviert die Schaltfläche "Abbrechen" auf Intune Bildschirmen der Benutzeroberfläche für bedingten Start in Anwendungen mit mehreren Identitäten. Wenn dies nicht auf JA festgelegt ist, muss die App den IntuneMAMSwitchIdentityResultCanceled Fehlercode behandeln. Weitere Informationen finden Sie unter Wechseln von Identitäten. Optional. Der Standardwert ist NO.
SafariViewControllerBlockedOverride Boolean Deaktiviert Intune SafariViewController-Hooks, um die MSAL-Authentifizierung über SFSafariViewController, SFAuthSession oder ASWebAuthSession zu aktivieren.

Anmerkung: Eine konfigurierte Aktivitätsschaltfläche wird nur angezeigt, wenn die Ansicht nicht verwaltet ist und auf JA festgelegt ist.
Optional. Der Standardwert ist NO.

Warnung: Kann zu Datenlecks führen, wenn sie falsch verwendet werden.
SplashIconFile
SplashIconFile~ipad
Zeichenfolge Gibt die Intune Begrüßungssymboldatei (Start) an. Optional.
SplashDuration Zahl Minimale Zeit in Sekunden, in der der Intune Startbildschirm angezeigt wird. Der Standardwert ist 1.5. Optional.
BackgroundColor Zeichenfolge Gibt die Hintergrundfarbe für Intune SDK-Ui-Komponenten an. Akzeptiert #XXXXXX oder einen Hexadenzwert ohne das Pfundzeichen. Optional. Standardmäßig wird die Systemhintergrundfarbe verwendet.
ForegroundColor Zeichenfolge Gibt die Vordergrund-/Textfarbe für Benutzeroberflächenkomponenten an. Akzeptiert #XXXXXX oder Hexadenz ohne Pfundzeichen. Optional. Standardmäßig wird die Systembezeichnungsfarbe verwendet.
AccentColor Zeichenfolge Gibt die Akzentfarbe für Ui-Komponenten (Schaltflächen, PIN-Feldmarkierungen) an. Akzeptiert #XXXXXX oder Hexadenz ohne Pfundzeichen. Optional. Der Standardwert ist Systemblau.
SecondaryBackgroundColor Zeichenfolge Gibt die sekundäre Hintergrundfarbe für MTD-Bildschirme an. Akzeptiert #XXXXXX oder Hexadenz ohne Pfundzeichen. Optional. Der Standardwert ist "Weiß".
SecondaryForegroundColor Zeichenfolge Gibt die sekundäre Vordergrundfarbe für MTD-Bildschirme an. Akzeptiert #XXXXXX oder Hexadenz ohne Pfundzeichen. Optional. Der Standardwert ist grau.
SupportsDarkMode Boolean Gibt an, ob Benutzeroberflächenfarben dem dunklen Systemmodus folgen, wenn keine expliziten Farben festgelegt sind. Optional. Der Standardwert ist JA.
MAMTelemetryDisabled Boolean Gibt an, ob Telemetriedaten an das Back-End gesendet werden. Optional. Der Standardwert ist NO.
MAMTelemetryUsePPE Boolean Sendet Telemetriedaten an das PPE-Back-End. Nützlich für das Testen von Apps, damit sich Daten nicht mit Kundendaten mischen. Optional. Der Standardwert ist NO.
MaxFileProtectionLevel Zeichenfolge Gibt die maximale Unterstützung NSFileProtectionType der App an. Überschreibt die Richtlinie, wenn der Dienst eine höhere Ebene sendet.

Mögliche Werte: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.

Bemerken: Mit NSFileProtectionCompleteverliert die App den Zugriff auf geschützte Dateien ca. 10 Sekunden nach dem Sperren des Geräts, wodurch Komponenten wie lokale Datenbanken unterbrochen werden können. Apps mit Sperrbildschirmbenutzeroberfläche sollten verwenden NSFileProtectionCompleteUntilFirstUserAuthentication.
Optional. Standardwert ist NSFileProtectionComplete.
OpenInActionExtension Boolean Legen Sie für Erweiterungen in Aktion öffnen auf JA fest. Weitere Informationen finden Sie unter Freigeben von Daten über UIActivityViewController. Optional.
TreatAllWebViewsAsUnmanaged Boolean Behandelt alle WebViews als nicht verwaltet für die Erzwingung von Ausschneiden, Kopieren und Einfügen. Weitere Informationen finden Sie unter Anzeigen von Webinhalten. Optional. Der Standardwert ist NO.
WebViewHandledURLSchemes Array aus Zeichenfolgen URL-Schemas, die von der WebView der App behandelt werden. Erforderlich, wenn Ihre WebView Links oder die JavaScript-Navigation verarbeitet.
DocumentBrowserFileCachePath Zeichenfolge Wenn Sie verwenden UIDocumentBrowserViewController, legen Sie einen Pfad (relativ zum App-Startverzeichnis) für entschlüsselte verwaltete Dateien fest. Optional. Standardwert ist /Documents/.
VerboseLoggingEnabled Boolean Aktiviert die ausführliche Protokollierung. Optional. Der Standardwert ist NO.
FinishLaunchingAtStartup Boolean Erforderlich bei Verwendung von [BGTaskScheduler registerForTaskWithIdentifier:]; muss JA sein. Optional. Der Standardwert ist NO.
ValuesToScrubFromLogging Array aus Zeichenfolgen Anwendungskonfigurationswerte, die aus Protokollen entfernt werden sollen. Kann auch über valuesToScrubFromLoggingIntuneMAMSettingsauf festgelegt werden. Optional.

Empfangen einer App-Schutzrichtlinie

Übersicht

Um Intune App-Schutzrichtlinie zu erhalten, müssen Apps eine Registrierungsanforderung beim Intune MAM-Dienst initiieren. Apps können im Intune Admin Center so konfiguriert werden, dass sie App-Schutzrichtlinien mit oder ohne Geräteregistrierung erhalten. Mobile Anwendungsverwaltung (Mobile Application Management, MAM) ermöglicht die Verwaltung von Apps durch Intune, ohne dass das Gerät bei Intune Mobile Device Management (MDM) registriert werden muss. In beiden Fällen ist die Registrierung beim Intune MAM-Dienst erforderlich, um die Richtlinie zu erhalten.

Wichtig

Das Intune App SDK für iOS verwendet 256-Bit-Verschlüsselungsschlüssel, wenn die Verschlüsselung durch App-Schutzrichtlinien aktiviert wird. Alle Apps benötigen eine aktuelle SDK-Version, um geschützte Datenfreigaben zu ermöglichen.

Apps, die bereits ADAL oder MSAL verwenden

Hinweis

Azure AD-Authentifizierung Library (ADAL) und Azure AD Graph-API sind veraltet. Weitere Informationen finden Sie unter Aktualisieren Ihrer Anwendungen für die Verwendung der Microsoft-Authentifizierungsbibliothek (MSAL) und der Microsoft Graph-API.

Apps, die bereits MSAL verwenden, sollten die registerAndEnrollAccountId -Methode auf der IntuneMAMEnrollmentManager instance aufrufen, nachdem der Benutzer erfolgreich authentifiziert wurde:

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

Bei erfolgreicher Anmeldung sendet MSAL das Ergebnis im MSALResult-Objekt zurück. Verwenden Sie tenantProfile.identifier in MSALResult als accountId-Parameter für die API.

Durch Aufrufen der registerAndEnrollAccountId -Methode registriert das SDK das Benutzerkonto und versucht, die App im Namen dieses Kontos zu registrieren. Wenn die Registrierung aus irgendeinem Grund fehlschlägt, wiederholt das SDK die Registrierung automatisch 24 Stunden später. Zu Debugzwecken kann die App über einen Delegaten Benachrichtigungen über die Ergebnisse von Registrierungsanforderungen empfangen.

Nachdem diese API aufgerufen wurde, kann die App weiterhin normal funktionieren. Wenn die Registrierung erfolgreich ist, benachrichtigt das SDK den Benutzer darüber, dass ein App-Neustart erforderlich ist. Zu diesem Zeitpunkt kann der Benutzer die App sofort neu starten.

[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];

Apps, die keine ADAL oder MSAL verwenden

Apps, die den Benutzer nicht mit ADAL oder MSAL anmelden, können weiterhin Eine App-Schutzrichtlinie vom Intune MAM-Dienst erhalten, indem sie die API aufrufen, damit das SDK diese Authentifizierung behandelt. Apps sollten dieses Verfahren verwenden, wenn sie keinen Benutzer mit Microsoft Entra ID authentifiziert haben, aber dennoch eine App-Schutzrichtlinie abrufen müssen, um Daten zu schützen. Ein Beispiel ist, wenn ein anderer Authentifizierungsdienst für die App-Anmeldung verwendet wird oder wenn die App die Anmeldung überhaupt nicht unterstützt. Dazu kann die Anwendung die loginAndEnrollAccount -Methode auf dem IntuneMAMEnrollmentManager instance aufrufen:

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

Durch Aufrufen dieser Methode fordert das SDK den Benutzer zur Eingabe von Anmeldeinformationen auf, wenn kein vorhandenes Token gefunden werden kann. Das SDK versucht dann, die App beim Intune MAM-Dienst im Namen des angegebenen Benutzerkontos zu registrieren. Die -Methode kann mit "nil" als Identität aufgerufen werden. In diesem Fall registriert sich das SDK mit dem vorhandenen verwalteten Benutzer auf dem Gerät (sofern MDM), oder fordert den Benutzer zur Eingabe eines Benutzernamens auf, wenn kein vorhandener Benutzer gefunden wird.

Wenn die Registrierung fehlschlägt, sollte die App in Erwägung ziehen, diese API zu einem späteren Zeitpunkt erneut aufzurufen, abhängig von den Details des Fehlers. Die App kann über einen Delegaten Benachrichtigungen zu den Ergebnissen von Registrierungsanforderungen empfangen.

Nachdem diese API aufgerufen wurde, kann die App weiterhin normal funktionieren. Wenn die Registrierung erfolgreich ist, benachrichtigt das SDK den Benutzer darüber, dass ein App-Neustart erforderlich ist. Nachdem die App verwaltet wurde, muss der wert der Microsoft Entra Objekt-ID mit enrolledAccountId in IntuneMAMEnrollmentManagerabgefragt werden. Verwenden Sie dies für alle MAM SDK-APIs, die die App für dieses registrierte Konto verwendet.

Beispiel:

[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];

Lassen Sie Intune die Authentifizierung und Registrierung beim Start verarbeiten.

Wenn das Intune SDK die gesamte Authentifizierung mit ADAL/MSAL und die Registrierung verarbeiten soll, bevor ihre App gestartet wird, und Ihre App immer App-Schutzrichtlinien erfordert, müssen Sie die API nicht verwendenloginAndEnrollAccount. Sie können die folgenden Einstellungen im IntuneMAMSettings-Wörterbuch in der Info.plist der App auf YES festlegen.

Einstellung Typ Definition
AutoEnrollOnLaunch Boolean Gibt an, ob die App versuchen soll, sich beim Start automatisch zu registrieren, wenn eine vorhandene verwaltete Identität erkannt wird und dies noch nicht geschehen ist. Der Standardwert ist NO.

Anmerkung: Wenn keine verwaltete Identität gefunden wird oder kein gültiges Token für die Identität im ADAL/MSAL-Cache verfügbar ist, schlägt der Registrierungsversuch automatisch fehl, ohne zur Eingabe von Anmeldeinformationen aufzufordern, es sei denn, die App legt ebenfalls auf JA festMAMPolicyRequired.
MAMPolicyRequired Boolean Gibt an, ob das Starten der App blockiert wird, wenn die App nicht über eine Intune App-Schutzrichtlinie verfügt. Der Standardwert ist NO.

Anmerkung: Apps können nicht an die App Store übermittelt werden, wobei MAMPolicyRequired auf JA festgelegt ist. Wenn Sie auf JA festlegenMAMPolicyRequired, AutoEnrollOnLaunch sollte auch auf JA festgelegt werden.

Wenn Sie diese Option für Ihre App auswählen, müssen Sie den Neustart Ihrer App nach der Registrierung nicht mehr durchführen.

Aufheben der Registrierung von Benutzerkonten

Bevor ein Benutzer von einer App abgemeldet wird, sollte die App die Registrierung des Benutzers beim SDK aufheben. Dieser Prozess stellt Folgendes sicher:

  1. Registrierungsversuche für das Konto des Benutzers werden nicht mehr durchgeführt.

  2. App-Schutz Richtlinie wird entfernt.

  3. Unternehmensdaten werden gelöscht, wenn die App eine selektive Zurücksetzung initiiert (optional).

Bevor der Benutzer abgemeldet wird, sollte die App die folgende Methode für die IntuneMAMEnrollmentManager instance aufrufen:

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

Diese Methode muss aufgerufen werden, bevor die Microsoft Entra Token des Benutzerkontos gelöscht werden. Das SDK benötigt die Microsoft Entra Token des Benutzerkontos, um bestimmte Anforderungen an den Intune MAM-Dienst im Namen des Benutzers zu senden.

Wenn die App die Unternehmensdaten des Benutzers selbst löscht, kann das doWipe Flag auf false festgelegt werden. Andernfalls kann das SDK eine selektive Zurücksetzung initiieren. Diese Aktion führt zu einem Aufruf des selektiven Zurücksetzungsdelegaten der App.

Beispiel:

[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];

Status-, Ergebnis- und Debugbenachrichtigungen

Die App kann status-, Ergebnis- und Debugbenachrichtigungen zu den folgenden Anforderungen an den Intune MAM-Dienst empfangen:

  • Registrierungsanforderungen
  • Richtlinienaktualisierungsanforderungen
  • Aufheben der Registrierung von Anforderungen

Die Benachrichtigungen werden über Delegatmethoden in IntuneMAMEnrollmentDelegate.hdargestellt:

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

Diese Delegatmethoden geben ein IntuneMAMEnrollmentStatus Objekt zurück, das die folgenden Informationen enthält:

  • Die accountId (Objekt-ID) des Kontos, das der Anforderung zugeordnet ist.
  • Die Identität (UPN) des Kontos, das der Anforderung zugeordnet ist
  • Ein status Code, der das Ergebnis der Anforderung angibt.
  • Eine Fehlerzeichenfolge mit einer Beschreibung des status Codes
  • Ein NSError -Objekt. Dieses Objekt wird in IntuneMAMEnrollmentStatus.hzusammen mit den spezifischen status Codes definiert, die zurückgegeben werden können.

Beispielcode

Im Folgenden finden Sie Beispielimplementierungen der Delegatmethoden:

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

Anwendungsneustart

Wenn eine App zum ersten Mal MAM-Richtlinien empfängt, muss sie neu gestartet werden, um die erforderlichen Hooks anzuwenden. Um die App zu benachrichtigen, dass ein Neustart erfolgen muss, stellt das SDK eine Delegatmethode in bereit IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

Der Rückgabewert dieser Methode teilt dem SDK mit, ob die Anwendung den erforderlichen Neustart verarbeiten muss:

  • Wenn true zurückgegeben wird, muss die Anwendung den Neustart verarbeiten.

  • Wenn false zurückgegeben wird, startet das SDK die Anwendung neu, nachdem diese Methode zurückgegeben wurde. Das SDK zeigt sofort ein Dialogfeld an, in dem der Benutzer aufgefordert wird, die Anwendung neu zu starten.

Hinweis

.NET MAUI-Apps erfordern keinen Neustart.

Exitkriterien

Nachdem Sie das Build-Plug-In konfiguriert oder das Befehlszeilentool in Ihren Buildprozess integriert haben, überprüfen Sie, ob es erfolgreich ausgeführt wird:

  • Stellen Sie sicher, dass Ihr Build erfolgreich kompiliert und erstellt wird.
  • Starten Sie Ihre kompilierte App, melden Sie sich mit einem Microsoft Entra Benutzer an, der nicht auf die App-Schutzrichtlinie ausgerichtet ist, und vergewissern Sie sich, dass die App wie erwartet funktioniert.
  • Melden Sie sich ab, und wiederholen Sie diesen Test mit einem Microsoft Entra Benutzer, für den die App-Schutzrichtlinie gilt, und vergewissern Sie sich, dass die App jetzt von Intune verwaltet und neu gestartet wird.

An diesem Punkt der Integration kann Ihre App jetzt App-Schutzrichtlinie empfangen und erzwingen. Führen Sie die folgenden Tests aus, um die Integration zu überprüfen.

First Policy Application Test

Führen Sie zuerst den folgenden Test aus, um sich mit der vollständigen Endbenutzererfahrung der Richtlinienanwendung in Ihrer App vertraut zu machen:

  1. Erstellen Sie eine iOS-App-Schutzrichtlinie im Microsoft Intune Admin Center. Konfigurieren Sie für diesen Test die Richtlinie:
    • Behalten Sie unter Zugriffsanforderungen die Standardeinstellungen bei. Insbesondere sollte "PIN für Den Zugriff" "Erforderlich" sein.
  2. Stellen Sie sicher, dass die App-Schutzrichtlinie für Ihre Anwendung gilt. Möglicherweise müssen Sie die Bündel-ID der Anwendung im Richtlinienerstellungs-Assistenten manuell hinzufügen.
  3. Weisen Sie die App-Schutzrichtlinie einer Benutzergruppe zu, die Ihr Testkonto enthält.
  4. Installieren Sie Ihre Anwendung.
  5. Melden Sie sich bei Ihrer Anwendung mit Ihrem Testkonto an, für das die App-Schutzrichtlinie gilt.
  6. Vergewissern Sie sich, dass Sie mit einem Intune verwalteten Bildschirm aufgefordert werden, und bestätigen Sie, dass die Eingabeaufforderung die App neu startet. Dieser Bildschirm zeigt an, dass das SDK die Richtlinie für dieses Konto erfolgreich abruft.
  7. Erstellen Sie eine PIN, wenn Sie aufgefordert werden, eine App-PIN festzulegen.
  8. Melden Sie das verwaltete Konto von Ihrer Anwendung ab.
  9. Navigieren Sie in Ihrer Anwendung, und vergewissern Sie sich, dass Ihre App nach Möglichkeit ohne Anmeldung wie erwartet funktioniert.

Diese Liste der Schritte ist ein *bares Minimum- Test, um zu bestätigen, dass Ihre App das Konto ordnungsgemäß registriert, den Authentifizierungsrückruf registriert und die Registrierung des Kontos auf hebt. Führen Sie die folgenden Tests aus, um gründlicher zu überprüfen, wie andere App-Schutzrichtlinie-Einstellungen das Verhalten Ihrer Anwendung ändern.

Nächste Schritte

Nachdem Sie alle Exitkriterien erfüllt haben, fahren Sie mit Phase 4: App-Teilnahmefeatures fort.