Freigeben über


Phase 3: Integration des Intune SDK 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, auf dem Xcode 14.0 oder höher installiert ist.

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

  • Lesen Sie die Lizenzbedingungen des 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 Intune App SDK-Framework. Es wird empfohlen, dieses Framework mit Ihrer App/Ihren Erweiterungen zu verknüpfen, um die Intune-Clientanwendungsverwaltung zu aktivieren. Einige Entwickler bevorzugen jedoch möglicherweise die Leistungsvorteile des statischen Frameworks (IntuneMAMStatic.xcframework). Siehe unten.

  • IntuneMAMStatic.xcframework: Das statische Intune App SDK-Framework. 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, da der ausführbare Code in jede App-/Erweiterungsbinärdatei eingebettet ist. 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 des 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 die 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 Intune App SDK-Bibliothek. 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 wird in einem zukünftigen Update entfernt.

Funktionsweise des Intune App SDK

Das Ziel des Intune App SDK für iOS ist das Hinzufügen von Verwaltungsfunktionen zu iOS-Anwendungen mit minimalen Codeänderungen. 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 enthält den Prozessablauf des 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 App-Schutzrichtlinie-Einstellungen 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

    4. Wenn Sie die Berechtigungsdatei direkt bearbeiten, anstatt die oben gezeigte Xcode-Benutzeroberfläche zum Erstellen der Keychainzugriffsgruppen zu verwenden, stellen Sie den Keychain-Zugriffsgruppen $(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ür jedes Protokoll, das in diesem Array aufgeführt ist, muss dem Array auch eine Kopie des Protokolls hinzugefügt werden, das mit -intunemam angefügt wird. Darüber hinaus http-intunemamsollten , https-intunemam, microsoft-edge-http-intunemam, microsoft-edge-https-intunemam, , smart-ns, zips, lacoonsecurity, lookoutwork-asesmsecwanderabetteractiveshieldmvisionmobileskycurescmxund intunemam-mtd dem Array hinzugefügt werden. Wenn Ihre App das mailto:-Protokoll verwendet, ms-outlook-intunemam sollte auch dem Array hinzugefügt werden. Achten Sie darauf, ihre Änderungen zu speichern, bevor Sie mit dem nächsten Schritt fortfahren.

    Wenn der App in der LSApplicationQueriesSchemes-Liste nicht mehr speicherplatz vorhanden ist, kann sie die Schemas "-intunemam" für Apps entfernen, von denen bekannt ist, dass sie auch das Intune MAM SDK implementieren. Wenn die App "scheme-intunemam" aus der LSApplicationQueriesSchemes-Liste entfernt, canOpenURL() gibt möglicherweise falsche Antworten für diese Schemas zurück. Um dieses Problem zu beheben, sollte die App stattdessen für dieses Schema aufrufen [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] . 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 Änderungen an der Info.plist oder den Berechtigungen der App vorgenommen wurden. Sie sollten beim Aktualisieren des Intune SDK auch die neueste Version des Tools herunterladen und ausführen, falls sich die Konfigurationsanforderungen für Info.plist in der neuesten Version geändert haben.

Xcode-Buildeinstellungen

Für die App sollten sowohl "Swift-Symbole entfernen"(STRIP_SWIFT_SYMBOLS) als auch "Bitcode aktivieren" (ENABLE_BITCODE) auf NO festgelegt sein.

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 dies für den Nicht-UI-Teil der FileProvider-Erweiterung gilt. 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, wie oben gezeigt. 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, werden nicht repliziert.

In - startProvidingItemAtURL:completionHandler: Überprüfen Sie, ob Sie Dateien mit [[IntuneMAMPolicy-Instanz]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 isFileEncrytped: API in IntuneMAMFileProtectionManager verschlüsselt ist. Wenn dies der Fall ist, entschlüsseln Sie sie mit 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-Instanz]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 – createItemBasedOnTemplate:fields:contents:options:request:completionHandler: Überprüfen Sie, ob die Datei mit isFileEncrypted: API in IntuneMAMFileProtectionManager verschlüsselt ist. Wenn dies der Fall ist, entschlüsseln Sie sie mit 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.

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

Einige dieser Einstellungen wurden möglicherweise in den vorherigen Abschnitten 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 wurden. 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 einer einzelnen Organisation bzw. eines Einzelnen Microsoft Entra-Mandanten erstellt wurde. Wenn dieser Wert nicht vorhanden ist, wird die allgemeine Microsoft Entra-Autorität verwendet (die nur für mehrinstanzenfähige Anwendungen unterstützt wird).
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 Boolesch 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 festsetzt. Optional.
ADALCacheKeychainGroupOverride Zeichenfolge Gibt die Keychaingruppe an, die für den MSAL-Cache anstelle von "com.microsoft.adalcache" verwendet werden soll. Beachten Sie, dass dies nicht über das Präfix app-id verfügt. Dieser wird der bereitgestellten Zeichenfolge zur Laufzeit vorangestellt. Optional.
AppGroupIdentifiers Array aus Zeichenfolgen Array von App-Gruppen aus dem Abschnitt mit den Berechtigungen der App com.apple.security.application-groups. 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 Boolesch 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.

Hinweise: Wenn keine verwaltete Identität gefunden wird oder kein gültiges Token für die Identität im MSAL-Cache verfügbar ist, schlägt der Registrierungsversuch ohne Aufforderung zur Eingabe von Anmeldeinformationen im Hintergrund fehl, es sei denn, die App hat MAMPolicyRequired ebenfalls auf YES festgelegt.
Optional. Der Standardwert ist nein.
MAMPolicyRequired Boolesch Gibt an, ob das Starten der App blockiert wird, wenn die App nicht über eine Intune-App-Schutzrichtlinie verfügt. Der Standardwert ist NO.

Hinweise: Apps können nicht an den App Store übermittelt werden, wenn MAMPolicyRequired auf YES festgelegt ist. Wenn MamPolicyRequired auf YES festgelegt wird, sollte AutoEnrollOnLaunch ebenfalls auf YES festgelegt werden.
Optional. Der Standardwert ist nein.
MAMPolicyWarnAbsent Boolesch Gibt an, ob die App den Benutzer beim Starten warnt, wenn die App keine Intune-App-Schutzrichtlinie enthält.

Hinweis: Benutzer dürfen die App weiterhin ohne Richtlinie verwenden, nachdem die Warnung geschlossen wurde.
Optional. Der Standardwert ist nein.
MultiIdentity Boolesch Gibt an, ob die App mehrere Identitäten unterstützt. Optional. Der Standardwert ist nein.
SafariViewControllerBlockedOverride Boolesch Deaktiviert die SafariViewController-Hooks von Intune, um die MSAL-Authentifizierung über SFSafariViewController, SFAuthSession oder ASWebAuthSession zu aktivieren.

Hinweis: Die Aktivitätsschaltflächeneigenschaft SFSafariViewControllerConfiguration wird vom verwalteten Safari View Controller von Intune nicht unterstützt. Eine konfigurierte Aktivitätsschaltfläche wird im SafariViewController nur angezeigt, wenn die Ansicht nicht verwaltet ist und SafariViewControllerBlockedOverride auf Ja festgelegt ist.
Optional. Der Standardwert ist nein. WARNUNG: Kann bei unsachgemäßer Verwendung zu Datenlecks führen. Aktivieren Sie diese Option nur, wenn dies unbedingt erforderlich ist. Weitere Informationen finden Sie unter Besondere Überlegungen bei der Verwendung von MSAL für die app-initiierte Authentifizierung.
SplashIconFile
SplashIconFile~ipad
Zeichenfolge Gibt die Intune-Begrüßungssymboldatei (Start) an. Optional.
SplashDuration Zahl Minimale Zeitspanne in Sekunden, in der der Intune-Startbildschirm beim Anwendungsstart angezeigt wird. Der Standardwert ist 1.5. Optional.
BackgroundColor Zeichenfolge Gibt die Hintergrundfarbe für die Ui-Komponenten des Intune SDK an. Akzeptiert eine hexadezimale RGB-Zeichenfolge in Form von #XXXXXX, wobei X zwischen 0 und 9 oder A-F liegen kann. Das Pfundzeichen wird möglicherweise weggelassen. Optional. Standardmäßig wird die Hintergrundfarbe des Systems verwendet, die je nach iOS-Version und der Einstellung für den dunklen iOS-Modus variieren kann.
ForegroundColor Zeichenfolge Gibt die Vordergrundfarbe für die Ui-Komponenten des Intune SDK an, z. B. die Textfarbe. Akzeptiert eine hexadezimale RGB-Zeichenfolge in Form von #XXXXXX, wobei X zwischen 0 und 9 oder A-F liegen kann. Das Pfundzeichen wird möglicherweise weggelassen. Optional. Standardmäßig wird die Systembezeichnungsfarbe verwendet, die je nach iOS-Version und der Einstellung für den dunklen iOS-Modus variieren kann.
AccentColor Zeichenfolge Gibt die Akzentfarbe für die Ui-Komponenten des Intune SDK an, z. B. die Textfarbe der Schaltfläche und die Hervorhebungsfarbe des PIN-Felds. Akzeptiert eine hexadezimale RGB-Zeichenfolge in Form von #XXXXXX, wobei X zwischen 0 und 9 oder A-F liegen kann. Das Pfundzeichen wird möglicherweise weggelassen. Optional. Der Standardwert ist Systemblau.
SecondaryBackgroundColor Zeichenfolge Gibt die sekundäre Hintergrundfarbe für die MTD-Bildschirme an. Akzeptiert eine hexadezimale RGB-Zeichenfolge in Form von #XXXXXX, wobei X zwischen 0 und 9 oder A-F liegen kann. Das Pfundzeichen wird möglicherweise weggelassen. Optional. Der Standardwert ist "Weiß".
SecondaryForegroundColor Zeichenfolge Gibt die sekundäre Vordergrundfarbe für die MTD-Bildschirme an, z. B. die Fußnotenfarbe. Akzeptiert eine hexadezimale RGB-Zeichenfolge in Form von #XXXXXX, wobei X zwischen 0 und 9 oder A-F liegen kann. Das Pfundzeichen wird möglicherweise weggelassen. Optional. Der Standardwert ist grau.
SupportsDarkMode Boolesch Gibt an, ob das Farbschema der Benutzeroberfläche des Intune SDK die Einstellung für den dunklen Systemmodus beachten soll, wenn kein expliziter Wert für BackgroundColor/ForegroundColor/AccentColor festgelegt wurde. Optional. Der Standardwert ist ja.
MAMTelemetryDisabled Boolesch Gibt an, ob das SDK keine Telemetriedaten an sein Back-End sendet. Optional. Der Standardwert ist nein.
MAMTelemetryUsePPE Boolesch Gibt an, ob das MAM SDK Daten an das PPE-Telemetrie-Back-End sendet. Verwenden Sie dies, wenn Sie Ihre Apps mit der Intune-Richtlinie testen, damit sich die Testtelemetriedaten nicht mit Kundendaten vermischen. Optional. Der Standardwert ist nein.
MaxFileProtectionLevel Zeichenfolge Ermöglicht der App die Angabe des Maximalwerts NSFileProtectionType , den sie unterstützen kann. Dieser Wert überschreibt die vom Dienst gesendete Richtlinie, wenn die Ebene höher ist als die von der Anwendung unterstützte. Mögliche Werte: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone. Hinweis: Bei der höchsten Dateischutzebene (NSFileProtectionComplete) kann nur auf geschützte Dateien zugegriffen werden, während das Gerät entsperrt ist. 10 Sekunden nach dem Sperren des Geräts verliert die App den Zugriff auf geschützte Dateien. In einigen Fällen kann dies zu einem Verlust des Zugriffs auf interne Komponenten (z. B. MySQL-Datenbanken) führen, was zu unerwartetem Verhalten führt. Es wird empfohlen, dass Anwendungen, die Sperrbildschirm-UI-Elemente darstellen, diesen Wert auf NSFileProtectionCompleteUntilFirstUserAuthenticationfestlegen. Optional. Standardwert ist NSFileProtectionComplete.
OpenInActionExtension Boolesch Legen Sie für Erweiterungen in Aktion öffnen auf JA fest. Weitere Informationen finden Sie im Abschnitt Freigeben von Daten über UIActivityViewController .
WebViewHandledURLSchemes Array von Zeichenfolgen Gibt die URL-Schemas an, die die WebView Ihrer App verarbeitet. Erforderlich, wenn Ihre App eine WebView verwendet, die URLs über Links und/oder JavaScript verarbeitet.
DocumentBrowserFileCachePath Zeichenfolge Wenn Ihre App zum Durchsuchen von UIDocumentBrowserViewController Dateien in verschiedenen Dateianbietern verwendet, können Sie diesen Pfad relativ zum Basisverzeichnis in der Anwendungssandbox festlegen, damit das Intune SDK entschlüsselte verwaltete Dateien in diesem Ordner ablegen kann. Optional. Standardmäßig wird das /Documents/ Verzeichnis verwendet.
VerboseLoggingEnabled Boolesch Wenn ja festgelegt, meldet sich Intune im ausführlichen Modus an. Optional. Der Standardwert ist NO.
FinishLaunchingAtStartup Boolesch Wenn die App verwendet [BGTaskScheduler registerForTaskWithIdentifier:] , sollte diese Einstellung auf JA festgelegt werden. Optional. Der Standardwert ist NO.
ValuesToScrubFromLogging Array von Zeichenfolgen Gibt Anwendungskonfigurationswerte an, die aus den Protokollen entfernt werden sollen. Alternativ kann der valuesToScrubFromLogging-Eigenschaft der IntuneMAMSettings-Klasse ein Array von Zeichenfolgen für das gleiche Verhalten zugewiesen werden. Optional.

Empfangen einer App-Schutzrichtlinie

Übersicht

Um die 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. Die Verwaltung mobiler Anwendungen (Mobile Application Management, MAM) ermöglicht die Verwaltung von Apps durch Intune, ohne dass das Gerät bei der Verwaltung mobiler Geräte (Mobile Device Management, MDM) registriert werden muss. In beiden Fällen ist die Registrierung beim Intune MAM-Dienst erforderlich, um eine 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 ist. Alle Apps benötigen eine aktuelle SDK-Version, um geschützte Datenfreigaben zu ermöglichen.

Apps, die bereits ADAL oder MSAL verwenden

Hinweis

Die Azure AD-Authentifizierungsbibliothek (ADAL) und die 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 für die IntuneMAMEnrollmentManager -Instanz aufrufen, nachdem der Benutzer erfolgreich authentifiziert wurde:

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

Bei erfolgreicher Anmeldung sendet MSAL das Ergebnis im MSALResult-Objekt zurück. Verwenden Sie tenantProfile.identifier in MSALResult als accountId-Parameter für die obige 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, versucht das SDK die Registrierung 24 Stunden später automatisch erneut. 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, 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 verarbeitet. Apps sollten diese Technik verwenden, wenn sie einen Benutzer nicht mit der 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. Zu diesem Ziel kann die Anwendung die loginAndEnrollAccount -Methode für die IntuneMAMEnrollmentManager -Instanz aufrufen:

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

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 im Namen des angegebenen Benutzerkontos beim Intune MAM-Dienst 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 (im Fall von 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, dass ein App-Neustart erforderlich ist. Nachdem die App verwaltet wurde, muss der Wert der 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"];

Intune die Authentifizierung und Registrierung beim Start übernehmen

Wenn sie möchten, dass das Intune SDK die gesamte Authentifizierung mit ADAL/MSAL und die Registrierung vor dem Start Ihrer App verarbeiten soll und Ihre App immer eine APP-Richtlinie erfordert, müssen Sie die API nicht verwenden loginAndEnrollAccount . Sie können einfach die beiden folgenden Einstellungen im IntuneMAMSettings-Wörterbuch in der App-Datei "Info.plist" auf YES festlegen.

Einstellung Typ Definition
AutoEnrollOnLaunch Boolesch 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.

Hinweis: 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 ohne Aufforderung zur Eingabe von Anmeldeinformationen im Hintergrund fehl, es sei denn, die App hat MAMPolicyRequired ebenfalls auf YES festgelegt.
MAMPolicyRequired Boolesch Gibt an, ob das Starten der App blockiert wird, wenn die App nicht über eine Intune-App-Schutzrichtlinie verfügt. Der Standardwert ist NO.

Hinweis: Apps können nicht an den App Store übermittelt werden, wenn MAMPolicyRequired auf YES festgelegt ist. Wenn MamPolicyRequired auf YES festgelegt wird, sollte AutoEnrollOnLaunch ebenfalls auf YES 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. Dadurch wird Folgendes sichergestellt:

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

  2. Die App-Schutzrichtlinie wird entfernt.

  3. Alle 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 -Instanz aufrufen:

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

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 im Namen des Benutzers bestimmte Anforderungen an den Intune MAM-Dienst 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. Dies 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 Statuscode, der das Ergebnis der Anforderung angibt.
  • Eine Fehlerzeichenfolge mit einer Beschreibung des Statuscodes
  • Ein NSError -Objekt. Dieses Objekt wird zusammen mit den spezifischen Statuscodes, die zurückgegeben werden können, in IntuneMAMEnrollmentStatus.hdefiniert.

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.

Exitkriterien

Nachdem Sie entweder 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 abzielt, und vergewissern Sie sich, dass die App wie erwartet funktioniert.
  • Melden Sie sich ab, und wiederholen Sie diesen Test mit einem Microsoft Entra-Benutzer, der auf die App-Schutzrichtlinie abzielt , 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 von 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.