Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieser Leitfaden ist in mehrere Abschnitte 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 neue Konten für die MAM-Verwaltung nach der Authentifizierung mit MSAL.
- Um Unternehmensdaten zu entfernen, heben Sie die Registrierung von Konten beim Abmelden 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 auf iOS 16.0 oder höher ausgerichtet sein.
Lesen Sie die Lizenzbedingungen des Intune App SDK für iOS. Drucken Sie eine Kopie der Lizenzbedingungen aus und bewahren Sie sie für Ihre Unterlagen auf. 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.
Was befindet sich im SDK-Repository?
IntuneMAMSwift.xcframework: Das dynamische Framework des Intune App SDK. Es wird empfohlen, dieses Framework mit Ihrer/Ihren Apps/Erweiterungen zu verknüpfen, um die Verwaltung von Intune-Clientanwendungen zu aktivieren. Einige Entwickler bevorzugen jedoch möglicherweise die Leistungsvorteile des statischen Frameworks (IntuneMAMStatic.xcframework).
IntuneMAMStatic.xcframework: Das statische Framework des Intune App SDK. Entwickler könnten sich dafür entscheiden, das statische Framework anstelle des dynamischen Frameworks zu verknüpfen. Da der ausführbare Code aus einem statischen Framework zur Build-Zeit direkt in die App/Erweiterungs-Binärdatei eingebettet wird, bietet die Verwendung der statischen Bibliothek einige Leistungsvorteile beim Startzeitpunkt. Wenn Ihre App jedoch Erweiterungen enthält, führt die Verknüpfung des statischen Frameworks mit der App und den Erweiterungen zu einer größeren App-Paketgröße. Der ausführbare Code wird in jede App/Erweiterungs-Binä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 Intune App SDK Swift Stub-Framework. Dieses Framework ist eine erforderliche Abhängigkeit sowohl von IntuneMAMSwift.xcframework als auch von IntuneMAMStatic.xcframework, die Apps/Erweiterungen verknüpfen müssen.
IntuneMAMConfigurator: Ein Tool zum Konfigurieren der Info.plist der App oder Erweiterung mit den minimal erforderlichen Änderungen für die Intune-Verwaltung. Je nach Funktionalität Ihrer App oder Erweiterung müssen Sie möglicherweise weitere manuelle Änderungen an der Info.plist vornehmen.
libIntuneMAMSwift.xcframework: Die statische Bibliothek des 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 entweder 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 die das SDK angewiesen ist. Das Ressourcenpaket ist nur für Apps erforderlich, die die veraltete statische Bibliothek (libIntuneMAMSwift.xcframework) integrieren und entfernt sie in einem zukünftigen Update.
Funktionsweise des Intune App SDK
Das Ziel des Intune App SDK für iOS ist es, iOS-Anwendungen mit minimalen Codeänderungen Verwaltungsfunktionen hinzuzufügen. Je weniger Änderungen am Code vorgenommen werden, desto kürzer ist die Markteinführung, ohne jedoch die Konsistenz und Stabilität Ihrer mobilen Anwendung zu beeinträchtigen.
Ablauf
Das folgende Diagramm zeigt den Prozessfluss des Intune App SDK für iOS:
Integrieren des SDK in Ihre mobile App
Wichtig
Intune veröffentlicht regelmäßig Updates für das Intune App SDK. Überprüfen Sie das Intune App SDK für iOS regelmäßig auf Updates, und integrieren Sie es in den Veröffentlichungszyklus Ihrer Softwareentwicklung, um sicherzustellen, dass Ihre Apps die neuesten App-Schutzrichtlinieneinstellungen unterstützen.
Führen Sie die folgenden Schritte aus, um das Intune App SDK zu aktivieren:
Verknüpfen Sie entweder
IntuneMAMSwift.xcframeworkoderIntuneMAMStatic.xcframeworkmit Ihrem Ziel: Ziehen Sie das xcframework-Bundle in die Liste Frameworks, Bibliotheken und eingebettete Inhalte des Projektziels. Wiederholen Sie diese Schritte fürIntuneMAMSwiftStub.xcframework. Wählen Sie für Ihre Haupt-App in der Spalte "Einbetten" für beide hinzugefügten xcframeworks "Einbetten & Signieren" aus. Wählen Sie für alle Erweiterungen "Nicht einbetten" aus.
Fügen Sie diese iOS-Frameworks zum Projekt 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
Aktivieren Sie die Schlüsselbundfreigabe (sofern nicht bereits aktiviert), indem Sie in jedem Projektziel "Funktionen" auswählen und den Schalter "Schlüsselbundfreigabe" 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 Platzhalterzeichen unterstützen. Sie können dies überprüfen, indem Sie die .mobileprovision-Datei in einem Texteditor öffnen, nach keychain-access-groups suchen und sicherstellen, dass Sie über ein Platzhalterzeichen verfügen. Zum Beispiel:
<key>keychain-access-groups</key> <array> <string>YOURBUNDLESEEDID.*</string> </array>Nachdem Sie die Schlüsselbundfreigabe aktiviert haben, führen Sie die Schritte aus, um eine separate Zugriffsgruppe zu erstellen, in der das Intune App SDK seine Daten speichert. Sie können eine Schlüsselbundzugriffsgruppe über die Benutzeroberfläche oder mithilfe der Berechtigungsdatei erstellen. Wenn Sie die Benutzeroberfläche zum Erstellen der Schlüsselbundzugriffsgruppe verwenden, stellen Sie sicher, dass Sie die folgenden Schritte ausführen:
Wenn für Ihre mobile App keine Schlüsselbundzugriffsgruppen definiert sind, fügen Sie die Paket-ID der App als erste Gruppe hinzu.
Fügen Sie die freigegebene Schlüsselbundgruppe
com.microsoft.intune.mamIhren vorhandenen Zugriffsgruppen hinzu. Das Intune App SDK verwendet diese Zugriffsgruppe zum Speichern von Daten.Fügen Sie Ihren vorhandenen Zugriffsgruppen hinzu
com.microsoft.adalcache.
Hinweis
Wenn Sie MSAL so konfiguriert haben, dass statt der Standardeinstellung eine
com.microsoft.adalcachebenutzerdefinierte Schlüsselbundzugriffsgruppe verwendet wird, müssen Sie diese Schlüsselbundzugriffsgruppe hier nicht angeben. Geben Sie stattdessen die benutzerdefinierte Schlüsselbundgruppe an. Sie sollten Intune außerdem so konfigurieren, dass dieselbe benutzerdefinierte Zugriffsgruppe über die Einstellung ADALCacheKeychainGroupOverride im IntuneMAMSettings Info.plist-Wörterbuch verwendet wird.Wenn Sie die Berechtigungsdatei direkt bearbeiten, anstatt die Xcode-Benutzeroberfläche zum Erstellen der Schlüsselbundzugriffsgruppen zu verwenden, stellen Sie den Schlüsselbundzugriffsgruppen (
$(AppIdentifierPrefix)Xcode verarbeitet 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, hätte die Aktivierung der Schlüsselbundfreigabe (Schritt 3) dazu führen müssen, dass Xcode eine für Ihre App generiert hat. Stellen Sie sicher, dass die App-Paket-ID der erste Eintrag in der Liste ist.
Schließen Sie jedes Protokoll, an
UIApplication canOpenURLdas Ihre App übergeben wird, in dasLSApplicationQueriesSchemesArray der Info.plist-Datei Ihrer App ein. Fügen Sie für jedes in diesem Array aufgeführte Protokoll eine Kopie des Protokolls hinzu, das an das Array angehängt ist-intunemam. Fügen Sie dem Array außerdem diese Werte hinzu:http-intunemam,https-intunemam,microsoft-edge-http-intunemam,microsoft-edge-https-intunemamzipswanderalookoutwork-aseskycurelacoonsecuritysmart-nssmsecmvisionmobilebetteractiveshieldscmxund .intunemam-mtdWenn Ihre App das mailto:-Protokoll verwendet, fügen Sie dem Array ebenfalls etwas hinzums-outlook-intunemam. Speichern Sie Ihre Änderungen, bevor Sie mit dem nächsten Schritt fortfahren.Wenn der App in der Liste LSApplicationQueriesSchemes der Platz ausgeht, kann sie die "-intunemam" -Schemas für Apps entfernen, von denen bekannt ist, dass sie auch das Intune MAM SDK implementieren. Wenn die App "scheme-intunemam" aus der Liste LSApplicationQueriesSchemes entfernt,
canOpenURL()kann für diese Schemas möglicherweise falsche Antworten zurückgegeben werden. Um dieses Problem zu beheben, fordern Sie stattdessen dieses Schema an[IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES]. Dieser Aufruf wird zurückgegebenNO, wenn die Richtlinie das Öffnen der URL blockiert. Wenn "true" zurückgegeben wird, kann die App mit einer leeren Identität aufrufencanOpenURL(), um zu ermitteln, 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]; }]; }Wenn Ihre App FaceID noch nicht verwendet, stellen Sie sicher, dass der NSFaceIDUsageDescription-Schlüssel Info.plist mit einer Standardmeldung konfiguriert ist. Dieser Schritt ist erforderlich, damit iOS den Benutzer darüber informieren kann, wie die App FaceID verwenden möchte. Eine Richtlinieneinstellung für den Intune-App-Schutz ermöglicht die Verwendung von FaceID als Methode für den App-Zugriff, wenn diese vom IT-Administrator konfiguriert wurde.
Verwenden Sie das IntuneMAMConfigurator-Tool, das im SDK-Repository enthalten ist, um die Konfiguration der 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 ist, wird die Eingabedatei direkt 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 das Intune SDK Ihre App trotz erfolgreicher Anwendung von App-Schutzrichtlinien nicht schützen.
Wenn Sie keinen bestimmten Wert für die 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 in den Xcode-Build-Einstellungen sowohl "Swift-Symbole entfernen" (STRIP_SWIFT_SYMBOLS) als auch "Bitcode aktivieren" (ENABLE_BITCODE) auf NEIN gesetzt sein. Wenn Ihre Anwendung die in Xcode 26+ verfügbare Funktion "Erhöhte Sicherheit" enthält, MÜSSEN Sie die Optionen "Zeiger authentifizieren" und "Schreibgeschützten Plattformspeicher aktivieren" deaktivieren.
Integrieren einer Dateianbietererweiterung
Dateianbietererweiterungen haben bestimmte Speicheranforderungen, 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-Benutzeroberflächenerweiterung integrieren.
Führen Sie die Schritte zum Integrieren des SDK als statische Bibliothek aus, um eine dieser Bibliotheken in Ihre Dateianbietererweiterung zu integrieren. Stellen Sie sicher, dass Sie die Einstellung angeben ContainingAppBundleId .
Integration einer nicht replizierten Dateianbietererweiterung
Ihre App verwendet einen nicht replizierten Dateianbieter, wenn er das NSFileProviderExtension-Protokoll implementiert. Alle Dateianbieter, die vor iOS 16.0 erstellt wurden, werden nicht repliziert.
In - startProvidingItemAtURL:completionHandler: prüfe, ob du Dateien mit [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles] verschlüsseln solltest. 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: check whether the file is encrypted using the isFileEncrytped: API in IntuneMAMFileProtectionManager. Wenn dies der Fall ist, entschlüsseln Sie es mit der API decryptFile:toCopyPath: von IntuneMAMFileProtectionManager. Überprüfen Sie in Apps mit mehreren Identitäten auch die canReceiveSharedFile:-API im IntuneMAMPolicy des Zielbesitzers, um zu ermitteln, ob der Besitzer die Datei empfangen kann.
Integration einer replizierten Dateianbietererweiterung
Ihre App verwendet einen replizierten Dateianbieter, wenn er das NSFileProviderReplicatedExtension-Protokoll implementiert (hinzugefügt in iOS 16.0).
In - fetchContentsForItemWithIdentifier:version:request:completionHandler: prüfe, ob du Dateien mit [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles] verschlüsseln solltest. Verwenden Sie die encryptFile:forAccountId: API 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: check whether the file is encrypted using the isFileEncrypted: API in IntuneMAMFileProtectionManager. Wenn dies der Fall ist, entschlüsseln Sie es mit der API decryptFile:toCopyPath: von IntuneMAMFileProtectionManager. Überprüfen Sie in Apps mit mehreren Identitäten auch die canReceiveSharedFile:-API im IntuneMAMPolicy des Zielbesitzers, um zu ermitteln, ob der Besitzer die Datei empfangen kann.
Rufen Sie an jedem Ort, an dem der replizierte Dateianbieter ein NSFileProviderItem erstellt und an das System übergibt, die provideFileProviderItem:forAccountId-API des IntuneMAMFileProtectionManager 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 Info.plist-Datei der Anwendung verwenden, um das Intune App SDK einzurichten und zu konfigurieren. Wenn das IntuneMAMSettings-Wörterbuch nicht in Ihrer Info.plist-Datei 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 | Die Microsoft Entra-Client-ID der App. | Für alle Apps erforderlich. |
| 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 Anwendungskonfigurationsoptionen. | Erforderlich, wenn es sich bei der App um eine benutzerdefinierte Branchenanwendung handelt, die für die Verwendung in einem 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. Diese kann anstelle von ADALRedirectUri verwendet werden, wenn der Umleitungs-URI der Anwendung das Format scheme://bundle_id. |
ADALRedirectUri oder ADALRedirectScheme ist für alle Apps erforderlich. |
| ADALLogOverrideDisabled | Boolean | Gibt an, ob das SDK alle MSAL-Protokolle (einschließlich MSAL-Aufrufe aus der App, falls vorhanden) an seine eigene Protokolldatei weiterleitet. Der Standardwert ist NEIN. Legen Sie den Wert auf JA fest, wenn die App einen eigenen MSAL-Protokollrückruf festlegt. | Optional. |
| ADALCacheKeychainGroupOverride | Zeichenfolge | Gibt die Schlüsselbundgruppe an, die für den MSAL-Cache verwendet werden soll, anstelle von "com.microsoft.adalcache". Das System stellt dies zur Laufzeit automatisch 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 Anwendung der Erweiterung an, die sie enthält. | Für iOS-Erweiterungen erforderlich. |
| 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 NEIN. Hinweis: 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 lautet JA. |
Optional. Der Standardwert ist NEIN. |
| MAMPolicyRequired | Boolean | Gibt an, ob das Starten der App blockiert wird, wenn keine Intune-App-Schutzrichtlinie vorhanden ist. Der Standardwert ist NEIN. Hinweis: Apps können nicht an den App Store übermittelt werden, wenn dies auf JA festgelegt ist. Bei der Einstellung auf JA AutoEnrollOnLaunch sollte es auch JA sein. |
Optional. Der Standardwert ist NEIN. |
| MAMPolicyWarnAbsent | Boolean | Gibt an, ob die App den Benutzer während des Starts warnt, wenn keine Intune-App-Schutzrichtlinie vorhanden ist. Hinweis: Benutzer können nach dem Schließen der Warnung weiterhin fortfahren. |
Optional. Der Standardwert ist NEIN. |
| 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 NEIN. |
| MultiIdentityCancelDisabled | Boolean | Deaktiviert die Schaltfläche "Abbrechen" auf Bildschirmen der Intune-Benutzeroberfläche für bedingten Start in Anwendungen mit mehreren Identitäten. Wenn der Wert nicht auf JA festgelegt ist, muss die App den IntuneMAMSwitchIdentityResultCanceled Fehlercode verarbeiten. Weitere Informationen finden Sie unter Wechseln von Identitäten. |
Optional. Der Standardwert ist NEIN. |
| SafariViewControllerBlockedOverride | Boolean | Deaktiviert die SafariViewController-Hooks von Intune, um die MSAL-Authentifizierung über SFSafariViewController, SFAuthSession oder ASWebAuthSession zu aktivieren. Hinweis: Eine konfigurierte Aktivitätsschaltfläche wird nur angezeigt, wenn die Ansicht nicht verwaltet und auf JA festgelegt ist. |
Optional. Der Standardwert ist NEIN. Warnung: Kann bei falscher Verwendung zu Datenlecks führen. |
| SplashIconFile SplashIconFile~ipad |
Zeichenfolge | Gibt die Intune-Begrüßungssymboldatei (Startup) an. | Optional. |
| SplashDuration | Zahl | Mindestzeit in Sekunden, die der Intune-Startbildschirm angezeigt wird. Der Standardwert ist 1.5. | Optional. |
| BackgroundColor | Zeichenfolge | Gibt die Hintergrundfarbe für Intune SDK-Benutzeroberflächenkomponenten an. Akzeptiert #XXXXXX oder einen Hexadezimalwert ohne das Nummernzeichen. |
Optional. Standardmäßig ist die Systemhintergrundfarbe festgelegt. |
| ForegroundColor | Zeichenfolge | Gibt die Vordergrund-/Textfarbe für UI-Komponenten an. Akzeptiert #XXXXXX oder Hexadezimalzeichen ohne Pfundzeichen. |
Optional. Standardmäßig ist die Systembeschriftungsfarbe. |
| AccentColor | Zeichenfolge | Gibt die Akzentfarbe für Benutzeroberflächenkomponenten (Schaltflächen, PIN-Feldhervorhebung) an. Akzeptiert #XXXXXX oder Hexadezimalzeichen ohne Pfundzeichen. |
Optional. Der Standardwert ist Systemblau. |
| SecondaryBackgroundColor | Zeichenfolge | Gibt die sekundäre Hintergrundfarbe für MTD-Bildschirme an. Akzeptiert #XXXXXX oder Hexadezimalzeichen ohne Pfundzeichen. |
Optional. Der Standardwert ist Weiß. |
| SecondaryForegroundColor | Zeichenfolge | Gibt die sekundäre Vordergrundfarbe für MTD-Bildschirme an. Akzeptiert #XXXXXX oder Hexadezimalzeichen ohne Pfundzeichen. |
Optional. Der Standardwert ist grau. |
| Unterstützt DarkMode | Boolean | Gibt an, ob die Farben der Benutzeroberfläche dem dunklen Systemmodus folgen, wenn explizite Farben nicht festgelegt sind. | Optional. Der Standardwert ist YES. |
| MAMTelemetryDisabled | Boolean | Gibt an, ob Telemetriedaten an das Back-End gesendet werden. | Optional. Der Standardwert ist NEIN. |
| MAMTelemetryUsePPE | Boolean | Sendet Telemetriedaten an das PPE-Back-End. Nützlich zum Testen von Apps, damit Daten nicht mit Kundendaten vermischt werden. | Optional. Der Standardwert ist NEIN. |
| MaxFileProtectionLevel | Zeichenfolge | Gibt den maximalen NSFileProtectionType Wert an, den die App unterstützt. Überschreibt die Richtlinie, wenn der Dienst eine höhere Ebene sendet.Mögliche Werte: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.Hinweis: Mit NSFileProtectionCompleteverliert die App den Zugriff auf geschützte Dateien ~10 Sekunden nach der Sperrung des Geräts, wodurch Komponenten wie lokale Datenbanken beschädigt werden können. Apps mit Sperrbildschirm-Benutzeroberfläche sollten verwenden NSFileProtectionCompleteUntilFirstUserAuthentication. |
Optional. Standardwert ist NSFileProtectionComplete. |
| OpenInActionExtension | Boolean | Legen Sie für "In Aktion öffnen"-Erweiterungen den Wert 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/Einfügen. Siehe Anzeigen von Webinhalten. | Optional. Der Standardwert ist NEIN. |
| WebViewHandledURLSchemes | Array aus Zeichenfolgen | URL-Schemata, die von der WebView der App verarbeitet werden. | Erforderlich, wenn Ihre WebView Links oder 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 NEIN. |
| FinishLaunchingAtStartup | Boolean | Erforderlich bei Verwendung von [BGTaskScheduler registerForTaskWithIdentifier:]; muss JA sein. |
Optional. Der Standardwert ist NEIN. |
| ValuesToScrubFromLogging | Array aus Zeichenfolgen | Anwendungskonfigurationswerte, die aus Protokollen entfernt werden sollten. Kann auch über valuesToScrubFromLogging ein eingestellt IntuneMAMSettingswerden. |
Optional. |
App-Schutzrichtlinie empfangen
Übersicht
Um eine 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 ist. Alle Apps müssen über eine aktuelle SDK-Version verfügen, um eine geschützte Datenfreigabe zu ermöglichen.
Apps, die bereits ADAL oder MSAL verwenden
Hinweis
Die Azure AD-Authentifizierungs Library (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 MSAL bereits verwenden, sollten die registerAndEnrollAccountId Methode in der IntuneMAMEnrollmentManager Instanz 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 in einem 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, versucht das SDK automatisch 24 Stunden später, die Registrierung erneut durchzuführen. Zu Debuggingzwecken kann die App über eine Stellvertretung Benachrichtigungen über die Ergebnisse von Registrierungsanforderungen empfangen.
Nachdem diese API aufgerufen wurde, kann die App weiterhin wie gewohnt funktionieren. Wenn die Registrierung erfolgreich ist, benachrichtigt das SDK den Benutzer, dass ein Neustart der App erforderlich ist. Zu diesem Zeitpunkt kann der Benutzer die App sofort neu starten.
[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];
Apps, die weder ADAL noch MSAL verwenden
Apps, die den Benutzer nicht mit ADAL oder MSAL anmelden, können dennoch App-Schutzrichtlinien vom Intune MAM-Dienst empfangen, indem sie die API aufrufen, damit das SDK diese Authentifizierung übernimmt. Apps sollten diese Technik verwenden, wenn sie einen Benutzer nicht mit Microsoft Entra ID authentifiziert haben, aber dennoch die 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 Zweck kann die Anwendung die loginAndEnrollAccount Methode für die 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 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 das SDK den vorhandenen verwalteten Benutzer auf dem Gerät (wenn 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 Betracht ziehen, diese API zu einem späteren Zeitpunkt erneut aufzurufen, abhängig von den Details des Fehlers. Die App kann über eine Stellvertretung Benachrichtigungen über die Ergebnisse von Registrierungsanforderungen empfangen.
Nachdem diese API aufgerufen wurde, kann die App wie gewohnt weiterfunktionieren. Wenn die Registrierung erfolgreich ist, benachrichtigt das SDK den Benutzer, dass ein Neustart der App erforderlich ist.
Sobald die App verwaltet ist, muss der Wert der Microsoft Entra-Objekt-ID in enrolledAccountId der 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 der Start Ihrer App abgeschlossen ist, 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 JA 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 NEIN. 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 fehl, es sei denn, die App wird ebenfalls auf JA festgelegt MAMPolicyRequired. |
| MAMPolicyRequired | Boolean | Gibt an, ob der Start der App blockiert wird, wenn die App nicht über eine Intune-App-Schutzrichtlinie verfügt. Der Standardwert ist NEIN. Hinweis: Apps können nicht an den App Store übermittelt werden, wenn MAMPolicyRequired der Wert JA festgelegt ist. Bei der Einstellung MAMPolicyRequired auf JA,AutoEnrollOnLaunch sollte auch auf JA festgelegt werden. |
Wenn Sie diese Option für Ihre App auswählen, müssen Sie Ihre App nach der Registrierung nicht neu starten.
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:
Für das Benutzerkonto werden diese Wiederholungsversuche nicht mehr wiederholt.
Die Richtlinie zum App-Schutz wird entfernt.
Unternehmensdaten werden gelöscht, wenn die App eine selektive Zurücksetzung einleitet (optional).
Bevor der Benutzer abgemeldet wird, sollte die App die folgende Methode in der 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 Enttra-Token des Benutzerkontos gelöscht werden. Das SDK benötigt die Microsoft Entra-Token des Benutzerkontos, um spezifische Anforderungen im Namen des Benutzers an den Intune MAM-Dienst zu stellen.
Wenn die App die Unternehmensdaten des Benutzers selbst löscht, kann das doWipe Flag auf "false" festgelegt werden. Andernfalls kann die App das SDK eine selektive Zurücksetzung initiieren lassen. Diese Aktion führt zu einem Aufruf des Delegats für selektives Löschen 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 folgenden Anforderungen an den Intune MAM-Dienst empfangen:
- Registrierungsanforderungen
- Anforderungen für Richtlinienupdates
- Anforderungen zur Aufhebung der Registrierung
Die Benachrichtigungen werden über delegierte Methoden angezeigt in 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;
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 Status
- Ein
NSErrorObjekt. Dieses Objekt ist inIntuneMAMEnrollmentStatus.hdefiniert, zusammen mit den spezifischen Statuscodes, die zurückgegeben werden können.
Beispielcode
Im Folgenden finden Sie Beispielimplementierungen der Delegatenmethoden:
- (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);
}
Neustart der Anwendung
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 erforderlich ist, stellt das SDK eine Delegatmethode in IntuneMAMPolicyDelegate.hbereit.
- (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, das den Benutzer auffordert, die Anwendung neu zu starten.
Hinweis
.NET MAUI-Apps müssen nicht neu gestartet werden.
Beendigungskriterien
Nachdem Sie das Build-Plug-In konfiguriert oder das Befehlszeilentool in den Buildprozess integriert haben, überprüfen Sie, ob es erfolgreich ausgeführt wird:
- Stellen Sie sicher, dass Ihr Build kompiliert und erfolgreich erstellt wird.
- Starten Sie Ihre kompilierte App, melden Sie sich bei einem Microsoft Entra-Benutzer an, der nicht von der App-Schutzrichtlinie betroffen ist, und bestätigen Sie, dass die App wie erwartet funktioniert.
- Melden Sie sich ab, und wiederholen Sie diesen Test mit einem Microsoft Entra-Benutzer, der von einer App-Schutzrichtlinie betroffen ist, und vergewissern Sie sich, dass die App jetzt von Intune verwaltet und neu gestartet wird.
An diesem Punkt der Integration kann Ihre App nun eine App-Schutzrichtlinie empfangen und erzwingen. Führen Sie die folgenden Tests aus, um die Integration zu überprüfen.
Erster Richtlinienanwendungstest
Führen Sie zunächst den folgenden Test aus, um sich mit der vollständigen Endbenutzererfahrung der Richtlinienanwendung in Ihrer App vertraut zu machen:
- Erstellen Sie eine iOS-App-Schutzrichtlinie im Microsoft Intune Admin Center. Konfigurieren Sie für diesen Test die Richtlinie:
- Lassen Sie unter Zugriffsanforderungen die Standardeinstellungen unverändert. Insbesondere sollte "PIN für Zugriff" mit "Erforderlich" heißen.
- Stellen Sie sicher, dass die App-Schutzrichtlinie auf Ihre Anwendung ausgerichtet ist. Möglicherweise müssen Sie die Paket-ID der Anwendung im Assistenten zum Erstellen von Richtlinien manuell hinzufügen.
- Weisen Sie die App-Schutzrichtlinie einer Benutzergruppe zu, die Ihr Testkonto enthält.
- Installieren Sie Ihre Anwendung.
- Melden Sie sich bei Ihrer Anwendung mit Ihrem Testkonto an, das von der App-Schutzrichtlinie adressiert ist.
- Vergewissern Sie sich, dass Sie mit einem von Intune verwalteten Bildschirm aufgefordert werden, und bestätigen Sie, dass die App durch die Eingabeaufforderung neu gestartet wird. Dieser Bildschirm gibt an, dass das SDK die Richtlinie für dieses Konto erfolgreich abgerufen hat.
- Erstellen Sie eine PIN, wenn Sie aufgefordert werden, eine App-PIN festzulegen.
- Melden Sie das verwaltete Konto aus Ihrer Anwendung ab.
- Navigieren Sie in Ihrer Anwendung umher, und vergewissern Sie sich, dass Ihre App wie erwartet funktioniert, wenn dies möglich ist, ohne sich anzumelden.
Diese Liste von Schritten ist ein *absolutes Minimum-Test], um zu bestätigen, dass Ihre App das Konto ordnungsgemäß registriert, den Authentifizierungsrückruf registriert und die Registrierung des Kontos aufhebt. Führen Sie die folgenden Tests aus, um gründlicher zu überprüfen, wie andere Einstellungen für den App-Schutz das Verhalten Ihrer Anwendung ändern.
Nächste Schritte
Nachdem Sie alle Beendigungskriterien erfüllt haben, fahren Sie mit Phase 4 fort: Features für die App-Teilnahme.