Microsoft Intune App SDK für iOS –EntwicklerhandbuchMicrosoft Intune App SDK for iOS developer guide

Hinweis

Lesen Sie am besten zuerst das Handbuch Erste Schritte mit dem Microsoft Intune App SDK. Dort finden Sie Informationen zu den Vorbereitungen, die Sie auf den verschiedenen unterstützten Plattformen für die Integration treffen müssen.You might want to first read the Get Started with Intune App SDK Guide article, which explains how to prepare for integration on each supported platform.

Mit dem Microsoft Intune App SDK für iOS können Sie die Intune-App-Schutzrichtlinien (auch als APP- oder MAM-Richtlinien bezeichnet) in Ihre native iOS-App integrieren.The Microsoft Intune App SDK for iOS lets you incorporate Intune app protection policies (also known as APP or MAM policies) into your native iOS app. MAM-fähige Anwendungen sind in das Intune App SDK integrierte Anwendungen.A MAM-enabled application is one that is integrated with the Intune App SDK. Sie ermöglichen IT-Administratoren, App-Schutzrichtlinien für Ihre mobile App bereitzustellen, wenn diese aktiv von Intune verwaltet wird.IT administrators can deploy app protection policies to your mobile app when Intune actively manages the app.

VoraussetzungenPrerequisites

  • Sie benötigen einen Mac OS-Computer, auf dem OS X 10.8.5 oder höher ausgeführt wird, und auf dem Xcode 8 oder höher installiert hat.You will need a Mac OS computer that runs OS X 10.8.5 or later and has the Xcode 8 or later installed.

  • Ihre App muss für iOS 9 oder höher vorgesehen sein.Your app must be targeted for iOS 9 or above.

  • Lesen Sie die Lizenzbedingungen für das Intune App SDK für iOS (in englischer Sprache).Review the Intune App SDK for iOS License Terms. Drucken Sie die Lizenzbedingungen aus, und heben Sie eine Kopie für Ihre Unterlagen auf.Print and retain a copy of the license terms for your records. Indem Sie das Intune App SDK für iOS herunterladen und verwenden, stimmen Sie diesen Lizenzbestimmungen zu.By downloading and using the Intune App SDK for iOS, you agree to such license terms. Wenn Sie sie nicht akzeptieren, dürfen Sie die Software nicht verwenden.If you do not accept them, do not use the software.

  • Laden Sie die Dateien für das Intune App SDK für iOS von GitHub herunter.Download the files for the Intune App SDK for iOS on GitHub.

Inhalt des SDKWhat’s in the SDK

Das Intune App SDK für iOS enthält eine statische Bibliothek, Ressourcendateien, API-Header, eine PLIST-Datei Liste mit Debug-Einstellungen sowie ein Konfigurationstool.The Intune App SDK for iOS includes a static library, resource files, API headers, a debug settings .plist file, and a configurator tool. Mobile Apps können einfach nur die Ressourcendateien enthalten und statisch mit den Bibliotheken verknüpft sein, um die meisten Richtlinien durchzusetzen.Mobile apps might simply include the resource files and statically link to the libraries for most policy enforcement. Erweiterte Intune-MAM-Funktionen werden mithilfe von APIs erzwungen.Advanced Intune MAM features are enforced through APIs.

Dieses Handbuch befasst sich mit der Verwendung der folgenden Komponenten des Intune App SDK für iOS:This guide covers the use of the following components of the Intune App SDK for iOS:

  • libIntuneMAM.a: Die statische Intune App SDK-Bibliothek.libIntuneMAM.a: The Intune App SDK static library. Wenn Ihre App keine Extensions verwendet, können Sie diese Bibliothek mit Ihrem Projekt verknüpfen, um die App für die mobile Anwendungsverwaltung mit Intune zu aktivieren.If your app does not use extensions, link this library to your project to enable your app for Intune mobile application management.

  • IntuneMAM.framework: Das Intune App SDK-Framework.IntuneMAM.framework: The Intune App SDK framework. Verknüpfen Sie dieses Framework mit Ihrem Projekt, um die App für die mobile Anwendungsverwaltung mit Intune zu aktivieren.Link this framework to your project to enable your app for Intune mobile application management. Verwenden Sie das Framework anstelle der statischen Bibliothek, wenn Ihre App Extensions verwendet, damit vom Projekt nicht mehrere Kopien der statischen Bibliothek erstellt werden.Use the framework instead of the static library if your app uses extensions, so that your project does not create multiple copies of the static library.

  • IntuneMAMResources.Bundle: Ein Ressourcenpaket, das die Ressourcen für das SDK enthält.IntuneMAMResources.bundle: A resource bundle that has resources that the SDK relies on.

  • Headers: Stellt die Intune App SDK-APIs bereit.Headers: Exposes the Intune App SDK APIs. Wenn Sie eine API verwenden, müssen Sie die Headerdatei einschließen, die die API enthält.If you use an API, you will need to include the header file that contains the API. Die folgenden Headerdateien enthalten die APIs, die Datentypen und die Protokolle, die vom Intune App SDK für Entwickler zur Verfügung gestellt wurden:The following header files include the APIs, data types, and protocols which the Intune App SDK makes available to developers:

    • IntuneMAMAppConfig.hIntuneMAMAppConfig.h
    • IntuneMAMAppConfigManager.hIntuneMAMAppConfigManager.h
    • IntuneMAMDataProtectionInfo.hIntuneMAMDataProtectionInfo.h
    • IntuneMAMDataProtectionManager.hIntuneMAMDataProtectionManager.h
    • IntuneMAMDefs.hIntuneMAMDefs.h
    • IntuneMAMEnrollmentDelegate.hIntuneMAMEnrollmentDelegate.h
    • IntuneMAMEnrollmentManager.hIntuneMAMEnrollmentManager.h
    • IntuneMAMEnrollmentStatus.hIntuneMAMEnrollmentStatus.h
    • IntuneMAMFileProtectionInfo.hIntuneMAMFileProtectionInfo.h
    • IntuneMAMFileProtectionManager.hIntuneMAMFileProtectionManager.h
    • IntuneMAMLogger.hIntuneMAMLogger.h
    • IntuneMAMPolicy.hIntuneMAMPolicy.h
    • IntuneMAMPolicyDelegate.hIntuneMAMPolicyDelegate.h
    • IntuneMAMPolicyManager.hIntuneMAMPolicyManager.h
    • IntuneMAMVersionInfo.hIntuneMAMVersionInfo.h

Entwickler können die Inhalte aller oben stehenden Header verfügbar machen, indem sie nur IntuneMAM.h importieren.Developers can make the contents of all the above headers available by just importing IntuneMAM.h

Funktionsweise des Intune App SDKHow the Intune App SDK works

Ziel des Intune App SDK für iOS ist es, iOS-Anwendungen mit minimalen Codeänderungen mit Verwaltungsfunktionen zu versehen.The objective of the Intune App SDK for iOS is to add management capabilities to iOS applications with minimal code changes. Möglichst wenige Codeänderungen bedeuten kürzere Markteinführungszeiten, ohne die Konsistenz und Stabilität Ihrer mobilen Anwendung zu beeinträchtigen.The fewer the code changes, the less time to market--without affecting the consistency and stability of your mobile application.

Integrieren des SDK in Ihre mobile AppBuild the SDK into your mobile app

Gehen Sie folgendermaßen vor, um das Intune App SDK zu aktivieren:To enable the Intune App SDK, follow these steps:

  1. Option 1 (empfohlen): Verknüpfen Sie IntuneMAM.framework mit Ihrem Projekt.Option 1 (recommended): Link IntuneMAM.framework to your project. Ziehen Sie IntuneMAM.framework in die Liste für eingebettete Binärdateien des Projektziels.Drag IntuneMAM.framework to the Embedded Binaries list of the project target.

    Hinweis

    Bei Verwendung des Frameworks müssen Sie die Simulatorarchitekturen manuell aus dem universellen Framework entfernen, bevor Sie Ihre App an den App Store übermitteln.If you use the framework, you must manually strip out the simulator architectures from the universal framework before you submit your app to the App Store. Weitere Informationen siehe Übermitteln Ihrer App an den App Store.See Submit your app to the App Store for more details.

  2. Option 2: Stellen Sie eine Verknüpfung zur libIntuneMAM.a-Bibliothek her.Option 2: Link to the libIntuneMAM.a library. Ziehen Sie die libIntuneMAM.a-Bibliothek in die Liste Verknüpfte Frameworks und Bibliotheken des Projektziels.Drag the libIntuneMAM.a library to the Linked Frameworks and Libraries list of the project target.

    Intune App SDK iOS – verknüpfte Frameworks und Bibliotheken

    Fügen Sie -force_load {PATH_TO_LIB}/libIntuneMAM.a einem der folgenden Pfade hinzu, wobei Sie {PATH_TO_LIB} durch den Speicherort des Intune App SDK ersetzen:Add -force_load {PATH_TO_LIB}/libIntuneMAM.a to either of the following, replacing {PATH_TO_LIB} with the Intune App SDK location:

    • Der Buildkonfigurationseinstellung OTHER_LDFLAGS des ProjektsThe project’s OTHER_LDFLAGS build configuration setting
    • Other Linker Flags der BenutzeroberflächeThe UI’s Other Linker Flags

      Hinweis

      Um den PATH_TO_LIB zu suchen, wählen Sie die Datei libIntuneMAM.a und dann im Menü Datei die Option Informationen abrufen aus.To find PATH_TO_LIB, select the file libIntuneMAM.a and choose Get Info from the File menu. Kopieren Sie den Pfad aus dem Abschnitt Allgemein im Fenster Info.Copy and paste the Where information (the path) from the General section of the Info window.

  3. Fügen Sie diese iOS-Frameworks zum Projekt hinzu:Add these iOS frameworks to the project:

    • MessageUI.frameworkMessageUI.framework
    • Security.frameworkSecurity.framework
    • MobileCoreServices.frameworkMobileCoreServices.framework
    • SystemConfiguration.frameworkSystemConfiguration.framework
    • libsqlite3.tbdlibsqlite3.tbd
    • libc++.tbdlibc++.tbd
    • ImageIO.frameworkImageIO.framework
    • LocalAuthentication.frameworkLocalAuthentication.framework
    • AudioToolbox.frameworkAudioToolbox.framework
  4. Fügen Sie das Ressourcenpaket IntuneMAMResources.bundle zum Projekt hinzu, indem Sie es in Buildphasen unter Paketressourcen kopieren ziehen.Add the IntuneMAMResources.bundle resource bundle to the project by dragging the resource bundle under Copy Bundle Resources within Build Phases.

    Intune App SDK iOS: Paketressourcen kopieren

  5. Wenn in Ihrer mobilen App in der Datei „Info.plist“ eine Haupt-NIB- oder Hauptstoryboard-Datei definiert ist, entfernen Sie die Felder Hauptstoryboard oder Haupt-NIB.If your mobile app defines a main nib or storyboard file in its Info.plist file, cut the Main Storyboard or Main Nib field(s). Fügen Sie diese Felder und ihre jeweiligen Werte in „Info.plist“ unter einem neuen Wörterbuch mit Namen IntuneMAMSettings mit den folgenden Schlüsselnamen (sofern zutreffend) hinzu:In Info.plist, paste these fields and their corresponding values under a new dictionary named IntuneMAMSettings with the following key names, as applicable:

    • MainStoryboardFileMainStoryboardFile
    • MainStoryboardFile~ipadMainStoryboardFile~ipad
    • MainNibFileMainNibFile
    • MainNibFile~ipadMainNibFile~ipad

      Hinweis

      Wenn in Ihrer mobilen App in der Datei „Info.plist“ keine Haupt-NIB- oder Hauptstoryboard-Datei definiert ist, sind diese Einstellungen nicht erforderlich.If your mobile app doesn’t define a main nib or storyboard file in its Info.plist file, these settings are not required.

      Sie können die Datei „Info.plist“ im Raw-Format anzeigen (um die Schlüsselnamen zu sehen), indem Sie im Dokument mit der rechten Maustaste auf eine beliebige Stelle klicken und den Anzeigetyp in Show Raw Keys/Values ändern.You can view Info.plist in raw format (to see the key names) by right-clicking anywhere in the document body and changing the view type to Show Raw Keys/Values.

  6. Aktivieren Sie die Freigabe des Schlüsselbunds (sofern noch nicht geschehen), indem Sie in jedem Projektziel Capabilities auswählen und den Schalter Keychain Sharing aktivieren.Enable keychain sharing (if it isn't already enabled) by choosing Capabilities in each project target and enabling the Keychain Sharing switch. Die Freigabe des Schlüsselbunds ist erforderlich, damit Sie mit dem nächsten Schritt fortfahren können.Keychain sharing is required for you to proceed to the next step.

    Hinweis

    Ihr Bereitstellungsprofil muss neue Werte für die Freigabe des Schlüsselbunds unterstützen.Your provisioning profile needs to support new keychain sharing values. Die Schlüsselbund-Zugriffsgruppen sollten ein Platzhalterzeichen unterstützen.The keychain access groups should support a wildcard character. Sie können dies überprüfen, indem Sie die Datei „.mobileprovision“ in einem Text-Editor öffnen, nach keychain-access-groups suchen und sich vergewissern, dass ein Platzhalter vorhanden ist.You can check this by opening the .mobileprovision file in a text editor, searching for keychain-access-groups, and ensuring that you have a wildcard. Beispiel:For example:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  7. Nachdem Sie die Freigabe des Schlüsselbunds aktiviert haben, folgen Sie den nachstehenden Schritten, um eine separate Zugriffsgruppe zu erstellen, in der das Intune App SDK seine Daten speichert.After you enable keychain sharing, follow these steps to create a separate access group in which the Intune App SDK will store its data. Sie können eine Zugriffsgruppe für den Schlüsselbund über die Benutzeroberfläche oder mithilfe der Berechtigungsdatei erstellen.You can create a keychain access group by using the UI or by using the entitlements file. Wenn Sie die Benutzeroberfläche zum Erstellen der Zugriffsgruppe für den Schlüsselbund verwenden, führen Sie unbedingt die folgenden Schritte aus:If you are using the UI to create the keychain access group, make sure to follow the steps below:

    1. Wenn in Ihrer mobilen App keine Zugriffsgruppen für den Schlüsselbund definiert sind, fügen Sie die Paket-ID der App als erste Gruppe hinzu.If your mobile app does not have any keychain access groups defined, add the app’s bundle ID as the first group.

    2. Fügen Sie die freigegebene Zugriffsgruppe für den Schlüsselbund com.microsoft.intune.mam Ihren vorhandenen Zugriffsgruppen hinzu.Add the shared keychain group com.microsoft.intune.mam to your existing access groups. Diese Zugriffsgruppe wird vom Intune App SDK zum Speichern von Daten verwendet.The Intune App SDK uses this access group to store data.

    3. Fügen Sie com.microsoft.adalcache zu Ihren vorhandenen Zugriffsgruppen hinzu.Add com.microsoft.adalcache to your existing access groups.

      1. Fügen Sie com.microsoft.workplacejoin zu Ihren vorhandenen Zugriffsgruppen hinzu.Add com.microsoft.workplacejoin to your existing access groups. Intune App SDK für iOS: Schlüsselbund gemeinsam nutzenIntune App SDK iOS: keychain sharing
    4. Wenn Sie die Berechtigungsdatei verwenden, um die Zugriffsgruppe für den Schlüsselbund zu erstellen, stellen Sie der Zugriffsgruppe für den Schlüsselbund in der Berechtigungsdatei $(AppIdentifierPrefix) voran.If you are using the entitlement file to create the keychain access group, prepend the keychain access group with $(AppIdentifierPrefix) in the entitlement file. Beispiel:For example:

       * `$(AppIdentifierPrefix)com.microsoft.intune.mam`
       * `$(AppIdentifierPrefix)com.microsoft.adalcache`
      

      Hinweis

      Eine Berechtigungsdatei ist eine für die mobile Anwendung eindeutige XML-Datei.An entitlements file is an XML file that's unique to your mobile application. Sie wird zum Festlegen spezieller Berechtigungen und Funktionen in Ihrer iOS-App verwendet.It is used to specify special permissions and capabilities in your iOS app.

  8. Wenn die Definition von URL-Schemas der App in deren Info.plist-Datei erfolgt, fügen Sie ein weiteres Schema mit dem Suffix -intunemam für jedes URL-Schema hinzu.If the app defines URL schemes in its Info.plist file, add another scheme, with a -intunemam suffix, for each URL scheme.

  9. Wenn die App Dokumenttypen in der „Info.plist“-Datei definiert, fügen Sie für das Array „Document Content Type UTIs“ jedes Elements einen duplizierten Eintrag für jede Zeichenfolge mit dem PräfixIf the app defines Document types in its Info.plist file, for each item's "Document Content Type UTIs" array, add a duplicate entry for each string with a "com.microsoft.intune.mam." „com.microsoft.intune.mam.“ hinzu.prefix.

  10. Bei mobilen Apps, die in iOS 9+ entwickelt wurden, nehmen Sie jedes Protokoll, das Ihre App an UIApplication canOpenURL übergibt, in das LSApplicationQueriesSchemes-Array der Info.plist-Datei Ihrer App auf.For mobile apps developed on iOS 9+, include each protocol that your app passes to UIApplication canOpenURL in the LSApplicationQueriesSchemes array of your app's Info.plist file. Darüber hinaus fügen Sie -intunemam für jedes aufgeführte Protokoll ein neues Protokoll hinzu.Additionally, for each protocol listed, add a new protocol and append it with -intunemam. Sie müssen auch http-intunemam, https-intunemamund ms-outlook-intunemam in das Array einschließen.You must also include http-intunemam, https-intunemam, and ms-outlook-intunemam in the array.

  11. Wenn in den Berechtigungen der App App-Gruppen definiert sind, fügen Sie diese Gruppen dem IntuneMAMSettings-Wörterbuch unter dem AppGroupIdentifiers-Schlüssel als Zeichenfolgenarray hinzu.If the app has app groups defined in its entitlements, add these groups to the IntuneMAMSettings dictionary under the AppGroupIdentifiers key as an array of strings.

Konfigurieren der Authentifizierungsbibliothek von Azure Active Directory (Active Directory Authentication Library, ADAL)Configure Azure Active Directory Authentication Library (ADAL)

Das Intune App SDK verwendet die Authentifizierungsbibliothek von Azure Active Directory für die Authentifizierung und bedingte Startszenarien.The Intune App SDK uses Azure Active Directory Authentication Library for its authentication and conditional launch scenarios. Es verwendet ADAL außerdem zum Registrieren der Benutzeridentität beim MAM-Dienst für Verwaltungsszenarien ohne Geräteregistrierung.It also relies on ADAL to register the user identity with the MAM service for management without device enrollment scenarios.

Normalerweise setzt ADAL voraus, dass Apps sich bei Azure Active Directory (AAD) registrieren und eine eindeutige ID (Client-ID) sowie weitere Bezeichner abrufen, um die Sicherheit der Token zu gewährleisten, die an die Anwendung übermittelt werden.Typically, ADAL requires apps to register with Azure Active Directory (AAD) and get a unique ID (Client ID) and other identifiers, to guarantee the security of the tokens granted to the app. Sofern nicht anders angegeben, verwendet das Intune App SDK bei der Kontaktaufnahme mit Azure AD standardmäßige Registrierungswerte.Unless otherwise specified, the Intune App SDK uses default registration values when it contacts Azure AD.

Wenn Ihre App bereits ADAL zum Authentifizieren von Benutzern verwendet, muss sie ihre vorhandenen Registrierungswerte verwenden und die Standardwerte des Intune App SDK überschreiben.If your app already uses ADAL to authenticate users, the app must use its existing registration values and override the Intune App SDK default values. Dadurch wird sichergestellt, dass Benutzer nicht zweimal zur Authentifizierung aufgefordert werden (einmal vom Intune App SDK und einmal von der App).This ensures that users are not prompted for authentication twice (once by the Intune App SDK and once by the app).

EmpfehlungenRecommendations

Ihre App sollte mit der aktuellen Version von ADAL auf deren Hauptverzweigung verknüpft sein.It is recommended that your app links to the latest version of ADAL on its master branch. Das Intune App SDK verwendet derzeit den Brokerbranch von ADAL, um Apps zu unterstützen, für die bedingter Zugriff erforderlich ist.The Intune App SDK currently uses the broker branch of ADAL to support apps that require conditional access. (Diese Apps hängen daher von der Microsoft Authenticator-App ab.) Das SDK ist trotzdem mit dem Hauptbranch von ADAL kompatibel.(These apps therefore depend on the Microsoft Authenticator app.) But the SDK is still compatible with the master branch of ADAL. Verwenden Sie den Branch, der für Ihre App geeignet ist.Use the branch that is appropriate for your app.

Gehen Sie folgendermaßen vor, um Ihre App mit den ADAL-Binärdateien zu verknüpfen:Follow the steps below to link your app to the ADAL binaries:

  1. Laden Sie die Authentifizierungsbibliothek von Azure Active Directory (ADAL) für Objective-C von GitHub herunter, und befolgen Sie dann die Anweisungen zum Herunterladen von ADAL mithilfe von Git-Submodulen oder CocoaPods.Download the Azure Active Directory Authentication Library (ADAL) for Objective-C from GitHub, then follow the instructions on how to download ADAL using Git submodules or CocoaPods.

  2. Schließen Sie das ADALiOSBundle.bundle in das Projekt ein, indem Sie das Ressourcenpaket unter Copy Bundle Resources nach Build Phases ziehen.Include the ADALiOSBundle.bundle resource bundle in the project by dragging the resource bundle under Copy Bundle Resources within Build Phases.

  3. Fügen Sie -force_load {PATH_TO_LIB}/libADALiOS.a der OTHER_LDFLAGS-Buildkonfigurationseinstellung des Projekts hinzu, oder legen Sie auf der Benutzeroberfläche Other Linker Flags fest.Add -force_load {PATH_TO_LIB}/libADALiOS.a to the project’s OTHER_LDFLAGS build configuration setting or Other Linker Flags in the UI. PATH_TO_LIB sollte durch den Speicherort der ADAL-Binärdateien ersetzt werden.PATH_TO_LIB should be replaced with the location of the ADAL binaries.

Freigeben des ADAL-Tokencaches für andere Apps, die mit dem gleichen Bereitstellungsprofil signiert wurden?Share the ADAL token cache with other apps signed with the same provisioning profile?

Befolgen Sie die unten stehenden Anweisungen, wenn Sie ADAL-Token für Apps freigeben möchten, die mit dem gleichen Bereitstellungsprofil signiert wurden:Follow the instructions below if you want to share ADAL tokens between apps signed with the same provisioning profile:

  1. Wenn in Ihrer App keine Zugriffsgruppen für den Schlüsselbund definiert sind, fügen Sie die Paket-ID der App als erste Gruppe hinzu.If your app does not have any keychain access groups defined, add the app’s bundle ID as the first group.

  2. Aktivieren Sie ADAL-SSO (einmaliges Anmelden), indem Sie den Schlüsselbundberechtigungen die Zugriffsgruppen com.microsoft.adalcache und com.microsoft.workplacejoin hinzufügen.Enable ADAL single sign-on (SSO) by adding com.microsoft.adalcache and com.microsoft.workplacejoin access groups in the keychain entitlements.

  3. Falls Sie die Schlüsselbundgruppe für den freigegebenen ADAL-Cache explizit festlegen, achten Sie darauf, dass sie auf <app_id_prefix>.com.microsoft.adalcache festgelegt ist.If you are explicitly setting the ADAL shared cache keychain group, make sure it is set to <app_id_prefix>.com.microsoft.adalcache. ADAL legt dies für Sie fest, sofern Sie die Einstellung nicht außer Kraft setzen.ADAL will set this for you unless you override it. Wenn Sie eine benutzerdefinierte Schlüsselbundgruppe angeben möchten, die com.microsoft.adalcache ersetzt, geben Sie sie in der Datei „Info.plist“ mithilfe des Schlüssels ADALCacheKeychainGroupOverride unter „IntuneMAMSettings“ an.If you want to specify a custom keychain group to replace com.microsoft.adalcache, specify that in the Info.plist file under IntuneMAMSettings, by using the key ADALCacheKeychainGroupOverride.

Konfigurieren der ADAL-Einstellungen für das Intune App SDKConfigure ADAL settings for the Intune App SDK

Wenn Ihre Anwendung bereits ADAL für die Authentifizierung verwendet und über eigene ADAL-Einstellungen verfügt, können Sie die Verwendung der gleichen Einstellungen durch das Intune App SDK während der Authentifizierung bei Azure Active Directory erzwingen.If your app already uses ADAL for authentication and has its own ADAL settings, you can force the Intune App SDK to use the same settings during authentication against Azure Active Directory. Dadurch wird sichergestellt, dass die App den Benutzer nicht zweimal zur Authentifizierung auffordert.This ensures that the app will not double-prompt the user for authentication. Unter Configure settings for the Intune App SDK (Konfigurieren der Einstellungen für das Intune App SDK) finden Sie Informationen zum Auffüllen der folgenden Einstellungen:See Configure settings for the Intune App SDK for information on populating the following settings:

  • ADALClientIdADALClientId
  • ADALAuthorityADALAuthority
  • ADALRedirectUriADALRedirectUri
  • ADALRedirectSchemeADALRedirectScheme
  • ADALCacheKeychainGroupOverrideADALCacheKeychainGroupOverride

Wenn Ihre App bereits ADAL verwendet, sind die folgenden Konfigurationen erforderlich:If your app already uses ADAL, the following configurations are required:

  1. Geben Sie in der Datei „Info.plist“ des Projekts unter dem IntuneMAMSettings-Wörterbuch mit dem Schlüsselnamen ADALClientId die für ADAL-Aufrufe zu verwendende Client-ID an.In the project’s Info.plist file, under the IntuneMAMSettings dictionary with the key name ADALClientId, specify the client ID to be used for ADAL calls.

  2. Geben Sie außerdem im IntuneMAMSettings-Wörterbuch mit dem Schlüsselnamen ADALAuthority die Azure AD-Autorität an.Also under the IntuneMAMSettings dictionary with the key name ADALAuthority, specify the Azure AD authority.

  3. Geben Sie außerdem im IntuneMAMSettings-Wörterbuch mit dem Schlüsselnamen ADALRedirectUri den Umleitungs-URI an, mit dem ADAL-Aufrufe durchgeführt werden sollen.Also under the IntuneMAMSettings dictionary with the key name ADALRedirectUri, specify the redirect URI to be used for ADAL calls. Je nach dem Format des Umleitungs-URIs Ihrer App müssen Sie auch das ADALRedirectScheme angeben.You might also need to specify ADALRedirectScheme, depending on the format of your app’s redirect URI.

Außerdem können Sie die URL der Azure AD-Autorität zur Laufzeit durch eine mandantenspezifische URL ersetzen.Additionally, you can override the Azure AD Authority URL with a tenant-specific URL at runtime. Legen Sie zu diesem Zweck einfach die aadAuthorityUriOverride-Eigenschaft auf der IntuneMAMPolicyManager-Instanz fest.To do this, simply set the aadAuthorityUriOverride property on the IntuneMAMPolicyManager instance.

Hinweis

Das Festlegen der URL der Azure AD-Autorität ist für APP ohne Geräteregistrierung erforderlich, um dem SDK die erneute Verwendung des ADAL-Aktualisierungstokens, das von der App abgefangen wurde, zu ermöglichen.Setting the AAD Authority URL is required for APP without device enrollment to let the SDK reuse the ADAL refresh token fetched by the app.

Das SDK verwendet weiterhin die URL dieser Autorität für die Aktualisierung von Richtlinien und alle nachfolgenden Registrierungsanforderungen, sofern der Wert nicht gelöscht oder geändert wird.The SDK will continue to use this authority URL for policy refresh and any subsequent enrollment requests, unless the value is cleared or changed. Daher ist es wichtig, den Wert zu löschen, wenn sich ein verwalteter Benutzer bei der App abmeldet, und den Wert zurückzusetzen, wenn sich ein neuer verwalteter Benutzer anmeldet.Therefore, it is important to clear the value when a managed user signs out of the app and to reset the value when a new managed user signs in.

Wenn Ihre Anwendung ADAL nicht verwendetIf your app does not use ADAL

Wenn Ihre Anwendung ADAL nicht verwendet, stellt das Intune App SDK Standardwerte für ADAL-Parameter bereit und verarbeitet die Authentifizierung über Azure AD.If your app does not use ADAL, the Intune App SDK will provide default values for ADAL parameters and handle authentication against Azure AD. Sie müssen keine Werte für die oben aufgeführten ADAL-Einstellungen angeben.You do not have to specify any values for the ADAL settings listed above.

App-Schutzrichtlinie ohne GeräteregistrierungApp protection policy without device enrollment

ÜbersichtOverview

Intune-App-Schutzrichtlinie ohne Geräteregistrierung, auch bekannt als APP-WE oder MAM-WE – ermöglicht, dass Apps von Intune verwaltet werden können, ohne dass das Gerät bei der Verwaltung mobiler Geräte (MDM) von Intune registriert sein muss.Intune app protection policy without device enrollment, also known as APP-WE or MAM-WE, allows apps to be managed by Intune without the need for the device to be enrolled Intune mobile device management (MDM). Um diese neue Funktionalität zu unterstützen, muss die App an der Registrierung von Benutzerkonten für die Verwaltung zu teilnehmen.To support this new functionality, the app must participate to register user accounts for management. Um die neuen APIs zu verwenden, gehen Sie folgendermaßen vor:To use the new APIs, follow these steps:

  1. Verwenden Sie die neueste Version des Intune App SDKs, die Verwaltung von Geräten mit oder ohne Geräteregistrierung unterstützt.Use the latest release of the Intune App SDK, which supports management of apps with or without device enrollment.

  2. Fügen Sie allen Dateien, die die APIs aufrufen, „IntuneMAMEnrollment.h“ hinzu.Add IntuneMAMEnrollment.h to any files that will call the APIs.

Registrieren von BenutzerkontenRegister user accounts

Eine App kann App-Schutzrichtlinien vom Intune-Dienst empfangen, wenn die App im Auftrag eines angegebenen Benutzerkontos bei dem APP-WE-Dienst registriert ist.An app can receive app protection policy from the Intune service if the app enrolls with the APP-WE service on behalf of a specified user account. Es ist Aufgabe der App, alle neu angemeldeten Benutzer beim SDK zu registrieren.The app is responsible for registering any newly signed-in user with the SDK. Nachdem das neue Benutzerkonto authentifiziert wurde, sollte die App die registerAndEnrollAccount-Methode unter „Headers/IntuneMAMEnrollment.h“ aufrufen:After the new user account has been authenticated, the app should call the registerAndEnrollAccount method in Headers/IntuneMAMEnrollment.h:

/**


 *  This method will add the account to the list of registered accounts.
 *  An enrollment request will immediately be started.
 *  @param identity The UPN of the account to be registered with the SDK
 */

(void)registerAndEnrollAccount:(NSString *)identity;

Durch Aufrufen der registerAndEnrollAccount-Methode registriert das SDK das Benutzerkonto und versucht, die App im Auftrag dieses Kontos zu registrieren.By calling the registerAndEnrollAccount method, the SDK will register the user account and attempt to enroll the app on behalf of this account. Wenn bei der Registrierung aus irgendeinem Grund ein Fehler auftritt, versucht das SDK die Registrierung 24 Stunden später automatisch erneut.If the enrollment fails for any reason, the SDK will automatically retry the enrollment 24 hours later. Zu Debugzwecken kann die App über einen Stellvertreter Benachrichtigungen zu den Ergebnissen von Registrierungsanforderungen empfangen.For debugging purposes, the app can receive notifications, via a delegate, about the results of any enrollment requests.

Nachdem diese API aufgerufen wurde, kann die Anwendung anschließend normal funktionieren.After this API has been invoked, the app can continue to function as normal. Wenn die Registrierung erfolgreich ist, benachrichtigt das SDK den Benutzer, dass ein Neustart der App erforderlich ist.If the enrollment succeeds, the SDK will notify the user that an app restart is required. Zu diesen Zeitpunkt kann der Benutzer die App sofort neu starten.At that time, the user can immediately restart the app.

Aufheben der Registrierung von BenutzerkontenDeregister user accounts

Bevor ein Benutzer bei einer App abgemeldet wird, sollte die App die Registrierung des Benutzers beim SDK aufheben.Before a user is signed out of an app, the app should deregister the user from the SDK. Dadurch wird Folgendes sichergestellt:This will ensure:

  1. Für das Konto des Benutzers werden keine wiederholten Registrierungsversuche mehr ausgeführt.Enrollment retries will no longer happen for the user’s account.

  2. Die App-Schutzrichtlinie wird entfernt.App protection policy will be removed.

  3. Wenn die App ein selektives Zurücksetzen einleitet (optional), werden alle Unternehmensdaten gelöscht.If the app initiates a selective wipe (optional), any corporate data is deleted.

Bevor der Benutzer abgemeldet wird, sollte die App die folgende API unter Headers/IntuneMAMEnrollment.h aufrufen:Before the user is signed out, the app should call the following API in Headers/IntuneMAMEnrollment.h:

/*
 *  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 MAM 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 identity The UPN of the account to be removed.
 *  @param doWipe   If YES, a selective wipe if the account is un-enrolled
 */

(void)deRegisterAndUnenrollAccount:(NSString *)identity withWipe:(BOOL)doWipe;

Diese Methode muss aufgerufen werden, bevor die Azure AD-Token des Benutzerkontos gelöscht werden.This method must be called before the user account’s Azure AD tokens are deleted. Das SDK benötigt das/die AAD-Token des Benutzerkontos, um im Auftrag des Benutzers spezifische Anforderungen an den APP-WE-Dienst zu senden.The SDK needs the user account’s AAD token(s) to make specific requests to the APP-WE service on behalf of the user.

Wenn die App die Unternehmensdaten des Benutzers aus eigenem Antrieb löscht, kann das doWipe-Flag auf FALSCH festgelegt werden.If the app will delete the user’s corporate data on its own, the doWipe flag can be set to false. Andernfalls kann die App das selektive Zurücksetzen vom SDK initiieren lassen.Otherwise, the app can have the SDK initiate a selective wipe. Dies führt zu einem Aufruf des Stellvertreters der App für das selektive Zurücksetzen.This will result in a call to the app's selective wipe delegate.

[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccount:@”user@foo.com” withWipe:YES];

Apps, die nicht ADAL verwendenApps that do not use ADAL

Apps, die den Benutzer nicht mit ADAL anmelden, können trotzdem App-Schutzrichtlinien vom Intune-Dienst empfangen, indem sie die API aufrufen, um die Authentifizierung vom SDK ausführen zu lassen.Apps that do not sign in the user using ADAL can still receive app protection policy from the Intune service by calling the API to have the SDK handle that authentication. Apps sollten diese Technik verwenden, wenn zwar keine Benutzer mit Azure AD authentifiziert wurden, aber trotzdem App-Schutzrichtlinien zum Schutz der Daten abgerufen werden müssen.Apps should use this technique when they have not authenticated a user with Azure AD but still need to retrieve app protection policy to help protect data. Beispielsweise, wenn ein anderer Authentifizierungsdienst für die App-Anmeldung verwendet wird oder wenn die App überhaupt kein Anmelden unterstützt.An example is if another authentication service is being used for app sign-in, or if the app does not support signing in at all. Zu diesem Zweck sollte die Anwendung die loginAndEnrollAccount-Methode unter „Headers/IntuneMAMEnrollment.h“ aufrufen:To do this, the application should call the loginAndEnrollAccount method in Headers/IntuneMAMEnrollment.h:

/**
 *  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 wird der Benutzer vom SDK zur Eingabe von Anmeldeinformationen aufgefordert, wenn kein vorhandenes Token gefunden wird.By calling this method, the SDK will prompt the user for credentials if no existing token can be found. Das SDK versucht dann, die App im Auftrag des angegebenen Benutzerkontos beim APP-WE-Dienst zu registrieren.The SDK will then try to enroll the app with the APP-WE service on behalf of the supplied user account. Die Methode kann mit der Identität „nil“ aufgerufen werden.The method can be called with "nil" as the identity. In diesem Fall nimmt das SDK die Registrierung mit dem vorhandenen verwalteten Benutzer auf dem Gerät vor oder fordert den Benutzer zur Eingabe eines Benutzernamens auf, wenn kein vorhandener Benutzer gefunden wird.In that case, the SDK will enroll with the existing managed user on the device, or prompt the user for a user name if no existing user is found.

Bei einem Fehler bei der Registrierung sollte die App den erneuten Aufruf dieser API zu einem späteren Zeitpunkt vorsehen, je nach den Fehlerdetails.If the enrollment fails, the app should consider calling this API again at a future time, depending on the details of the failure. Die App kann über einen Stellvertreter Benachrichtigungen zu den Ergebnissen von Registrierungsanforderungen empfangen.The app can receive notifications, via a delegate, about the results of any enrollment requests.

Nachdem diese API aufgerufen wurde, kann die App anschließend normal funktionieren.After this API has been invoked, the app can continue functioning as normal. Wenn die Registrierung erfolgreich ist, benachrichtigt das SDK den Benutzer, dass ein Neustart der App erforderlich ist.If the enrollment succeeds, the SDK will notify the user that an app restart is required.

Status-, Ergebnis- und DebugbenachrichtigungenStatus, result, and debug notifications

Die App kann Status-, Ergebnis- und Debugbenachrichtigungen zu den folgenden Anforderungen an den Intune MAM-Dienst empfangen:The app can receive status, result, and debug notifications about the following requests to the Intune MAM service:

  • RegistrierungsanforderungenEnrollment requests
  • Anforderungen zur RichtlinienaktualisierungPolicy update requests
  • Anforderungen zur Aufhebung der RegistrierungUnenrollment requests

Die Benachrichtigungen werden über Stellvertretermethoden in Headers/IntuneMAMEnrollmentDelegate.h angezeigt:The notifications are presented via delegate methods in Headers/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 Stellvertretermethoden geben ein IntuneMAMEnrollmentStatus-Objekt zurück, das die folgenden Informationen enthält:These delegate methods return an IntuneMAMEnrollmentStatus object that has the following information:

  • Die Identität der Kontos, dem die Anforderung zugeordnet istThe identity of the account associated with the request
  • Ein Statuscode, der das Ergebnis der Anforderung anzeigtA status code that indicates the result of the request
  • Eine Fehlerzeichenfolge mit einer Beschreibung des StatuscodesAn error string with a description of the status code
  • Ein NSError-ObjektAn NSError object

Dieses Objekt ist in IntuneMAMEnrollmentStatus.h zusammen mit den spezifischen Statuscodes definiert, die zurückgegeben werden können.This object is defined in IntuneMAMEnrollmentStatus.h, along with the specific status codes that can be returned.

BeispielcodeSample code

Die folgenden Beispiele zeigen Implementierungen der Stellvertretermethoden:These are example implementations of the delegate methods:

- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status
{
    NSLog(@"enrollment result for identity %@ with status code %ld", status.identity, (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.identity, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status
{
    NSLog(@"un-enroll result for identity %@ with status code %ld", status.identity, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

Neustart der AppApp restart

Wenn eine Anwendung zum ersten Mal App-Schutzrichtlinien empfängt, muss sie neu gestartet werden, um die erforderlichen Hooks anzuwenden.When an app receives app protection policies for the first time, it must restart to apply the required hooks. Um die App zu benachrichtigen, dass ein Neustart erfolgen muss, stellt das SDK eine Stellvertretermethode in „Headers/IntuneMAMPolicyDelegate.h“ zur Verfügung.To notify the app that a restart needs to happen, the SDK provides a delegate method in Headers/IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

Der Rückgabewert dieser Methode teilt dem SDK mit, ob die Anwendung den erforderlichen Neustart übernehmen muss:The return value of this method tells the SDK if the application must handle the required restart:

  • Wenn „true“ zurückgegeben wird, muss die Anwendung den Neustart ausführen.If true is returned, the application must handle the restart.

  • Wenn FALSCH zurückgegeben wird, führt das SDK den Neustart der Anwendung aus, nachdem diese Methode zurückgegeben wurde.If false is returned, the SDK will restart the application after this method returns. Das SDK zeigt sofort ein Dialogfeld an, in dem der Benutzer zum Neustarten der Anwendung aufgefordert wird.The SDK will immediately show a dialog box that tells the user to restart the application.

Passen Sie das Verhalten Ihrer App anCustomize your app's behavior

Das Intune App SDK hat mehrere APIs, die Sie aufrufen können, um Informationen über die App-Schutzrichtlinie in Intune zu erhalten, die der App bereitgestellt wurde.The Intune App SDK has several APIs you can call to get information about the Intune app protection policy deployed to the app. Diese Daten können Sie benutzen, um das Verhalten Ihrer App anzupassen.You can use this data to customize your app's behavior. Die meisten Einstellungen für App-Schutzrichtlinien werden automatisch vom SDK und nicht von der Anwendung erzwungen.Most app protection policy settings are automatically enforced by the SDK and not the application. Die einzige Einstellung, die die App implementieren sollte, ist das Steuerelement „Speichern unter“.The only setting that the app should implement is the Save-as control.

Abrufen der App-SchutzrichtlinieGet app protection policy

IntuneMAMPolicyManager.hIntuneMAMPolicyManager.h

Die Klasse „IntuneMAMPolicyManager“ stellt die App-Schutzrichtlinie für Intune, die für die App bereitgestellt wurde, bereit.The IntuneMAMPolicyManager class exposes the Intune app protection policy deployed to the application. Sie stellt besonders APIs bereit, die beim Aktivieren mehrerer Identitäten nützlich sind.Notably, it exposes APIs that are useful for Enabling multi-identity.

IntuneMAMPolicy.hIntuneMAMPolicy.h

Die „IntuneMAMPolicy“-Klasse stellt die App-Schutzrichtlinie für Intune, die für die App bereitgestellt wurde, bereit.The IntuneMAMPolicy class exposes the Intune app protection policy deployed to the application. Die meisten der in dieser Klasse bereitgestellten Richtlinieneinstellungen werden vom SDK erzwungen, aber Sie haben immer die Möglichkeit, das Verhalten Ihrer App anzupassen, je nachdem, wie Richtlinieneinstellungen erzwungen werden.Most the policy settings exposed in this class are enforced by the SDK, but you can always customize your app's behavior based on how policy settings are enforced.

Diese Klasse stellt einige APIs bereit, die für die Implementierung von „Speichern unter“-Steuerelementen benötigt werden; Details dazu finden Sie im nächsten Abschnitt.This class exposes some APIs needed to implement save-as controls, detailed in the next section.

Implementieren von „Speichern unter“-SteuerelementenImplement save-as controls

Mit Intune können IT-Administratoren auswählen, an welchem Speicherort eine verwaltete App Daten speichern kann.Intune lets IT admins select which storage locations a managed app can save data to. Mit der isSaveToAllowedForLocation-API können Apps das Intune-App SDK nach zulässigen Speicherorten abfragen, wie in IntuneMAMPolicy.h definiert.Apps can query the Intune App SDK for allowed storage locations by using the isSaveToAllowedForLocation API, defined in IntuneMAMPolicy.h.

Bevor Apps verwaltete Daten in einem Cloudspeicher oder einem lokalen Pfad speichern können, müssen sie mit der isSaveToAllowedForLocation-API überprüfen, ob der IT-Administrator erlaubt hat, die Daten dort zu speichern.Before apps can save managed data to a cloud-storage or local location, they must check with the isSaveToAllowedForLocation API to know if the IT admin has allowed data to be saved there.

Bei Verwendung der isSaveToAllowedForLocation-API müssen Apps den UPN für den Speicherort einreichen, falls er verfügbar ist.When apps use the isSaveToAllowedForLocation API, they must pass in the UPN for the storage location, if it is available.

Unterstützte SpeicherorteSupported save locations

Die isSaveToAllowedForLocation-API stellt Konstanten bereit, um zu prüfen, ob der IT-Administrator das Speichern von Daten an folgenden Orten erlaubt, wie in IntuneMAMPolicy.h definiert:The isSaveToAllowedForLocation API provides constants to check whether the IT admin permits data to be saved to the following locations defined in IntuneMAMPolicy.h:

  • IntuneMAMSaveLocationOtherIntuneMAMSaveLocationOther
  • IntuneMAMSaveLocationOneDriveForBusinessIntuneMAMSaveLocationOneDriveForBusiness
  • IntuneMAMSaveLocationSharePointIntuneMAMSaveLocationSharePoint
  • IntuneMAMSaveLocationLocalDriveIntuneMAMSaveLocationLocalDrive

Apps sollten die Konstanten in der isSaveToAllowedForLocation-API verwenden, um zu überprüfen, ob Daten an Speicherorten gespeichert werden können, die als „verwaltet“ (z. B. OneDrive for Business) oder „privat“ gelten.Apps should use the constants in the isSaveToAllowedForLocation API to check if data can be saved to locations considered "managed," like OneDrive for Business, or "personal." Darüber hinaus sollte die API verwendet werden, wenn die App nicht ermitteln kann, ob es sich um „verwaltete“ oder „private“ Speicherorte handelt.Additionally, the API should be used when the app can't check whether a location is "managed" or "personal."

Persönliche Speicherorte werden durch die Konstante IntuneMAMSaveLocationOther repräsentiert.Locations known to be "personal" are represented by the IntuneMAMSaveLocationOther constant.

Die Konstante IntuneMAMSaveLocationLocalDrive sollte verwendet werden, wenn die App Daten an einem beliebigen Speicherort auf dem lokalen Gerät speichert.The IntuneMAMSaveLocationLocalDrive constant should be used when the app is saving data to any location on the local device.

Konfigurieren der Einstellungen für Intune App SDKConfigure settings for the Intune App SDK

Sie können das Wörterbuch IntuneMAMSettings in der Datei „info.plist“ der Anwendung verwenden, um das Intune App SDK einzurichten und zu konfigurieren.You can use the IntuneMAMSettings dictionary in the application’s Info.plist file to set up and configure the Intune App SDK. Wenn das IntuneMAMSettings-Wörterbuch in der Datei „Info.plist“ nicht angezeigt wird, sollten Sie ein Wörterbuch in der „Info.plist“ Ihrer App mit dem Feldnamen „IntuneMAMSettings.“ erstellen.If the IntuneMAMSettings dictionary is not seen in your Info.plist file, you should create a dictionary in your app's Info.plist with the field name "IntuneMAMSettings."

Im IntuneMAMSettings-Wörterbuch können Sie Schlüssel-Wert-Zeilen mit Konfigurationseinstellungen zum Konfigurieren des SDK hinzufügen.Under the IntuneMAMSettings dictionary, you can add key/value rows of configuration settings to configure the SDK. Die folgende Tabelle enthält eine Liste aller unterstützten Einstellungen.The table below lists all supported settings.

Einige dieser Einstellungen wurden möglicherweise schon in vorherigen Abschnitten erörtert, und einige gelten nicht für alle Apps.Some of these settings might have been covered in previous sections, and some do not apply to all apps.

EinstellungSetting TypType DefinitionDefinition Erforderlich?Required?
ADALClientIdADALClientId ZeichenfolgeString Die Azure AD-Client-ID der App.The app’s Azure AD client identifier. Erforderlich, wenn die App ADAL verwendet.Required if the app uses ADAL.
ADALAuthorityADALAuthority ZeichenfolgeString Die aktive Azure AD-Autorität.The app's Azure AD authority in use. Dort wo AAD-Konten konfiguriert wurden, sollten Sie Ihre eigene Umgebung verwenden.You should use your own environment where AAD accounts have been configured. Erforderlich, wenn die App ADAL verwendet.Required if the app uses ADAL. Wenn dieser Wert nicht vorhanden ist, wird der Intune-Standard verwendet.If this value is absent, an Intune default is used.
ADALRedirectUriADALRedirectUri ZeichenfolgeString Der Azure AD-Umleitungs-URI der App.The app’s Azure AD redirect URI. ADALRedirectUri oder ADALRedirectScheme ist erforderlich, wenn die App ADAL verwendet.ADALRedirectUri or ADALRedirectScheme is required if the app uses ADAL.
ADALRedirectSchemeADALRedirectScheme ZeichenfolgeString Das Azure AD-Umleitungsschema der App.The app's Azure AD redirect scheme. Dies kann anstelle von ADALRedirectUri verwendet werden, wenn der Umleitungs-URI der App im Format scheme://bundle_id vorliegt.This can be used in place of ADALRedirectUri if the application's redirect URI is in the format scheme://bundle_id. ADALRedirectUri oder ADALRedirectScheme ist erforderlich, wenn die App ADAL verwendet.ADALRedirectUri or ADALRedirectScheme is required if the app uses ADAL.
ADALLogOverrideDisabledADALLogOverrideDisabled BooleschBoolean Gibt an, ob das SDK alle ADAL-Protokolle (einschließlich ADAL-Aufrufe von der App, sofern zutreffend) in die eigene Protokolldatei einschließt.Specifies whether the SDK will route all ADAL logs (including ADAL calls from the app, if any) to its own log file. Standardwert ist "NO".Defaults to NO. Legen Sie den Wert auf „YES“ fest, wenn die App einen eigenen ADAL-Protokollrückruf festlegt.Set to YES if the app will set its own ADAL log callback. (Optional)Optional.
ADALCacheKeychainGroupOverrideADALCacheKeychainGroupOverride ZeichenfolgeString Gibt die Schlüsselbundgruppe an, die für den ADAL-Cache anstelle von „com.microsoft.adalcache“ verwendet werden soll.Specifies the keychain group to use for the ADAL cache, instead of “com.microsoft.adalcache." Beachten Sie, dass diese das App-ID-Präfix nicht enthält.Note that this doesn’t have the app-id prefix. Das Präfix wird der angegebenen Zeichenfolge zur Laufzeit vorangestellt.That will be prefixed to the provided string at runtime. (Optional)Optional.
AppGroupIdentifiersAppGroupIdentifiers ZeichenfolgenarrayArray of string Ein Array mit App-Gruppen aus dem Berechtigungsabschnitt "com.apple.security.application-groups" der App.Array of app groups from the app’s entitlements com.apple.security.application-groups section. Erforderlich, wenn die App Anwendungsgruppen verwendet.Required if the app uses application groups.
ContainingAppBundleIdContainingAppBundleId ZeichenfolgeString Gibt die Paket-ID der Anwendung an, die die Erweiterung enthält.Specifies the bundle ID of the extension’s containing application. Erforderlich für iOS-Extensions.Required for iOS extensions.
DebugSettingsEnabledDebugSettingsEnabled BooleschBoolean Bei der Einstellung JA können innerhalb des Einstellungspakets Testrichtlinien angewendet werden.If set to YES, test policies within the Settings bundle can be applied. Diese Einstellungen sollte bei ausgelieferten Anwendungen nicht aktiviert sein.Applications should not be shipped with this setting enabled. (Optional)Optional.
MainNibFileMainNibFile
MainNibFile~ipadMainNibFile~ipad
ZeichenfolgeString Diese Einstellung sollte den Namen der Haupt-NIB-Datei der Anwendung enthalten.This setting should have the application’s main nib file name. Erforderlich, wenn MainNibFile für die Anwendung in der Datei „Info.plist“ definiert ist.Required if the application defines MainNibFile in Info.plist.
MainStoryboardFileMainStoryboardFile
MainStoryboardFile~ipadMainStoryboardFile~ipad
ZeichenfolgeString Diese Einstellung sollte den Namen der Haupt-Storyboard-Datei der Anwendung enthalten.This setting should have the application’s main storyboard file name. Erforderlich, wenn UIMainStoryboardFile für die Anwendung in der Datei „Info.plist“ definiert ist.Required if the application defines UIMainStoryboardFile in Info.plist.
AutoEnrollOnLaunchAutoEnrollOnLaunch BooleschBoolean Gibt an, ob die App versuchen soll, sich beim Start automatisch zu registrieren, wenn eine vorhandene verwaltete Identität erkannt wurde und dies noch nicht passiert ist.Specifies whether the app should attempt to automatically enroll on launch if an existing managed identity is detected and it has not yet done so. Standardwert ist "NO".Defaults to NO.

Hinweise: Wenn keine verwaltete Identität gefunden wird oder kein gültiges Token für die Identität im ADAL-Cache verfügbar ist, schlägt die Registrierung ohne die Anforderung nach Anmeldeinformationen im Hintergrund fehl, es sei denn, MAMPolicyRequired ist auf JA festgelegt.Notes: If no managed identity is found or no valid token for the identity is available in the ADAL cache, the enrollment attempt will silently fail without prompting for credentials, unless the app has also set MAMPolicyRequired to YES.
(Optional)Optional.
MAMPolicyRequiredMAMPolicyRequired BooleschBoolean Gibt an, ob das Starten der App blockiert ist, wenn die App über keine Intune App-Schutzrichtlinie verfügt.Specifies whether the app will be blocked from starting if the app does not have an Intune app protection policy. Standardwert ist "NO".Defaults to NO.

Hinweise: Apps, bei denen die MAMPolicyRequired-Einstellung auf „JA“ festgelegt ist, können nicht im App Store eingereicht werden.Notes: Apps cannot be submitted to the App Store with MAMPolicyRequired set to YES. Wenn MAMPolicyRequired auf JA festgelegt wird, muss auch AutoEnrollOnLaunch auf JA festgelegt werden.When setting MAMPolicyRequired to YES, AutoEnrollOnLaunch should also be set to YES.
(Optional)Optional.
MAMPolicyWarnAbsentMAMPolicyWarnAbsent BooleschBoolean Gibt an, ob die App den Benutzer beim Start warnt, wenn die App keine App-Schutzrichtlinie für Intune hat.Specifies whether the app will warn the user during launch if the app does not have an Intune app protection policy.

Hinweis: Benutzer dürfen noch immer die App ohne Richtlinie verwenden, nachdem die Warnung verworfen wurde.Note: Users will still be allowed to use the app without policy after dismissing the warning.
(Optional)Optional.
MultiIdentityMultiIdentity BooleschBoolean Gibt an, ob die App den Umgang mit mehreren Identitäten beherrscht.Specifies whether the app is multi-identity aware. (Optional)Optional.
SplashIconFileSplashIconFile
SplashIconFile~ipadSplashIconFile~ipad
ZeichenfolgeString Gibt die Datei für das Intune-Begrüßungssymbol (Startsymbol) an.Specifies the Intune splash (startup) icon file. (Optional)Optional.
SplashDurationSplashDuration ZahlNumber Mindestdauer in Sekunden, für die der Intune Startbildschirm beim Anwendungsstart angezeigt wird.Minimum amount of time, in seconds, that the Intune startup screen will be shown at application launch. Standardwert ist 1,5.Defaults to 1.5. (Optional)Optional.
BackgroundColorBackgroundColor ZeichenfolgeString Gibt die Hintergrundfarbe für den Start- und den PIN-Bildschirm an.Specifies the background color for the startup and PIN screens. Akzeptiert eine hexadezimale RGB-Zeichenfolge im Format „#XXXXXX“, wobei X Werte von 0-9 bzw. A-F annehmen kann.Accepts a hexadecimal RGB string in the form of #XXXXXX, where X can range from 0-9 or A-F. Das Gatterzeichen kann ausgelassen werden.The pound sign might be omitted. (Optional)Optional. Der Standardwert ist „Hellgrau“.Defaults to light grey.
ForegroundColorForegroundColor ZeichenfolgeString Gibt die Vordergrundfarbe für den Start- und den PIN-Bildschirm an, etwa die Textfarbe.Specifies the foreground color for the startup and PIN screens, like text color. Akzeptiert eine hexadezimale RGB-Zeichenfolge im Format „#XXXXXX“, wobei X Werte von 0-9 bzw. A-F annehmen kann.Accepts a hexadecimal RGB string in the form of #XXXXXX, where X can range from 0-9 or A-F. Das Gatterzeichen kann ausgelassen werden.The pound sign might be omitted. (Optional)Optional. Der Standardwert ist „Schwarz“.Defaults to black.
AccentColorAccentColor ZeichenfolgeString Gibt die Akzentfarbe für den PIN-Bildschirm an, etwa die Textfarbe einer Schaltfläche oder die Hervorhebungsfarbe für ein Feld.Specifies the accent color for the PIN screen, like button text color and box highlight color. Akzeptiert eine hexadezimale RGB-Zeichenfolge im Format „#XXXXXX“, wobei X Werte von 0-9 bzw. A-F annehmen kann.Accepts a hexadecimal RGB string in the form of #XXXXXX, where X can range from 0-9 or A-F. Das Gatterzeichen kann ausgelassen werden.The pound sign might be omitted. (Optional)Optional. Der Standardwert ist „Blau“ (Systemfarbe).Defaults to system blue.
MAMTelemetryDisabledMAMTelemetryDisabled BooleschBoolean Gibt an, ob das SDK keine Telemetriedaten an sein Back-End sendet.Specifies if the SDK will not send any telemetry data to its back end. (Optional)Optional.
WebViewHandledURLSchemesWebViewHandledURLSchemes Array von ZeichenfolgenArray of Strings Gibt die URL-Schemas an, die WebView für Ihre App verarbeitet.Specifies the URL schemes that your app's WebView handles. Erforderlich, wenn Ihre App WebView verwendet, das URLs über Verknüpfungen und/oder JavaScript verarbeitet.Required if your app uses a WebView that handles URLs via links and/or javascript.

Hinweis

Gemäß den App Store-Standards muss MAMPolicyRequired auf „NO“ festgelegt sein, wenn Ihre App im App Store veröffentlicht werden soll.If your app will be released to the App Store, MAMPolicyRequired must be set to "NO," per App Store standards.

Aktivieren der MAM-Zielkonfiguration für Ihre iOS-AnwendungenEnabling MAM targeted configuration for your iOS applications

Die MAM-Zielkonfiguration ermöglicht, dass eine App Konfigurationsdaten über das Intune App SDK erhalten kann.MAM targeted configuration allows an app to receive configuration data through the Intune App SDK. Das Format und die Varianten dieser Daten müssen definiert und Intune-Kunden vom Besitzer oder Entwickler der Anwendung mitgeteilt werden.The format and variants of this data must be defined and communicated to Intune customers by the application owner/developer. Intune-Administratoren können Konfigurationsdaten über das Intune Azure-Portal als Ziel festlegen und bereitstellen.Intune administrators can target and deploy configuration data via the Intune Azure portal. Beim Intune App SDK für iOS (Version 7.0.1) können Apps, die an der MAM-Zielkonfiguration teilnehmen, über den MAM-Dienst mit MAM-Zielkonfigurationsdaten versorgt werden.As of the Intune App SDK for iOS (v 7.0.1), apps that are participating in MAM targeted configuration can be provded MAM targeted configuration data via the MAM Service. Die Anwendungskonfigurationsdaten werden durch unseren MAM-Dienst direkt an die App übertragen, und nicht über den MDM-Kanal.The application configuration data is pushed through our MAM Service directly to the app instead of through the MDM channel. Das Intune App SDK stellt eine Klasse für den Zugriff auf die Daten bereit, die aus diesen Konsolen abgerufen wurden.The Intune App SDK provides a class to access the data retrieved from these consoles. Folgende Voraussetzungen sind erforderlich:Consider the following as prerequisites:

  • Die App muss für MAM-WE registriert werden, bevor Sie auf die Benutzeroberfläche der MAM-Zielkonfiguration zugreifen.The app needs to be MAM-WE enrolled before you access the MAM targeted config UI. Weitere Informationen zu MAM-WE finden Sie unter App-Schutzrichtlinie ohne Geräteregistrierung im Intune App SDK-Entwicklerhandbuch.For more information about MAM-WE, see App protection policy without device enrollment in the Intune App SDK guide.
  • In der Quelldatei der App muss IntuneMAMAppConfigManager.h enthalten sein.Include IntuneMAMAppConfigManager.h in your app's source file.
  • Rufen Sie [[IntuneMAMAppConfig instance] appConfigForIdentity:] auf, um das App-Konfigurationsobjekt zu erhalten.Call [[IntuneMAMAppConfig instance] appConfigForIdentity:] to get the App Config Object.
  • Rufen Sie den entsprechenden Selektor auf dem Objekt IntuneMAMAppConfig auf.Call the appropriate selector on IntuneMAMAppConfig object. Wenn es sich zum Beispiel beim Schlüssel Ihrer Anwendung um eine Zeichenfolge handeln, könnten Sie stringValueForKey oder allStringsForKey verwenden.For example, if your application's key is a string, you'd want to use stringValueForKey or allStringsForKey. Die Datei IntuneMAMAppConfig.h header enthält Rückgabewerte und Fehlerbedingungen.The IntuneMAMAppConfig.h header file talks about return values/error conditions.

Weitere Informationen zu den Funktionen der Graph-API in Bezug auf die MAM-Zielkonfigurationswerte finden Sie unter Graph API Reference MAM Targeted Config (Graph-API-Referenz für MAM-Zielkonfigurationen).For more information about the capabilities of the Graph API with respect to the MAM targeted configuration values, see Graph API Reference MAM Targeted Config.

Weitere Informationen zum Erstellen einer MAM-Zielkonfigurationsrichtlinie für Apps in iOS finden Sie im Abschnitt zu MAM-Zielkonfiguration für Apps unter How to use Microsoft Intune app configuration policies for iOS (Verwenden von Microsoft Intune-App-Konfigurationsrichtlinien für iOS).For more information about how to create a MAM targeted app configuration policy in iOS, see the section on MAM targeted app config in How to use Microsoft Intune app configuration policies for iOS.

TelemetrieTelemetry

Standardmäßig protokolliert das Intune App SDK für iOS Telemetriedaten zu den folgenden Nutzungsereignissen.By default, the Intune App SDK for iOS logs telemetry data on the following usage events. Diese Daten werden an Microsoft Intune gesendet.This data is sent to Microsoft Intune.

  • Start der App: Übermittelt an Microsoft Intune Daten zur Nutzung von MAM-aktivierten Apps nach Verwaltungsart (MAM mit MDM, MAM ohne MDM-Registrierung usw.).App launch: To help Microsoft Intune learn about MAM-enabled app usage by management type (MAM with MDM, MAM without MDM enrollment, and so on).

  • Registrierungsaufruf: Übermittelt die Erfolgsquote und andere Leistungsindikatoren von Registrierungsaufrufen, die von der Clientseite initiiert wurden,an Microsoft Intune.Enrollment calls: To help Microsoft Intune learn about success rate and other performance metrics of enrollment calls initiated from the client side.

Hinweis

Wenn von Ihrer mobilen Anwendung keine Intune App SDK-Telemetriedaten an Microsoft Intune gesendet werden sollen, müssen Sie die Intune App SDK-Telemetrieerfassung deaktivieren.If you choose not to send Intune App SDK telemetry data to Microsoft Intune from your mobile application, you must disable Intune App SDK telemetry capture. Legen Sie die Eigenschaft MAMTelemetryDisabled im IntuneMAMSettings-Wörterbuch auf „YES“ fest.Set the property MAMTelemetryDisabled to YES in the IntuneMAMSettings dictionary.

Aktivierung mehrerer Identitäten (optional)Enable multi-identity (optional)

Standardmäßig wird eine Richtlinie vom SDK auf die gesamte App angewendet.By default, the SDK applies a policy to the app as a whole. Die Unterstützung für mehrere Identitäten ist ein MAM-Feature, das Sie aktivieren können, um eine Richtlinie auf der Ebene einzelner Identitäten anzuwenden.Multi-identity is a MAM feature that you can enable to apply a policy on a per-identity level. Dies erfordert eine stärkere Beteiligung der App als andere MAM-Features.This requires more app participation than other MAM features.

Die App muss das App-SDK informieren, wenn sie die Änderung der aktiven Identität beabsichtigt.The app must inform the app SDK when it intends to change the active identity. Das SDK benachrichtigt seinerseits die App, wenn eine Änderung der Identität erforderlich ist.The SDK also notifies the app when an identity change is required. Aktuell wird nur eine verwaltete Identität unterstützt.Currently, only one managed identity is supported. Nachdem der Benutzer das Gerät oder die App registriert hat, verwendet das SDK die dabei verwendete Identität und betrachtet sie als die primäre verwaltete Identität.After the user enrolls the device or the app, the SDK uses this identity and considers it the primary managed identity. Andere Benutzer der App werden als nicht verwaltet mit uneingeschränkten Richtlinieneinstellungen behandelt.Other users in the app will be treated as unmanaged with unrestricted policy settings.

Beachten Sie, dass eine Identität einfach in Form einer Zeichenfolge definiert wird.Note that an identity is simply defined as a string. Bei Identitäten werden Groß- und Kleinschreibung nicht unterschieden.Identities are case-insensitive. Anforderungen einer Identität beim SDK werden möglicherweise nicht mit der gleichen Groß-/Kleinschreibung zurückgegeben, die ursprünglich beim Festlegen der Identität verwendet wurde.Requests to the SDK for an identity might not return the same casing that was originally used when the identity was set.

Identität (Übersicht)Identity overview

Eine Identität ist einfach der Benutzername eines Kontos (z.B. user@contoso.com).An identity is simply the user name of an account (for example, user@contoso.com). Entwickler können die Identität der App auf den folgenden Ebenen festlegen:Developers can set the identity of the app on the following levels:

  • Prozessidentität: Legt die prozessweite Identität fest und wird in der Hauptsache für Anwendungen mit nur einer Identität verwendet.Process identity: Sets the process-wide identity and is mainly used for single identity applications. Diese Identität betrifft alle Aufgaben, Dateien und die Benutzeroberfläche.This identity affects all tasks, files, and UI.

  • UI-Identität: Legt fest, welche Richtlinien auf Benutzeroberflächenaufgaben im Hauptthread angewendet werden, z. B. Ausschneiden/Kopieren/Einfügen, PIN, Authentifizierung und Datenfreigabe.UI identity: Determines what policies are applied to UI tasks on the main thread, like cut/copy/paste, PIN, authentication, and data sharing. Die UI-Identität wirkt sich nicht auf Dateiaufgaben wie Verschlüsselung und Sicherung aus.The UI identity does not affect file tasks like encryption and backup.

  • Threadidentität: Wirkt sich darauf aus, welche Richtlinien auf den aktuellen Thread angewendet werden.Thread identity: Affects what policies are applied on the current thread. Diese Identität betrifft alle Aufgaben, Dateien und die Benutzeroberfläche.This identity affects all tasks, files, and UI.

Es ist Aufgabe der App, die Identitäten passend für verwaltete und nicht verwaltete Benutzer festzulegen.The app is responsible for setting the identities appropriately, whether or not the user is managed.

Jeder Thread weist jederzeit eine effektive Identität für Benutzeroberflächen- und Dateiaufgaben auf.At any time, every thread has an effective identity for UI tasks and file tasks. Dies ist die Identität, mit der überprüft wird, welche Richtlinien, sofern zutreffend, angewendet werden sollen.This is the identity that's used to check what policies, if any, should be applied. Wenn die Identität „no identity“ ist oder der Benutzer nicht verwaltet ist, werden keine Richtlinien angewendet.If the identity is "no identity" or the user is not managed, no policies will be applied. Die unten stehenden Diagramme zeigen, wie effektive Identitäten bestimmt werden.The diagrams below show how the effective identities are determined.

Intune App SDK iOS – verknüpfte Frameworks und Bibliotheken

Thread-WarteschlangenThread queues

Apps versenden häufig asynchrone und synchrone Aufgaben an Threadwarteschlangen.Apps often dispatch asynchronous and synchronous tasks to thread queues. Das SDK fängt GCD-Aufrufe (Grand Central Dispatch) ab und ordnet den versendeten Aufgaben die aktuelle Threadidentität zu.The SDK intercepts Grand Central Dispatch (GCD) calls and associates the current thread identity with the dispatched tasks. Wenn die Aufgaben abgeschlossen sind, ändert das SDK die Threadidentität vorübergehend in die den Aufgaben zugeordnete Identität, schließt die Aufgaben ab und stellt die ursprüngliche Threadidentität wieder her.When the tasks are finished, the SDK temporarily changes the thread identity to the identity associated with the tasks, finishes the tasks, then restores the original thread identity.

Da NSOperationQueue auf GCD basiert, wird NSOperations mit der Identität des Threads zu dem Zeitpunkt ausgeführt, als die Aufgaben zur NSOperationQueue hinzugefügt wurden.Because NSOperationQueue is built on top of GCD, NSOperations will run on the identity of the thread at the time the tasks are added to NSOperationQueue. NSOperations oder direkt über GCD versendete Funktionen können die aktuelle Threadidentität ebenfalls bei ihrer Ausführung ändern.NSOperations or functions dispatched directly through GCD can also change the current thread identity as they are running. Diese Identität setzt die vom versendenden Thread geerbte Identität außer Kraft.This identity will override the identity inherited from the dispatching thread.

DateibesitzerFile owner

Das SDK verfolgt die Identitäten der lokalen Dateibesitzer und wendet Richtlinien entsprechend an.The SDK tracks the identities of local file owners and applies policies accordingly. Ein Dateibesitzer wird beim Erstellen einer Datei oder beim Öffnen einer Datei im Kürzungsmodus (truncate mode) eingerichtet.A file owner is established when a file is created or when a file is opened in truncate mode. Der Besitzer wird auf die effektive Identität für Dateiaufgaben des Threads festgelegt, der die Aufgabe ausführt.The owner is set to the effective file task identity of the thread that's performing the task.

Alternativ können Apps die Identität des Dateibesitzers mithilfe von IntuneMAMFilePolicyManager explizit festlegen.Alternatively, apps can set the file owner identity explicitly by using IntuneMAMFilePolicyManager. Apps können IntuneMAMFilePolicyManager verwenden, um den Dateibesitzer abzurufen und die Benutzeroberflächenidentität festzulegen, bevor der Dateiinhalt angezeigt wird.Apps can use IntuneMAMFilePolicyManager to retrieve the file owner and set the UI identity before showing the file contents.

Geteilte DatenShared data

Wenn die App Dateien erstellt, die Daten von verwalteten und nicht verwalteten Benutzern enthalten, ist es ihre Aufgabe, die Daten der verwalteten Benutzer zu verschlüsseln.If the app creates files that have data from both managed and unmanaged users, the app is responsible for encrypting the managed user’s data. Sie können Daten mithilfe der protect- und unprotect-APIs in IntuneMAMDataProtectionManager verschlüsseln.You can encrypt data by using the protect and unprotect APIs in IntuneMAMDataProtectionManager.

Die protect-Methode akzeptiert eine Identität, bei der es sich um einen verwalteten oder nicht verwalteten Benutzer handeln kann.The protect method accepts an identity that can be a managed or unmanaged user. Wenn der Benutzer verwaltet ist, werden die Daten verschlüsselt.If the user is managed, the data will be encrypted. Wenn es sich um einen nicht verwalteten Benutzer handelt, wird den Daten ein Header hinzugefügt, der die Identität verschlüsselt, die Daten selbst werden jedoch nicht verschlüsselt.If the user is unmanaged, a header will be added to the data that's encoding the identity, but the data will not be encrypted. Sie können die protectionInfo-Methode verwenden, um den Besitzer der Daten abzurufen.You can use the protectionInfo method to retrieve the data’s owner.

FreigabeerweiterungenShare extensions

Wenn die App eine Freigabeerweiterungen enthält, kann der Besitzer des freigegebenen Elements mithilfe der protectionInfoForItemProvider-Methode in IntuneMAMDataProtectionManager abgerufen werden.If the app has a share extension, the owner of the item being shared can be retrieved through the protectionInfoForItemProvider method in IntuneMAMDataProtectionManager. Wenn es sich bei dem freigegebenen Element um eine Datei handelt, übernimmt das SDK das Festlegen des Dateibesitzers.If the shared item is a file, the SDK will handle setting the file owner. Wenn es sich bei dem freigegebenen Element um Daten handelt, muss die App den Besitzer der Datei festlegen, wenn diese Daten in einer Datei gespeichert werden, und die setUIPolicyIdentity-API aufrufen, bevor die Daten in der Benutzeroberfläche angezeigt werden.If the shared item is data, the app is responsible for setting the file owner if this data is persisted to a file, and for calling the setUIPolicyIdentity API before showing this data in the UI.

Aktivieren der Unterstützung für mehrere IdentitätenTurning on multi-identity

Standardmäßig werden Apps als Einzelidentitäts-Apps betrachtet.By default, apps are considered single identity. Das SDK legt die Prozessidentität auf den registrierten Benutzer fest.The SDK sets the process identity to the enrolled user. Um die Unterstützung für mehrere Identitäten zu aktivieren, fügen Sie dem Wörterbuch „IntuneMAMSettings“ in der Datei „Info.plist“ der App eine boolesche Einstellung mit dem Namen MultiIdentity und dem Wert „YES“ hinzu.To enable multi-identity support, add a Boolean setting with the name MultiIdentity and a value of YES to the IntuneMAMSettings dictionary in the app's Info.plist file.

Hinweis

Wenn die Unterstützung für mehrere Identitäten aktiviert ist, werden die Prozessidentität, die Benutzeroberflächenidentität und die Threadidentitäten auf „nil“ festgelegt.When multi-identity is enabled, the process identity, UI identity, and thread identities are set to nil. Es ist Aufgabe der App, die entsprechenden Einstellungen vorzunehmen.The app is responsible for setting them appropriately.

Wechseln von IdentitätenSwitching identities

  • Von der App eingeleiteter Identitätswechsel:App-initiated identity switch:

    Beim Starten werden mehrere Identitäten als unter einem unbekannten, nicht verwalteten Konto angesehen.At launch, multi-identity apps are considered to be running under an unknown, unmanaged account. Die Benutzeroberfläche für bedingten Start wird nicht ausgeführt, und für die App werden keine Richtlinien durchgesetzt.The conditional launch UI will not run, and no policies will be enforced on the app. Die App muss das SDK bei jedem beabsichtigten Wechsel der Identität benachrichtigen.The app is responsible for notifying the SDK whenever the identity should be changed. Normalerweise geschieht das, wenn die App im Begriff ist, Daten für ein bestimmtes Benutzerkonto anzuzeigen.Typically, this will happen whenever the app is about to show data for a specific user account.

    Ein Beispiel dafür ist, wenn der Benutzer versucht, ein Dokument, ein Postfach oder eine Registerkarte in einem Notizbuch zu öffnen.An example is when the user attempts to open a document, a mailbox, or a tab in a notebook. Die App muss das SDK benachrichtigen, bevor die Datei, das Postfach oder die Registerkarte tatsächlich geöffnet wird.The app needs to notify the SDK before the file, mailbox, or tab is actually opened. Dies erfolgt mithilfe der setUIPolicyIdentity-API in IntuneMAMPolicyManager.This is done through the setUIPolicyIdentity API in IntuneMAMPolicyManager. Diese API sollte unabhängig davon aufgerufen werden, ob der Benutzer verwaltet ist oder nicht.This API should be called whether or not the user is managed. Wenn der Benutzer verwaltet ist, führt das SDK die Prüfungen für den bedingten Start aus (z. B. Jailbreakerkennung, PIN und Authentifizierung).If the user is managed, the SDK will perform the conditional launch checks, like jailbreak detection, PIN, and authentication.

    Das Ergebnis des Identitätswechsels wird asynchron mithilfe eines Abschlusshandlers an die App zurückgegeben.The result of the identity switch is returned to the app asynchronously through a completion handler. Die App sollte mit dem Öffnen von Dokument, Postfach oder Registerkarte solange warten, bis ein Ergebniscode für den Erfolg zurückgegeben wird.The app should postpone opening the document, mailbox, or tab until a success result code is returned. Bei einem Fehler beim Identitätswechsel sollte die App die Aufgabe abbrechen.If the identity switch failed, the app should cancel the task.

  • Vom SDK eingeleiteter Identitätswechsel:SDK-initiated identity switch:

    Manchmal muss das SDK die App bitten, zu einer bestimmten Identität zu wechseln.Sometimes, the SDK needs to ask the app to switch to a specific identity. Apps, die mehrere Identitäten unterstützen, müssen die identitySwitchRequired-Methode in IntuneMAMPolicyDelegate implementieren, um diese Anforderung zu verarbeiten.Multi-identity apps must implement the identitySwitchRequired method in IntuneMAMPolicyDelegate to handle this request.

    Wenn die App beim Aufruf der Methode imstande ist, die Anforderung des Wechselns zu einer angegebenen Identität auszuführen, sollte sie IntuneMAMAddIdentityResultSuccess im Abschlusshandler übergeben.When this method is called, if the app can handle the request to switch to the specified identity, it should pass IntuneMAMAddIdentityResultSuccess into the completion handler. Wenn sie den Identitätswechsel nicht vornehmen kann, sollte die App IntuneMAMAddIdentityResultFailed im Abschlusshandler übergeben.If it can't handle switching the identity, the app should pass IntuneMAMAddIdentityResultFailed into the completion handler.

    Die App muss als Reaktion auf diesen Aufruf nicht setUIPolicyIdentity aufrufen.The app does not have to call setUIPolicyIdentity in response to this call. Wenn das SDK bei der App den Wechsel zu einem nicht verwalteten Benutzerkonto anfordern muss, wird im Aufruf identitySwitchRequired eine leere Zeichenfolge übergeben.If the SDK needs the app to switch to an unmanaged user account, the empty string will be passed into the identitySwitchRequired call.

  • Selektives Zurücksetzen:Selective wipe:

    Wenn die App selektiv zurückgesetzt wird, ruft das SDK die wipeDataForAccount-Methode in IntuneMAMPolicyDelegate auf.When the app is selectively wiped, the SDK will call the wipeDataForAccount method in IntuneMAMPolicyDelegate. Es ist Aufgabe der App, das Konto des angegebenen Benutzers und alle ihm zugeordneten Daten zu entfernen.The app is responsible for removing the specified user’s account and any data associated with it. Das SDK ist imstande, alle Dateien im Besitz des Benutzer zu entfernen, und führt dies durch, wenn von der App auf den wipeDataForAccount-Aufruf „FALSE“ zurückgegeben wird.The SDK is capable of removing all files owned by the user and will do so if the app returns FALSE from the wipeDataForAccount call.

    Beachten Sie, dass diese Methode aus einem Hintergrundthread aufgerufen wird.Note that this method is called from a background thread. Die App sollte keinen Wert zurückgeben, bevor alle Daten für den Benutzer entfernt wurden (mit Ausnahme der Dateien, wenn die App „FALSE“ zurückgibt).The app should not return a value until all data for the user has been removed (with the exception of files if the app returns FALSE).

Testen der Einstellungen für die App-Schutzrichtlinie in XcodeTest app protection policy settings in Xcode

Bevor Sie Ihre Intune-fähige App in der Produktion testen, können Sie in Xcode eine Settings.bundle-Datei verwenden.Before you manually test your Intune-enlightened app in production, you can use a Settings.bundle file while in Xcode. Dies ermöglicht Ihnen die Festlegung von App-Schutzrichtlinien zum Testen, ohne dass eine Verbindung mit Intune erforderlich wird.This will let you set app protection policies for testing without requiring a connection to Intune.

Aktivieren des Testens von RichtlinienEnable policy testing

Gehen Sie folgendermaßen vor, um das Testen von Richtlinien in Xcode zu aktivieren:Follow the steps below to enable policy testing in Xcode:

  1. Vergewissern Sie sich, dass Sie mit einem Debugbuild arbeiten.Make sure to be in a debug build. Fügen Sie eine Settings.bundle-Datei hinzu, indem Sie mit der rechten Maustaste auf den Ordner der obersten Ebene im Projekt klicken.Add a Settings.bundle file by right-clicking the top-level folder in your project. Wählen Sie Add > New File im Menü aus.Choose Add > New File from the menu. Wählen Sie unter Resources die Vorlage Settings Bundle aus.Under Resources, choose the Settings Bundle template.

  2. Kopieren Sie den folgenden Block für den Debugbuild in die Settings.bundle/Root.plist-Datei:Copy the following block to the Settings.bundle/Root.plist file for the debug build:

    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSChildPaneSpecifier</string>
            <key>Title</key>
            <string>MDM Debug Settings</string>
            <key>Key</key>
            <string>MAMDebugSettings</string>
            <key>File</key>
            <string>MAMDebugSettings</string>
        </dict>
    </array>
    
  3. Fügen Sie im IntuneMAMSettings-Wörterbuch in der „Info.plist“ der App einen booleschen Wert namens DebugSettingsEnabled hinzu.In the IntuneMAMSettings dictionary in the app's Info.plist, add a boolean called "DebugSettingsEnabled." Legen Sie für DebugSettingsEnabled den Wert „YES“ fest.Set the value of DebugSettingsEnabled to "YES."

Einstellungen für die App-SchutzrichtlinieApp protection policy settings

In der folgenden Tabelle werden die Einstellungen der App-Schutzrichtlinie beschrieben, die Sie mit MAMDebugSettings.plist testen können.The table below describes the app protection policy settings that you can test using MAMDebugSettings.plist. Um eine Einstellung zu aktivieren, fügen Sie sie MAMDebugSettings.plist hinzu.To turn on a setting, add it in MAMDebugSettings.plist.

Name der RichtlinieneinstellungPolicy setting name BeschreibungDescription Mögliche WertePossible values
AccessRecheckOfflineTimeoutAccessRecheckOfflineTimeout Der Zeitraum in Minuten, für den die App offline sein kann, bevor Intune das Starten der App oder ihre Fortsetzung blockiert, wenn die Authentifizierung aktiviert ist.The length of time in minutes the app can be offline before Intune blocks the app from launching or resuming if authentication is enabled. Beliebige ganze Zahl größer als 0Any integer greater than 0
AccessRecheckOnlineTimeoutAccessRecheckOnlineTimeout Der Zeitraum in Minuten, für den die App ausgeführt werden kann, bevor der Benutzer beim Starten oder Fortsetzen zur Eingabe der PIN oder zur Authentifizierung aufgefordert wird (wenn Authentifizierung oder PIN für den Zugriff aktiviert ist).The length of time in minutes the app can run before the user is prompted for PIN or authentication at launch or resume (if authentication or PIN for access is enabled). Beliebige ganze Zahl größer als 0Any integer greater than 0
AppSharingFromLevelAppSharingFromLevel Gibt an, von welchen Apps diese App Daten akzeptieren kann.Specifies which apps this app can accept data from. 0 =0 =

Empfohlene Methoden für iOSiOS best practices

Hier finden Sie empfohlene und bewährte Methoden für die Entwicklung für iOS:Here are recommended best practices for developing for iOS:

  • Beim iOS-Dateisystem werden Groß-/Kleinschreibung berücksichtigt.The iOS file system is case-sensitive. Vergewissern Sie sich, dass Dateinamen wie libIntuneMAM.a und IntuneMAMResources.bundle die richtige Groß-/Kleinschreibung aufweisen.Ensure that the case is correct for file names like libIntuneMAM.a and IntuneMAMResources.bundle.

  • Wenn Xcode Probleme beim Suchen nach libIntuneMAM.a hat, können Sie das Problem beheben, indem Sie den Pfad zu dieser Bibliothek den Linkersuchpfaden hinzufügen.If Xcode has trouble finding libIntuneMAM.a, you can fix the problem by adding the path to this library into the linker search paths.

Häufig gestellte FragenFAQs

Sind alle APIs durch die native Swift- oder die Objective-C- und Swift-Interoperabilität erreichbar?Are all of the APIs addressable through native Swift or the Objective-C and Swift interoperability?

Die Intune App SDK-APIs arbeiten ausschließlich in der Objective-C-Programmiersprache und unterstützen nicht die native Sprache Swift.The Intune App SDK APIs are in Objective-C only and do not support native Swift. Swift-Interoperabilität mit Objective-C ist erforderlich.Swift interoperability with Objective-C is required.

Müssen alle Benutzer meiner Anwendung beim APP-WE-Dienst registriert werden?Do all users of my application need to be registered with the APP-WE service?

Nein.No. Nur Arbeits-, Schul- oder Unikonten sollten beim Intune App SDK registriert werden.In fact, only work or school accounts should be registered with the Intune App SDK. Die Apps sind dafür zuständig, zu bestimmen, ob ein Konto in einem Arbeits-, Schul- oder Unikontext verwendet wird.Apps are responsible for determining if an account is used in a work or school context.

Was ist mit Benutzern, die bereits bei der Anwendung angemeldet sind? Müssen sie registriert sein?What about users that have already signed in to the application? Do they need to be enrolled?

Es ist Aufgabe der Anwendung, Benutzer zu registrieren, nachdem sie erfolgreich authentifiziert wurden.The application is responsible for enrolling users after they have been successfully authenticated. Die Anwendung muss außerdem alle vorhandenen Konten registrieren, die bereits vorhanden waren, bevor die Anwendung über MAM-Funktionalität ohne MDM-Registrierung verfügte.The application is also responsible for enrolling any existing accounts that might have been present before the application had MDM-less MAM functionality.

Zu diesem Zweck sollte die Anwendung die registeredAccounts:-Methode verwenden.To do this, the application should make use of the registeredAccounts: method. Diese Methode gibt ein NSDictionary zurück, das sämtliche beim Intune MAM-Dienst registrierten Konten enthält.This method returns an NSDictionary that has all of the accounts registered into the Intune MAM service. Wenn in der Anwendung bestehende Konten in der Liste nicht vorhanden sind, sollte die Anwendung diese Konten mithilfe von registerAndEnrollAccount: registrieren.If any existing accounts in the application are not in the list, the application should register and enroll those accounts via registerAndEnrollAccount:.

Wie oft wiederholt das SDK Registrierungsversuche?How often does the SDK retry enrollments?

Das SDK wiederholt alle zuvor mit einem Fehler abgebrochenen Registrierungsversuche in einem 24-Stunden-Intervall.The SDK will automatically retry all previously failed enrollments on a 24-hour interval. Das SDK geht so vor, um sicherzustellen, dass ein Benutzer erfolgreich registriert wird und Richtlinien auf sein Konto angewendet werden, wenn die Organisation MAM erst nach der Anmeldung des Benutzers bei der Anwendung aktiviert hat.The SDK does this to ensure that if a user’s organization enabled MAM after the user signed in to the application, the user will successfully enroll and receive policies.

Das SDK stellt die Wiederholungsversuche ein, wenn es feststellt, dass ein Benutzer die Anwendung erfolgreich registriert hat.The SDK will stop retrying when it detects that a user has successfully enrolled the application. Dies hat den Grund, dass immer nur ein Benutzer eine Anwendung registrieren kann.This is because only one user can enroll an application at a particular time. Wenn die Registrierung des Benutzers aufgehoben wird, beginnen die Registrierungsversuche wieder mit dem gleichen 24-Stunden-Intervall.If the user is unenrolled, the retries will begin again on the same 24-hour interval.

Warum muss die Registrierung des Benutzers aufgehoben werden?Why does the user need to be deregistered?

Das SDK führt im Hintergrund in regelmäßigen Abständen die folgenden Aktionen aus:The SDK will take these actions in the background periodically:

  • Wenn die Anwendung noch nicht registriert ist, versucht es, alle registrierten Konten alle 24 Stunden zu registrieren.If the application is not yet enrolled, it will try to enroll all registered accounts every 24 hours.
  • Wenn die Anwendung registriert ist, prüft das SDK alle 8 Stunden auf App-Schutzrichtlinienaktualisierungen.If the application is enrolled, the SDK will check for app protection policy updates every 8 hours.

Durch Aufheben der Registrierung eines Benutzers teilt die Anwendung dem SDK mit, dass der Benutzer die Anwendung nicht mehr verwendet und alle regelmäßigen Aktionen für dieses Benutzerkonto vom SDK eingestellt werden können.Deregistering a user notifies the SDK that the user will no longer use the application, and the SDK can stop any of the periodic events for that user account. Dadurch werden außerdem das Aufheben der Registrierung und ggf. das selektive Zurücksetzen ausgelöst.It also triggers an app unenroll and selective wipe if necessary.

Soll das doWipe-Flag in der Methode zum Aufheben der Registrierung auf wahr festgelegt werden?Should I set the doWipe flag to true in the deregister method?

Diese Methode sollte aufgerufen werden, bevor der Benutzer bei der Anwendung abgemeldet wird.This method should be called before the user is signed out of the application. Wenn die Daten des Benutzers im Rahmen der Abmeldung aus der Anwendung gelöscht werden, kann doWipe auf „false“ festgelegt werden.If the user’s data is deleted from the application as part of the sign-out, doWipe can be set to false. Wenn die Anwendung die Daten des Benutzers jedoch nicht entfernt, sollte doWipe auf „true“ festgelegt werden, damit das SDK die Daten löschen kann.But if the application does not remove the user’s data, doWipe should be set to true so that the SDK can delete the data.

Gibt es andere Möglichkeiten zum Aufheben der Registrierung einer Anwendung?Are there any other ways that an application can be un-enrolled?

Ja, der IT-Administrator kann einen Befehl zum selektiven Zurücksetzen an die Anwendung senden.Yes, the IT admin can send a selective wipe command to the application. Dadurch wird die Registrierung aufgehoben und der Benutzer abgemeldet, und die Daten des Benutzers werden zurückgesetzt.This will deregister and unenroll the user, and it will wipe the user’s data. Das SDK wickelt dieses Szenario automatisch ab und sendet mithilfe der Stellvertretermethode zum Aufheben der Registrierung eine Benachrichtigung.The SDK automatically handles this scenario and sends a notification via the unenroll delegate method.

Übermitteln Ihrer App an den App StoreSubmit your app to the App Store

Sowohl die statische Bibliothek als auf Frameworkbuilds des Intune App SDK sind universelle Binärdateien.Both the static library and framework builds of the Intune App SDK are universal binaries. Das bedeutet, dass sie Code für alle Geräte- und Simulatorarchitekturen enthalten.This means they have code for all device and simulator architectures. Apple lehnt für den App Store eingereichte Apps ab, wenn sie Simulatorcode enthalten.Apple will reject apps submitted to the App Store if they have simulator code. Beim Kompilieren mit der statischen Bibliothek für nur für Geräte bestimmte Builds entfernt der Linker den Simulatorcode automatisch.When compiling against the static library for device-only builds, the linker will automatically strip out the simulator code. Gehen Sie folgendermaßen vor, um sicherzustellen, dass der gesamte Simulatorcode entfernt wird, bevor Sie Ihre App in den App Store hochladen.Follow the steps below to ensure all simulator code is removed before you upload your app to the App Store.

  1. Stellen Sie sicher, dass sich IntuneMAM.framework auf dem Desktop befindet.Make sure IntuneMAM.framework is on your desktop.

  2. Führen Sie diese Befehle aus:Run these commands:

    lipo ~/Desktop/IntuneMAM.framework/IntuneMAM -remove i386 -remove x86_64 -output ~/Desktop/IntuneMAM.device_only
    
    cp ~/Desktop/IntuneMAM.device_only ~/Desktop/IntuneMAM.framework/IntuneMAM
    

    Der erste Befehl entfernt die Simulatorarchitekturen aus der DYLIB-Datei des Frameworks.The first command strips the simulator architectures from the framework's DYLIB file. Der zweite Befehl kopiert die nur für Geräte zuständige DYLIB-Datei wieder in das Frameworkverzeichnis.The second command copies the device-only DYLIB file back into the framework directory.