Intune App SDK für Android – Features für die App-Teilnahme

Mit dem Microsoft Intune App SDK für Android können Sie Intune-App-Schutzrichtlinien (auch als APP- oder MAM-Richtlinien bezeichnet) in Ihre native Java/Kotlin Android-App integrieren. Eine von Intune verwaltete Anwendung ist eine Anwendung, die in das Intune App SDK integriert ist. Intune-Administratoren können App-Schutzrichtlinien ganz einfach für Ihre von Intune verwaltete App bereitstellen, wenn Intune die App aktiv verwaltet.

Hinweis

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

Phase 7: Features für die App-Teilnahme

Stage Goals

  • Erfahren Sie mehr über die verschiedenen Features für die App-Teilnahme, die das Intune App SDK bietet.
  • Integrieren Sie App-Teilnahmefeatures, die für Ihre App und Ihre Benutzer relevant sind.
  • Testen Sie die Integration dieser Features.

Was sind "App-Teilnahmefeatures"?

Dieser SDK-Integrationsprozess versucht, die Menge an App-spezifischem Code zu minimieren, den Entwickler schreiben müssen. Durch den erfolgreichen Abschluss der vorherigen Phasen der SDK-Integration kann Ihre App nun die meisten App-Schutzrichtlinieneinstellungen erzwingen, z. B. Dateiverschlüsselung, Kopier-/Einfügebeschränkungen, Screenshotsperrung und Datenübertragungseinschränkungen.

Es gibt jedoch einige Einstellungen, für die appspezifischer Code erforderlich ist, um ordnungsgemäß zu erzwingen. Diese werden als Features für die App-Teilnahme bezeichnet. In der Regel verfügt das SDK nicht über genügend Kontext für den Code Ihrer Anwendung oder das Endbenutzerszenario, um diese Einstellungen automatisch zu erzwingen, und ist daher darauf angewiesen, dass Entwickler die SDK-APIs entsprechend aufrufen.

Features für die App-Teilnahme sind nicht unbedingt optional. Abhängig von den vorhandenen Features Ihrer App sind diese Features möglicherweise erforderlich. Weitere Informationen finden Sie unter Wichtige Entscheidungen für die SDK-Integration .

In den vorherigen Phasen dieses Handbuchs wurden bereits mehrere Features für die App-Teilnahme beschrieben:

Im weiteren Verlauf dieses Leitfadens werden die verbleibenden Features für die App-Teilnahme beschrieben:

  • Erzwingen Sie eine Richtlinie, die das Speichern von Dateien auf bzw. das Öffnen von Dateien aus lokalem oder Cloudspeicher einschränkt.
  • Erzwingen Sie eine Richtlinie zur Einschränkung von Inhalten in Benachrichtigungen.
  • Erzwingen Sie eine Richtlinie zum Schutz von Sicherungsdaten.
  • Erzwingen Sie eine Richtlinie zur Einschränkung der Bildschirmaufnahme (wenn Ihre App über benutzerdefinierten Bildschirmaufnahmecode verfügt).
  • Unterstützung der App-Schutzzertifizierungsstelle.
  • Registrieren Sie sich für Benachrichtigungen aus dem SDK.
  • Wenden Sie benutzerdefinierte Anwendungsdesigns an.
  • Verwenden Sie vertrauenswürdige Zertifikate von Intune, um eine Vertrauenskette für lokale Endpunkte sicherzustellen.

Grundlagen des Features "App-Teilnahme"

Die AppPolicy-Schnittstelle enthält viele Methoden, die Ihre App darüber informieren, ob bestimmte Aktionen zulässig sind.

Die meisten Features für die App-Teilnahme umfassen:

  • Identifizieren der richtigen Stelle im Code Ihrer App, um zu überprüfen, ob eine Aktion zulässig ist.
  • Aufrufen einer AppPolicy Methode, um basierend auf der aktuell konfigurierten Richtlinie zu überprüfen, ob eine Aktion zulässig ist.
  • Je nach Ergebnis können Sie entweder den Abschluss der Aktion zulassen oder das App-Verhalten ändern, wenn die Aktion blockiert wird.

Um eine AppPolicy instance abzurufen, verwenden Sie eine der MAMPolicyManager-Methoden, zgetPolicy. B. oder getPolicyForIdentity(final String identity).

Informationsmethoden in AppPolicy

Nicht jede Methode in AppPolicy ist an eine App-Teilnahmefunktion gebunden. Einige Methoden sind informativ und geben Ihrer App Daten an, für welche Richtlinien derzeit konfiguriert sind, auch wenn diese Richtlinien automatisch vom SDK erzwungen werden. Diese Methoden bieten Ihrer App die Möglichkeit, eine benutzerdefinierte Benutzeroberfläche zu präsentieren, wenn bestimmte Richtlinien konfiguriert sind.

Beispiel: Ermitteln, ob Screenshots blockiert sind

Wenn Ihre App über ein Steuerelement verfügt, mit dem der Benutzer einen Screenshot erstellen kann, können Sie dieses Steuerelement deaktivieren oder ausblenden, wenn die App-Schutzrichtlinie Screenshots blockiert hat.

Ihre App könnte dies überprüfen, indem sie aufruft MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed().

Richtlinie zum Einschränken der Datenübertragung zwischen Apps und Geräten oder Cloudspeicherorten

Viele Apps ermöglichen es dem Endbenutzer, Daten in lokalem Dateispeicher oder Cloudspeicherdiensten zu speichern oder zu öffnen. Das Intune App SDK ermöglicht IT-Administratoren den Schutz vor Dateneingang und Datenlecks, indem sie einschränken, wo Apps Daten speichern und öffnen können.

Hinweis

Wenn Ihre App das Speichern an persönlichen oder Cloudstandorten direkt aus der App oder das direkte Öffnen von Daten in der App zulässt, müssen Sie dieses Intune App SDK-App-Teilnahmefeature implementieren , damit IT-Administratoren dieses Speichern/Öffnen blockieren können.

Speichern im Geräte- oder Cloudspeicher

Die getIsSaveToLocationAllowed API informiert Ihre App basierend auf der konfigurierten Richtlinie, ob das Speichern an bestimmten Speicherorten für eine bestimmte Identität zulässig ist:

MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(
SaveLocation service, String username);

Um zu bestimmen, ob Ihre App die getIsSaveToLocationAllowed Überprüfung implementieren soll, ermitteln Sie anhand der folgenden Tabelle, ob Ihre App ausgehende Daten unterstützt:

service Parameter: SaveLocation Enumerationswert Anwendungsfall Zugeordneter Benutzername
ONEDRIVE_FOR_BUSINESS Die App speichert Daten auf OneDrive. Ein username für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn ein solcher Benutzername nicht vorhanden ist oder der Benutzername nicht bekannt ist, verwenden Sie null.
SHAREPOINT Die App speichert Daten in SharePoint. Ein username für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn ein solcher Benutzername nicht vorhanden ist oder der Benutzername nicht bekannt ist, verwenden Sie null.
BOX Diese App speichert Daten in Box. Ein username für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn ein solcher Benutzername nicht vorhanden ist oder der Benutzername nicht bekannt ist, verwenden Sie null.
LOCAL Die App speichert Daten an einem externen Speicherort auf dem Gerät, der nicht der private Speicher der App ist. Der externe Speicher wird nicht als Clouddienst betrachtet und sollte daher immer mit einem null Username-Parameter verwendet werden.
PHOTO_LIBRARY Die App speichert Daten im lokalen Android-Fotospeicher. Der lokale Android-Fotospeicher wird nicht als Clouddienst betrachtet und sollte daher immer mit einem null Username-Parameter verwendet werden.
ACCOUNT_DOCUMENT Die App speichert Daten an einem Speicherort, der einem Konto innerhalb der App zugeordnet ist und nicht zu den oben angegebenen spezifischen Cloudstandorten gehört. *Dieser Speicherort sollte verwendet werden, um zu bestimmen, ob Daten zwischen Konten innerhalb einer App mit mehreren Identitäten übergeben werden können.- Ein username für ein Konto, das für Microsoft Entra Authentifizierung verwendet wird. Wenn ein solcher Benutzername nicht vorhanden ist oder der Benutzername nicht bekannt ist, verwenden Sie null.
OTHER Die App speichert Daten an einem Speicherort, der oben nicht angegeben ist, und erfüllt nicht die Kriterien für ACCOUNT_DOCUMENT. Wird username für diesen Speicherort nicht ausgewertet und sollte daher sein null.

Dateien, die sich im privaten App-Speicher befinden und entweder für den App-Betrieb erforderlich oder vorübergehend zur Anzeige heruntergeladen werden, sind immer zulässig. Sie müssen nicht überprüfen getIsSaveToLocationAllowed. Überprüfen Sie, ob SaveLocation.LOCAL

  1. Dateien, die außerhalb des privaten App-Speichers gespeichert werden.
  2. Dateien, die in den privaten App-Speicher heruntergeladen wurden, die für den App-Betrieb nicht erforderlich sind (z. B. wenn benutzer absichtlich auf das Gerät heruntergeladen werden).

Hinweis

Wenn Sie die Speicherrichtlinie überprüfen, sollte der UPN/Benutzername/die E-Mail-Adresse sein, username die dem Clouddienst zugeordnet ist, in dem gespeichert wird (nicht notwendigerweise dasselbe wie das Konto, das das zu speichernde Dokument besitzt).

Öffnen von Daten von einem lokalen oder Cloudspeicherort

Die getIsOpenFromLocationAllowed API informiert Ihre App basierend auf der konfigurierten Richtlinie, ob das Öffnen von bestimmten Speicherorten für eine bestimmte Identität zulässig ist:

MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowed(
OpenLocation location, String username);

Um zu bestimmen, ob Ihre App die getIsOpenFromLocationAllowed Überprüfung implementieren soll, ermitteln Sie anhand der folgenden Tabelle, ob Ihre App den Dateneingang unterstützt:

location Parameter: OpenLocation Enumerationswert Anwendungsfall Zugeordneter Benutzername
ONEDRIVE_FOR_BUSINESS Die App öffnet Daten aus OneDrive. Ein username für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn ein solcher Benutzername nicht vorhanden ist oder der Benutzername nicht bekannt ist, verwenden Sie null.
SHAREPOINT Die App öffnet Daten aus SharePoint. Ein username für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn ein solcher Benutzername nicht vorhanden ist oder der Benutzername nicht bekannt ist, verwenden Sie null.
CAMERA Die App öffnet Daten von der Kamera. Ein null -Wert, da die Gerätekamera kein Clouddienst ist.
LOCAL Die App öffnet Daten von einem externen Speicherort auf dem Gerät, das nicht der private Speicher der App ist. Obwohl der externe Speicher kein Clouddienststandort ist, wird ein username Parameter erwartet, da er den Besitz angibt.
Beim Öffnen einer Datei aus dem lokalen Speicher muss immer der Dateibesitzer berücksichtigt werden, da die Speicherrichtlinie des Dateibesitzers anderen Identitäten das Öffnen der Datei gestattet oder nicht:
- Für mit Identitäten gekennzeichnete Dateien:username sollte die Identität des Dateibesitzers sein.
- Für Dateien ohne Identitätstag:username sollte sein null.
PHOTO_LIBRARY Die App öffnet Daten aus dem lokalen Android-Fotospeicher. Der lokale Android-Fotospeicher wird nicht als Clouddienst betrachtet und sollte daher immer mit einem null Username-Parameter verwendet werden.
ACCOUNT_DOCUMENT Die App öffnet Daten von einem Speicherort, der einem Konto innerhalb der App zugeordnet ist und nicht zu den oben angegebenen spezifischen Cloudstandorten gehört. *Dieser Speicherort sollte verwendet werden, um zu bestimmen, ob Daten zwischen Konten innerhalb einer App mit mehreren Identitäten übergeben werden können.- Ein username für ein Konto, das für Microsoft Entra Authentifizierung verwendet wird. Wenn ein solcher Benutzername nicht vorhanden ist oder der Benutzername nicht bekannt ist, verwenden Sie null.
OTHER Die App öffnet Daten von einem Speicherort, der oben nicht angegeben ist und die Kriterien für ACCOUNT_DOCUMENTnicht erfüllt. Wird username für diesen Speicherort nicht ausgewertet und sollte daher sein null.

Hinweis

Beim Überprüfen der offenen Richtlinie sollte der UPN/Benutzername/die E-Mail-Adresse sein, username die der Datei oder dem Clouddienst zugeordnet ist, von der aus geöffnet wird (nicht notwendigerweise mit dem Konto, das das Dokument öffnet).

Tipp

Der Einfachheit halber stellt das SDK die -Methode AppPolicy.isOpenFromLocalStorageAllowed bereit, die einen File Parameter für eine Datei im lokalen Speicher akzeptiert. Der Begriff des Erzwingens der Richtlinie ist funktional identisch mit dem Aufrufen AppPolicy.isOpenFromLocationAllowed(OpenLocation.LOCAL, username) , mit der Ausnahme, dass die Analyse des Dateibesitzers username aus dem Filebehandelt wird.

Dialogfeld "Freigabe blockiert"

Das SDK stellt ein Dialogfeld bereit, um den Benutzer zu benachrichtigen, dass eine Datenübertragungsaktion durch die MAM-Richtlinie blockiert wurde.

Das Dialogfeld sollte dem Benutzer angezeigt werden, wenn der isSaveToAllowedForLocation API-Aufruf oder isOpenFromAllowedForLocation dazu führt, dass die Aktion zum Speichern/Öffnen blockiert wird. Das Dialogfeld zeigt eine generische Meldung an und kehrt zum Aufruf Activity zurück, wenn er geschlossen wird.

Fügen Sie den folgenden Code hinzu, um das Dialogfeld anzuzeigen:

MAMUIHelper.showSharingBlockedDialog(currentActivity)

Dateifreigabe zulassen

Wenn das Speichern an öffentlichen Speicherorten nicht zulässig ist, sollte Ihre App es dem Benutzer dennoch ermöglichen, Dateien anzuzeigen, indem er sie in den privaten App-Speicher herunter lädt und sie dann mit der Systemwährung öffnet.

Richtlinie zum Einschränken von Inhalten in Benachrichtigungen

Bei Apps mit nur einer Identität versucht das Standardverhalten des Intune App SDK, alle Benachrichtigungen zu blockieren, wenn die App-Schutzrichtlinie Benachrichtigungen einschränkt.

Das Standardverhalten des SDK ist eingeschränkt. Das SDK kann den Wert "Organisationsdaten blockieren" nicht automatisch berücksichtigen, der nur verwaltete Inhalte aus Benachrichtigungen entfernen soll. Bei Apps mit mehreren Identitäten kann das SDK nicht ermitteln, welche Benachrichtigungen verwaltete Inhalte enthalten.

Wenn Ihre App Benachrichtigungen anzeigt und es sich entweder um mehrere Identitäten handelt und/oder den Wert "Organisationsdaten blockieren" berücksichtigen möchte, muss sie die Benachrichtigungseinschränkungsrichtlinie für das Konto überprüfen, das der Benachrichtigung zugeordnet ist, bevor die Benachrichtigung angezeigt wird.

Führen Sie den folgenden Aufruf aus, um festzustellen, ob die Richtlinie erzwungen wird:

NotificationRestriction notificationRestriction =
    MAMPolicyManager.getPolicyForIdentity(notificationIdentity).getNotificationRestriction();

Die zurückgegebene NotificationRestriction Enumeration weist die folgenden Werte auf:

NotificationRestriction Enum Erwartetes App-Verhalten
BLOCKED Die App darf keine Benachrichtigungen für das Konto anzeigen, das dieser Richtlinie zugeordnet ist. Bei Apps mit nur einer Identität blockiert das Intune App SDK alle Benachrichtigungen automatisch, und es ist kein zusätzlicher Code erforderlich.
BLOCK_ORG_DATA Die App muss eine geänderte Benachrichtigung anzeigen, die keine organization Daten enthält.
UNRESTRICTED Die App sollte alle Benachrichtigungen anzeigen.

Wenn Ihre App nicht ordnungsgemäß aufruft getNotificationRestriction, versucht das MAM SDK, Benachrichtigungen automatisch nur für Apps mit einer einzelnen Identität einzuschränken.

In diesem Fall wird gleich behandelt, BLOCK_ORG_DATABLOCKED und die Benachrichtigung wird überhaupt nicht angezeigt.

Um eine präzisere Steuerung zu erhalten, überprüfen Sie den Wert von getNotificationRestriction App-Benachrichtigungen, und ändern Sie sie entsprechend.

Richtlinie zum Schutz von Sicherungsdaten

Das Intune App SDK kann den Datenupload in das integrierte Sicherungs- und Wiederherstellungsfeature von Android blockieren. Weitere Informationen zum Sichern und Wiederherstellen in Android finden Sie im Leitfaden zur Android-API und den in Android S/12 eingeführten Änderungen hier: Ändern der Sicherung und Wiederherstellung.

Automatische Sicherung für Apps

Ab Android M begann Android, automatische vollständige Sicherungen für Apps auf Google Drive anzubieten, unabhängig von der Ziel-API der App.

Mit Intune können Sie alle von Android verfügbaren Autobackup-Features nutzen, einschließlich der Möglichkeit, benutzerdefinierte Regeln in XML zu definieren, mit spezifischen Intune-Integrationsanleitungen, um sicherzustellen, dass der Datenschutz angewendet wird.

Konfigurieren des Sicherungsverhaltens im App-Manifest

Standardmäßig ist auf TRUE festgelegt, android:allowBackup wie unter Aktivieren und Deaktivieren der Sicherung beschrieben.

Wenn Ihre App keine vollständige Sicherungs- und Wiederherstellungsfunktionalität erfordert, legen Sie auf false festandroid:allowBackup. In diesem Fall ist keine weitere Aktion erforderlich, und "Unternehmensdaten" verbleiben in der App.

Wenn Ihre App vollständige Sicherungs- und Wiederherstellungsfunktionen erfordert, legen Sie auf true festandroid:allowBackup, und führen Sie die folgenden zusätzlichen Schritte aus:

  1. Wenn Ihre App keine eigene benutzerdefinierte BackupAgentverwendet, verwenden Sie den Standardmäßigen MAMBackupAgent , um automatische vollständige Sicherungen zu ermöglichen, die mit der Intune-Richtlinie kompatibel sind. Platzieren Sie Folgendes im App-Manifest:

    <application
    ...
      android:fullBackupOnly="true"
      android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent"
      ...>
      </application>
    
  2. [Optional] Wenn Sie einen optionalen benutzerdefinierten BackupAgentimplementiert haben, müssen Sie sicherstellen, dass Sie MAMBackupAgent oder MAMBackupAgentHelper verwenden. Weitere Informationen finden Sie in den folgenden Abschnitten. Erwägen Sie, zur Verwendung von MAMDefaultBackupAgent von Intune zu wechseln, die in Schritt 1 beschrieben wird und eine einfache Sicherung unter Android M und höher ermöglicht.

  3. Wenn Sie entscheiden, welche Art von vollständiger Sicherung Ihre App erhalten soll (ungefiltert, gefiltert oder keine), müssen Sie das Attribut android:fullBackupContent in Ihrer App auf true, false oder eine XML-Ressource festlegen.

  4. Anschließend müssen Sie den Wert für android:fullBackupContent in das Metadatentag und für Apps, die com.microsoft.intune.mam.FullBackupContent das in API 31 hinzugefügte neue XML-Konfigurationsformat unterstützen, in das com.microsoft.intune.mam.DataExtractionRules Metadatentag kopieren.

    • Beispiel 1: Wenn Ihre App vollständige Sicherungen ohne Ausschlüsse haben soll, müssen Sie die Attribute und Metadatentags auf true festlegen:

      <application
        ...
        android:fullBackupContent="true"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="true" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="true" />
      
    • Beispiel 2: Wenn Ihre App ihre benutzerdefinierten BackupAgent und vollständigen, richtlinienkonformen automatischen Sicherungen deaktivieren soll, müssen Sie die Attribute und Metadatentags auf false festlegen:

      <application
        ...
        android:fullBackupContent="false"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="false" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="false" />
      
    • Beispiel 3: Wenn Ihre App vollständige Sicherungen gemäß Ihren benutzerdefinierten Regeln haben soll, die in einer XML-Datei definiert sind, legen Sie das Attribut und das Metadatentag auf dieselbe XML-Ressource fest:

      <application
        ...
        android:fullBackupContent="@xml/my_full_backup_content_scheme"
        android:dataExtractionRules="@xml/my_data_extraction_rules_scheme"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:resource="@xml/my_full_backup_content_scheme" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:resource="@xml/my_data_extraction_rules_scheme" />
      

Schlüssel-Wert-Sicherung

Die Option Schlüssel-Wert-Sicherung ist für alle APIs 8 und höher verfügbar und lädt App-Daten in den Android Backup Service hoch. Die Datenmenge pro App ist auf 5 MB beschränkt. Wenn Sie die Schlüssel-Wert-Sicherung verwenden, müssen Sie backupAgentHelper oder BackupAgent verwenden.

BackupAgentHelper

BackupAgentHelper ist einfacher zu implementieren als BackupAgent sowohl in Bezug auf die native Android-Funktionalität als auch die Intune-MAM-Integration BackupAgentHelper ermöglicht es dem Entwickler, ganze Dateien und freigegebene Einstellungen für ein FileBackupHelper und SharedPreferencesBackupHelper (bzw.) zu registrieren, die dann bei der Erstellung dem BackupAgentHelper hinzugefügt werden. Führen Sie die folgenden Schritte aus, um backupAgentHelper mit Intune MAM zu verwenden:

  1. Um die Sicherung mit mehreren Identitäten mit einem BackupAgentHelperzu verwenden, befolgen Sie die Android-Anleitung zum Erweitern von BackupAgentHelper.

  2. Lassen Sie Ihre Klasse das MAM-Äquivalent von BackupAgentHelper, FileBackupHelper und SharedPreferencesBackupHelper erweitern.

Android-Klasse MAM-Äquivalent
BackupAgentHelper MAMBackupAgentHelper
FileBackupHelper MAMFileBackupHelper
SharedPreferencesBackupHelper MAMSharedPreferencesBackupHelper

Die Befolgen dieser Richtlinien führt zu einer erfolgreichen Sicherung und Wiederherstellung mit mehreren Identitäten.

Backupagent

Ein BackupAgent ermöglicht Es Ihnen, viel expliziter zu machen, welche Daten gesichert werden. Da der Entwickler für die Implementierung verantwortlich ist, sind weitere Schritte erforderlich, um einen angemessenen Datenschutz von Intune sicherzustellen. Da der Großteil der Arbeit auf Sie übertragen wird, ist die Intune-Integration für den Entwickler etwas stärker involviert.

Integrieren von MAM:

  1. Lesen Sie sorgfältig den Android-Leitfaden für die Schlüssel-Wert-Sicherung und insbesondere das Erweitern von BackupAgent , um sicherzustellen, dass Ihre BackupAgent-Implementierung den Android-Richtlinien entspricht.

  2. Lassen Sie Ihre Klasse MAMBackupAgent erweitern.

Sicherung mit mehreren Identitäten:

  1. Bevor Sie mit der Sicherung beginnen, überprüfen Sie, ob die Dateien oder Datenpuffer, die Sie sichern möchten, vom IT-Administrator tatsächlich in Szenarien mit mehreren Identitäten gesichert werden dürfen . Verwenden Sie isBackupAllowed in MAMFileProtectionManager und MAMDataProtectionManager , um dies zu bestimmen. Wenn die Datei oder der Datenpuffer nicht gesichert werden darf, sollten Sie sie nicht in Ihre Sicherung einschließen.

  2. Wenn Sie irgendwann während der Sicherung die Identitäten für die Dateien sichern möchten, die Sie in Schritt 1 eingecheckt haben, müssen Sie mit den Dateien aufrufen backupMAMFileIdentity(BackupDataOutput data, File … files) , aus denen Sie Daten extrahieren möchten. Dadurch werden automatisch neue Sicherungsentitäten erstellt und in die BackupDataOutput für Sie geschrieben. Diese Entitäten werden bei der Wiederherstellung automatisch genutzt.

Wiederherstellung mehrerer Identitäten: Der Leitfaden zur Datensicherung gibt einen allgemeinen Algorithmus zum Wiederherstellen der Anwendungsdaten an und enthält ein Codebeispiel im Abschnitt Erweitern von BackupAgent . Um eine erfolgreiche Wiederherstellung mit mehreren Identitäten zu erhalten, müssen Sie der allgemeinen Struktur in diesem Codebeispiel folgen und folgendes beachten:

  1. Sie müssen eine while(data.readNextHeader())*-Schleife verwenden, um die Sicherungsentitäten zu durchlaufen.

  2. Sie müssen aufrufen data.skipEntityData(), wenn data.getKey() nicht mit dem Schlüssel übereinstimmt, den Sie in onBackupgeschrieben haben. Ohne diesen Schritt sind die Wiederherstellungen möglicherweise nicht erfolgreich.

  3. Vermeiden Sie die Rückgabe bei der Nutzung von Sicherungsentitäten im while(data.readNextHeader())*-Konstrukt, da die automatisch geschriebenen Entitäten verloren gehen.

  • Dabei data ist der name der lokalen Variablen für mamBackupDataInput , der bei der Wiederherstellung an Ihre App übergeben wird.

Benutzerdefinierte Bildschirmaufnahmeeinschränkungen

Wenn Ihre App ein benutzerdefiniertes WindowFeature für die Bildschirmaufnahme enthält, das die Einschränkung auf Android-Ebene FLAG_SECURE umgeht, müssen Sie die Bildschirmaufnahmerichtlinie überprüfen, bevor Sie den Vollzugriff auf das Feature zulassen. Wenn Ihre App beispielsweise ein benutzerdefiniertes Renderingmodul verwendet, um die aktuelle Ansicht in einer PNG-Datei zu rendern, müssen Sie zuerst überprüfen AppPolicy.getIsScreenCaptureAllowed().

Hinweis

Wenn Ihre App keine benutzerdefinierten Oder Drittanbieterfeatures für Bildschirmaufnahmen enthält, müssen Sie keine Maßnahmen ergreifen, um Bildschirmaufnahmen einzuschränken. Die Bildschirmaufnahmerichtlinie wird automatisch auf der Window Ebene für alle mam-integrierten Apps erzwungen. Alle Versuche des Betriebssystems oder einer anderen App, eine Window in Ihrer App zu erfassen, werden bei Bedarf blockiert. Wenn ein Benutzer beispielsweise versucht, den Bildschirm Ihrer App über die integrierten Screenshot- oder Bildschirmaufzeichnungsfeatures von Android zu erfassen, wird die Erfassung automatisch ohne Teilnahme von Ihrer App eingeschränkt.

Unterstützung der App-Schutzzertifizierungsstelle

Die App-Schutzzertifizierungsstelle (Bedingter Zugriff), auch als App-basierte Zertifizierungsstelle bezeichnet, schränkt den Zugriff auf Ressourcen ein, bis Ihre Anwendung von Intune-App-Schutzrichtlinien verwaltet wird. Microsoft Entra-ID erzwingt dies, indem die App von APP registriert und verwaltet werden muss, bevor ein Token für den Zugriff auf eine durch die Zertifizierungsstelle geschützte Ressource gewährt wird.

Hinweis

Die Unterstützung der App-Schutzzertifizierungsstelle erfordert Version 1.0.0 (oder höher) der MSAL-Bibliothek.

Behandeln von Nichtkonformität mit MSAL

Beim Abrufen eines Tokens für ein Konto kann die MSAL-Bibliothek eine MsalIntuneAppProtectionPolicyRequiredException zurückgeben oder auslösen, um anzuzeigen, dass die Verwaltung von App-Schutzrichtlinien nicht eingehalten wird. Zusätzliche Parameter können aus der Ausnahme extrahiert werden, um die Konformität zu korrigieren (siehe MAMComplianceManager). Sobald die Wiederherstellung erfolgreich ist, kann die App den Tokenabruf über MSAL erneut durchführen.

MAMComplianceManager

Die MAMComplianceManager-Schnittstelle wird verwendet, wenn der für die Richtlinie erforderliche Fehler von MSAL empfangen wird. Sie enthält die [remediateCompliance]-Methode, die aufgerufen werden sollte, um zu versuchen, die App in einen konformen Zustand zu versetzen. Ein Verweis auf die MAMComplianceManager kann wie folgt abgerufen werden:

MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);

// make use of mgr

Die MAMComplianceManager zurückgegebene instance ist garantiert nicht null.

package com.microsoft.intune.mam.policy;

public interface MAMComplianceManager {
    void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}

Die remediateCompliance() -Methode wird aufgerufen, um zu versuchen, die App unter Verwaltung zu stellen, um die Bedingungen für Microsoft Entra ID zu erfüllen, um das angeforderte Token zu gewähren. Die ersten vier Parameter können aus der Ausnahme extrahiert werden, die von der MSAL-Methode AuthenticationCallback.onError() empfangen wird (siehe Codebeispiel unten). Der letzte Parameter ist ein boolescher Wert, der steuert, ob während des Konformitätsversuchs eine Benutzeroberfläche angezeigt wird.

remediateCompliance zeigt ein einfaches Blockierstatusdialogfeld an, sodass Apps während dieses Vorgangs keine benutzerdefinierte Benutzeroberfläche anzeigen müssen. Dieses Dialogfeld wird nur angezeigt, während die Konformitätskorrektur ausgeführt wird. Das Endergebnis wird nicht angezeigt. Ihre App kann einen Empfänger für die COMPLIANCE_STATUS Benachrichtigung registrieren, um den Erfolg oder Fehler des Konformitätsbehebungsversuchs zu behandeln. Ausführliche Informationen finden Sie unter Konformitätsbenachrichtigungen status.

remediateCompliance() kann eine MAM-Registrierung im Rahmen der Compliance-Einrichtung initiieren. Die App erhält möglicherweise eine Registrierungsbenachrichtigung, wenn sie einen Benachrichtigungsempfänger für Registrierungsbenachrichtigungen registriert hat. Die -Methode der registrierten MAMServiceAuthenticationCallback App wird acquireToken() aufgerufen, um ein Token für die Registrierung abzurufen. acquireToken() wird aufgerufen, bevor die App ein eigenes Token erworben hat, sodass alle Buchhaltungs- oder Kontoerstellungsaufgaben, die die App nach einem erfolgreichen Tokenabruf ausführt, möglicherweise noch nicht abgeschlossen wurden. Der Rückruf muss in diesem Fall in der Lage sein, ein Token abzurufen.

Wenn Sie kein Token von acquireToken()zurückgeben können, schlägt der Konformitätsbehebungsversuch fehl.

Wenn Sie später mit einem gültigen Token für die angeforderte Ressource aufrufen updateToken , wird die Konformitätskorrektur sofort mit dem angegebenen Token wiederholt.

Hinweis

Der automatische Tokenabruf ist in acquireToken() weiterhin möglich, da der Benutzer bereits angeleitet wurde, den Broker zu installieren und das Gerät zu registrieren, bevor die MsalIntuneAppProtectionPolicyRequiredException Ausnahme empfangen wird. Dies führt dazu, dass der Broker ein gültiges Aktualisierungstoken im Cache hat, sodass der automatische Abruf des angeforderten Tokens erfolgreich ist.

Im Folgenden finden Sie ein Beispiel für das Empfangen des richtlinienrelevanten Fehlers in der AuthenticationCallback.onError() -Methode und das Aufrufen von MAMComplianceManager zur Behandlung des Fehlers.

public void onError(@Nullable MsalException exc) {
    if (exc instanceof MsalIntuneAppProtectionPolicyRequiredException) {

        final MsalIntuneAppProtectionPolicyRequiredException policyRequiredException =
            (MsalIntuneAppProtectionPolicyRequiredException) ex;

        final String upn = policyRequiredException.getAccountUpn();
        final String aadId = policyRequiredException.getAccountUserId();
        final String tenantId = policyRequiredException.getTenantId();
        final String authority = policyRequiredException.getAuthorityURL();

        MAMComplianceManager complianceManager = MAMComponents.get(MAMComplianceManager.class);
        complianceManager.remediateCompliance(upn, aadId, tenantId, authority, showUX);
    }
}

Benachrichtigungen zu Compliance-status

Wenn sich die App für Benachrichtigungen vom Typ COMPLIANCE_STATUSregistriert, wird eine MAMComplianceNotification gesendet, um die App über den letzten status des Konformitätskorrekturversuchs zu informieren. Ausführliche Informationen zur Registrierung finden Sie unter Registrieren von Benachrichtigungen aus dem SDK .

public interface MAMComplianceNotification extends MAMUserNotification {
    MAMCAComplianceStatus getComplianceStatus();
    String getComplianceErrorTitle();
    String getComplianceErrorMessage();
}

Die getComplianceStatus() Methode gibt das Ergebnis des Konformitätskorrekturversuchs als Wert aus der [MAMCAComplianceStatus]-Enumeration zurück.

Statuscode Erklärung
UNKNOWN Der Status ist unbekannt. Dies kann auf einen unerwarteten Fehlergrund hinweisen. Weitere Informationen finden Sie in den Unternehmensportal Protokollen.
COMPLIANT Die Konformitätskorrektur war erfolgreich, und die App ist jetzt mit der Richtlinie konform. Der MSAL-Tokenabruf sollte wiederholt werden.
NOT_COMPLIANT Fehler beim Versuch, die Konformität zu korrigieren. Die App ist nicht konform, und der MSAL-Tokenabruf sollte erst wiederholt werden, wenn die Fehlerbedingung korrigiert wurde. Mit MAMComplianceNotification werden zusätzliche Fehlerinformationen gesendet.
SERVICE_FAILURE Fehler beim Abrufen von Konformitätsdaten aus dem Intune-Dienst. Weitere Informationen finden Sie in den Unternehmensportal Protokollen.
NETWORK_FAILURE Fehler beim Herstellen der Verbindung mit dem Intune-Dienst. Die App sollte den Tokenabruf erneut versuchen, wenn die Netzwerkverbindung wiederhergestellt wird.
CLIENT_ERROR Der Versuch, die Konformität zu korrigieren, ist aus irgendeinem Grund im Zusammenhang mit dem Client fehlgeschlagen. Beispiel: Kein Token oder falscher Benutzer. Mit MAMComplianceNotification werden zusätzliche Fehlerinformationen gesendet.
PENDING Der Versuch, die Konformität zu korrigieren, ist fehlgeschlagen, weil die status Antwort noch nicht vom Dienst empfangen wurde, als das Zeitlimit überschritten wurde. Die App sollte den Tokenabruf später erneut versuchen.
COMPANY_PORTAL_REQUIRED Die Unternehmensportal muss auf dem Gerät installiert werden, damit die Konformitätskorrektur erfolgreich ist. Wenn die Unternehmensportal bereits auf dem Gerät installiert ist, muss die App neu gestartet werden. In diesem Fall wird ein Dialogfeld angezeigt, in dem der Benutzer aufgefordert wird, die App neu zu starten.

Wenn die Compliance-status istMAMCAComplianceStatus.COMPLIANT, sollte die App ihren ursprünglichen Tokenerwerb (für ihre eigene Ressource) erneut aktivieren.

Wenn beim Versuch der Konformitätskorrektur ein Fehler aufgetreten ist, geben die getComplianceErrorTitle() Methoden und getComplianceErrorMessage() lokalisierte Zeichenfolgen zurück, die die App dem Endbenutzer anzeigen kann, wenn sie dies auswäht. Die meisten Fehlerfälle können von der App nicht behoben werden. Daher ist es für den allgemeinen Fall möglicherweise am besten, die Kontoerstellung oder Anmeldung zu fehlschlagen und dem Benutzer zu erlauben, es später erneut zu versuchen.

Wenn ein Fehler dauerhaft ist, können die Unternehmensportal Protokolle helfen, die Ursache zu ermitteln. Der Endbenutzer kann die Protokolle übermitteln. Weitere Informationen finden Sie unter Hochladen und E-Mail-Protokolle.

Hier sehen Sie ein Beispiel für die Registrierung eines Empfängers mithilfe einer anonymen Klasse zum Implementieren der MAMNotificationReceiver-Schnittstelle:

final MAMNotificationReceiverRegistry notificationRegistry = MAMComponents.get(MAMNotificationReceiverRegistry.class);
// create a receiver
final MAMNotificationReceiver receiver = new MAMNotificationReceiver() {
    public boolean onReceive(MAMNotification notification) {
        if (notification.getType() == MAMNotificationType.COMPLIANCE_STATUS) {
            MAMComplianceNotification complianceNotification = (MAMComplianceNotification) notification;
            
            // take appropriate action based on complianceNotification.getComplianceStatus()
            
            // unregister this receiver if no longer needed
            notificationRegistry.unregisterReceiver(this, MAMNotificationType.COMPLIANCE_STATUS);
        }
        return true;
    }
};
// register the receiver
notificationRegistry.registerReceiver(receiver, MAMNotificationType.COMPLIANCE_STATUS);

Hinweis

Der Benachrichtigungsempfänger muss vor dem Aufruf remediateCompliance() registriert werden, um eine Racebedingung zu vermeiden, die dazu führen kann, dass die Benachrichtigung verpasst wird.

Deklarieren der Unterstützung für die App-Schutzzertifizierungsstelle

Sobald Ihre App für die Wartung der App-Zertifizierungsstelle bereit ist, können Sie Microsoft Identity mitteilen, dass Ihre App für die App-Zertifizierungsstelle bereit ist. Um dies in Ihrer MSAL-Anwendung zu tun, erstellen Sie Ihren öffentlichen Client mithilfe der Clientfunktionen von "protapp"

{
      "client_id" : "[YOUR_CLIENT_ID]",
      "authorization_user_agent" : "DEFAULT",
      "redirect_uri" : "[YOUR_REDIRECT_URI]",
      "multiple_clouds_supported":true,
      "broker_redirect_uri_registered": true,
      "account_mode": "MULTIPLE",
      "client_capabilities": "protapp",
      "authorities" : [
        {
          "type": "AAD",
          "audience": {
            "type": "AzureADandPersonalMicrosoftAccount"
          }
        }
      ]
    }

Nachdem Sie die obigen Schritte abgeschlossen haben, fahren Sie unten mit Überprüfen der App-Schutzzertifizierungsstelle fort.

Implementierungshinweise

Hinweis

Die -Methode der MAMServiceAuthenticationCallback.acquireToken() App sollte false für forceRefresh das Flag an acquireTokenSilentAsync()übergeben.

AcquireTokenSilentParameters acquireTokenSilentParameters =
        builder.withScopes(Arrays.asList(scopes))
               .forceRefresh(false)
               .build();

acquireTokenSilentAsync(acquireTokenSilentParameters);

Hinweis

Wenn Sie während des Korrekturversuchs eine benutzerdefinierte blockierende UX anzeigen möchten, sollten Sie false für den showUX-Parameter an remediateCompliance()übergeben. Sie müssen sicherstellen, dass Sie Ihre Benutzeroberfläche anzeigen und zuerst Ihren Benachrichtigungslistener registrieren, bevor Sie aufrufen remediateCompliance(). Dadurch wird eine Racebedingung verhindert, bei der die Benachrichtigung verpasst werden kann, wenn remediateCompliance() sehr schnell ein Fehler auftritt. Beispielsweise ist die - oder onMAMCreate() -onCreate()Methode einer Activity-Unterklasse der ideale Ort, um den Benachrichtigungslistener zu registrieren und dann aufzurufenremediateCompliance(). Die Parameter für remediateCompliance() können als Absichts-Extras an Ihre Benutzeroberfläche übergeben werden. Wenn die Konformitäts-status Benachrichtigung empfangen wird, können Sie das Ergebnis anzeigen oder einfach die Aktivität beenden.

Hinweis

remediateCompliance() registriert das Konto und versucht, sich zu registrieren. Nachdem das Standard Token abgerufen wurde, ist der Aufruf registerAccountForMAM() nicht erforderlich, aber dies schadet nicht. Wenn die App andererseits ihr Token nicht abruft und das Benutzerkonto entfernen möchte, muss sie aufrufen unregisterAccountForMAM() , um das Konto zu entfernen und Wiederholungen der Hintergrundregistrierung zu verhindern.

Registrieren für Benachrichtigungen aus dem SDK

Im Leitfaden zum Intune App SDK wurden bereits mehrere Szenarien erläutert, in denen Ihre App möglicherweise für Benachrichtigungen vom SDK registriert werden muss, z. B.:

In diesem Abschnitt werden alle Arten von Benachrichtigungen beschrieben, die das SDK senden kann, wann und warum Ihre Anwendung darauf lauschen möchte und wie ein Benachrichtigungsempfänger implementiert wird.

Arten von Benachrichtigungen

Alle SDK-Benachrichtigungen implementieren die MAMNotification-Schnittstelle , die über eine einzelne Funktion verfügt, getType()und gibt eine MAMNotificationType-Enumeration zurück.

Die meisten Benachrichtigungen sind MAMUserNotifications, die spezifische Informationen für eine einzelne Identität bereitstellen, die über die getUserIdentity() Funktion abgerufen werden können.

MAMEnrollmentNotification und MAMComplianceNotification erweitern MAMUserNotificationweiter, die Ergebnisse für Versuche enthalten, einen Benutzer/ein Gerät beim MAM-Dienst zu registrieren, bzw. Ergebnisse für den Versuch, die Konformität für die App-Schutzzertifizierungsstelle zu korrigieren.

Benachrichtigungstyp Benachrichtigungsklasse Grund für die Benachrichtigung Anwendbarkeit Tipps für die Handhabung Threadinformationen
COMPLIANCE_STATUS MAMComplianceNotification Gibt das Ergebnis eines Konformitätskorrekturversuchs zurück. Apps, die die App-Schutzzertifizierungsstelle implementieren, müssen dies verarbeiten. - Nicht deterministisch
MAM_ENROLLMENT_RESULT MAMEnrollmentNotification Gibt das Ergebnis eines Registrierungsversuchs zurück. Alle Apps erhalten diese. - Nicht deterministisch
MANAGEMENT_REMOVED MAMUserNotification Die App wird dabei, nicht mehr verwaltet zu werden. Apps, die dies verwenden MAMDataProtectionManager , müssen dies verarbeiten. Siehe MANAGEMENT_REMOVED weiter unten. Nie im UI-Thread
REFRESH_APP_CONFIG MAMUserNotification Die App-Konfigurationswerte haben sich möglicherweise geändert. Apps, die die App-Konfiguration implementieren und App-Konfigurationsdaten zwischenspeichern, müssen dies verarbeiten. Apps müssen alle zwischengespeicherten App-Konfigurationsdaten für ungültig erklären und aktualisieren. Nicht deterministisch
REFRESH_POLICY MAMUserNotification App-Schutz Richtlinie hat sich möglicherweise geändert. Apps, die App-Schutzrichtlinie zwischenspeichern, müssen dies verarbeiten. Apps müssen alle zwischengespeicherten App-Schutzrichtliniendaten für ungültig erklären und aktualisieren. Nicht deterministisch
WIPE_USER_DATA MAMUserNotification Das Zurücksetzen ist in Der Zeit(*). Apps, die verwenden MAMDataProtectionManager , müssen dies oderWIPE_USER_AUXILIARY_DATA verarbeiten. Weitere Informationen finden Sie unter Selektives Zurücksetzen. Nie im UI-Thread
WIPE_USER_AUXILIARY_DATA MAMUserNotification Das Zurücksetzen ist in Der Zeit(*). Nur Apps mit mehreren Identitäten erhalten dies.
Apps, die verwenden MAMDataProtectionManager , müssen dies oderWIPE_USER_DATA verarbeiten.
Weitere Informationen finden Sie unter Selektives Zurücksetzen. Nie im UI-Thread
WIPE_COMPLETED MAMUserNotification Zurücksetzen wurde abgeschlossen. Immer optional. Wird nach WIPE_USER_DATA oder geliefert WIPE_USER_AUXILIARY_DATA. *Wenn die App einen Fehler vom Handler für WIPE_USER_DATA oder WIPE_USER_AUXILIARY_DATAmeldet, wird diese Benachrichtigung nicht gesendet.- Nie im UI-Thread

(*) Zurücksetzungen können aus verschiedenen Gründen auftreten, z. B.:

  • Ihre App hat unregisterAccountForMAM aufgerufen.
  • Ein IT-Administrator hat eine Remotezurücksetzung initiiert.
  • Admin erforderlichen Richtlinien für bedingten Zugriff wurden nicht erfüllt.

Warnung

Eine App sollte sich niemals sowohl für die WIPE_USER_DATAWIPE_USER_AUXILIARY_DATA Benachrichtigungen als auch für die Benachrichtigungen registrieren.

MANAGEMENT_REMOVED

Die MANAGEMENT_REMOVED Benachrichtigung informiert die App darüber, dass ein zuvor richtlinienverwaltetes Konto nicht verwaltet wird. Sobald das Konto nicht verwaltet wurde, kann die App die verschlüsselten Dateien dieses Kontos nicht mehr lesen, die Mit verschlüsselten Kontodaten lesen, mit MAMDataProtectionManagerder verschlüsselten Zwischenablage interagieren oder anderweitig am Ökosystem der verwalteten App teilnehmen.

Dies erfordert weder das Löschen von Benutzerdaten noch das Abmelden des Benutzers (wenn eine Zurücksetzung erforderlich wäre, würde eine WIPE_USER_DATA Benachrichtigung gesendet werden). Viele Apps müssen diese Benachrichtigung möglicherweise nicht verarbeiten, aber Apps, die verwenden MAMDataProtectionManager , müssen dies verarbeiten. Weitere Informationen finden Sie unter Datenpufferschutz .

Wenn das SDK den Empfänger der App MANAGEMENT_REMOVED aufruft, gilt Folgendes:

  • Das SDK hat bereits zuvor verschlüsselte Dateien (aber keine geschützten Datenpuffer) entschlüsselt, die zur App gehören. Dateien an öffentlichen Speicherorten auf der SD-Karte, die nicht direkt zur App gehören (z. B. die Ordner Dokumente oder Download), werden nicht entschlüsselt.

  • Neue Dateien oder geschützte Datenpuffer, die von der Empfängermethode (oder einem anderen Code, der nach dem Starten des Empfängers ausgeführt wird) erstellt wurden, werden nicht verschlüsselt.

  • Die App hat weiterhin Zugriff auf Verschlüsselungsschlüssel, sodass Vorgänge wie das Entschlüsseln von Datenpuffern erfolgreich sind.

Sobald der Empfänger Ihrer App zurückgegeben wird, hat er keinen Zugriff mehr auf Verschlüsselungsschlüssel.

Implementieren von MAMNotificationReceiver

Um sich für Benachrichtigungen aus dem SDK zu registrieren, muss Ihre App einen MAMNotificationReceiver erstellen und bei MAMNotificationReceiverRegistry registrieren.

Rufen registerReceiver Sie zum Registrieren des Empfängers mit Ihrem Empfänger und dem gewünschten Benachrichtigungstyp in Ihrer Application.onCreate Methode auf:

@Override
public void onCreate() {
  super.onCreate();
  MAMComponents.get(MAMNotificationReceiverRegistry.class)
    .registerReceiver(
      new ToastNotificationReceiver(),
      MAMNotificationType.WIPE_USER_DATA);
}

Die MAMNotificationReceiver-Implementierung Ihrer App muss die onReceive(MAMNotification notification) -Methode enthalten. Diese Methode wird für jede empfangene Benachrichtigung einzeln aufgerufen und muss eine booleanzurückgeben. Im Allgemeinen sollte diese Methode immer zurückgeben true, es sei denn, Ihre Anwendung hat einen Fehler gefunden, der auf eine Benachrichtigung reagiert hat.

Wie bei anderen Arten von Android-Empfängern verfügt Ihre Anwendung über Flexibilität bei der Verarbeitung von Benachrichtigungen:

  • Es kann unterschiedliche MAMNotificationReceiver-Implementierungen für unterschiedliche Benachrichtigungstypen erstellen (siehe unten). Registrieren Sie in diesem Fall jede Implementierung und jeden Benachrichtigungstyp separat.
  • Es kann eine einzelne MAMNotificationReceiver-Implementierung verwenden, die Logik zum Reagieren auf mehrere verschiedene Benachrichtigungstypen enthält. In diesem Fall muss er für jeden Benachrichtigungstyp registriert werden, auf den er reagieren kann.
  • Es können mehrere MAMNotificationReceiver-Implementierungen erstellt werden, die jeweils auf denselben Benachrichtigungstyp reagieren. In diesem Fall müssen beide beim gleichen Benachrichtigungstyp registriert werden.

Tipp

Es ist sicher, in zu blockieren MAMNotificationReceiver.onReceive , da sein Rückruf nicht im UI-Thread ausgeführt wird.

Benutzerdefinierte Designs

Ein benutzerdefiniertes Design kann für das Intune App SDK bereitgestellt werden. Dieses benutzerdefinierte Design wird auf alle SDK-Bildschirme und -Dialoge angewendet. Wenn kein Design bereitgestellt wird, wird das STANDARD-SDK-Design verwendet.

Bereitstellen eines benutzerdefinierten Designs

Um ein Design bereitzustellen, müssen Sie die folgende Codezeile in der Application.onMAMCreate -Methode hinzufügen:

MAMThemeManager.setAppTheme(R.style.AppTheme);

Im obigen Beispiel müssen Sie durch das Stildesign ersetzen R.style.AppTheme , das vom SDK angewendet werden soll.

Verwaltung vertrauenswürdiger Stammzertifikate

Wenn Ihre Anwendung SSL-/TLS-Zertifikate erfordert, die von einer lokalen oder privaten Zertifizierungsstelle ausgestellt wurden, um sicheren Zugriff auf interne Websites und Anwendungen zu ermöglichen, hat das Intune App SDK Unterstützung für die Zertifikatvertrauensverwaltung mit den API-Klassen MAMTrustedRootCertsManager und MAMCertTrustWebViewClient hinzugefügt.

Hinweis

MAMCertTrustWebViewClient unterstützt Android 10 oder höher.

Die Verwaltung vertrauenswürdiger Stammzertifikate bietet Unterstützung für:

  • SSLContext
  • SSLSocketFactory
  • Trustmanager
  • Webview

Anforderungen

Hinweis

Die Verwaltung vertrauenswürdiger Stammzertifikate kann unabhängig von Microsoft Tunnel VPN Gateway verwendet werden. Sie müssen jedoch Microsoft MAM Tunnel für die Verwendung lizenzieren.

Verwenden von vertrauenswürdigen Stammzertifikaten aus Intune zum Einrichten von Vertrauensankern

Mit der Verwaltung vertrauenswürdiger Stammzertifikate kann Ihre App vertrauenswürdige Stammzertifikate aus Intune in Kombination mit Zertifikaten vom Gerät verwenden.

Die API-Klassen MAMTrustedRootCertsManager und MAMCertTrustWebViewClient verwenden die über App Configuration Policy übermittelten vertrauenswürdigen Intune-Stammzertifikate als Fallbackoption, wenn die vertrauenswürdigen Stammzertifikatspeicher des Geräts nicht die erforderlichen vertrauenswürdigen Stammzertifikate enthalten, um eine sichere Verbindung mit lokalen Ressourcen herzustellen. Auf diese Weise kann die App sowohl Geräte- als auch Intune-Zertifikate verwenden, um sichere Verbindungen und die Kommunikation mit vertrauenswürdigen Quellen zu überprüfen.

Um die Netzwerksicherheitseinstellungen zu verbessern, kann eine App die XML-Datei für die Netzwerksicherheitskonfiguration verwenden. Die Verwaltung vertrauenswürdiger Stammzertifikate berücksichtigt diese zusätzliche Sicherheit, indem überprüft wird, ob die Xml-Datei für die Netzwerksicherheitskonfiguration der App über eines der folgenden Features verfügt:

  • Benutzerdefinierte Vertrauensanker mit zusätzlichen Zertifizierungsstellen, z. B. selbstsignierten Zertifikaten.
  • Domänenspezifische Regeln zum Einschränken vertrauenswürdiger Zertifizierungsstellen.
  • Anheften von Zertifikaten für bestimmte Domänen.

Hinweis

Weitere Informationen zur Android-Netzwerksicherheitskonfiguration finden Sie unter Netzwerksicherheitskonfiguration.

Wenn eines dieser Elemente für eine Domäne gilt, die auf Vertrauenswürdigkeit überprüft wird, überspringt die Verwaltung vertrauenswürdiger Stammzertifikate die benutzerdefinierten Vertrauensprüfungen für diese Domäne und lässt nur die Standardvertrauensstellungs-Manager der Plattform die Überprüfungen durchführen.

Klasse MAMTrustedRootCertsManager

Diese Klasse stellt die folgenden APIs bereit:

  • createSSLContext(String identity, String protocol): Erstellt ein SSLContext -Objekt, das vertrauenswürdige Stammzertifikate für die angegebene Identität und das angegebene SSL/TLS-Protokoll verwendet. Das von dieser Klasse zurückgegebene SSLContext Objekt wurde bereits ordnungsgemäß mit X509TrustManager Objekten initialisiert, die die kombinierten vertrauenswürdigen Stammzertifikate des Geräts und des MAM-Diensts verwenden.
  • createSSLSocketFactory(String identity, String protocol): Erstellt ein SSLSocketFactory -Objekt, das vertrauenswürdige Stammzertifikate für die angegebene Identität und das angegebene SSL/TLS-Protokoll verwendet. Auf das zurückgegebene SSLSocketFactory Objekt wird vom gleichen SSLContext Objekt in dieser Klasse verwiesen.
  • createX509TrustManagers(String identity): Erstellt ein Array von X509TrustManager -Objekten, die die kombinierten vertrauenswürdigen Stammzertifikate des Geräts und des MAM-Diensts für die angegebene Identität verwenden.

Hinweis

Es wird erwartet, dass der identity Parameter ein Zeichenfolgenbezeichner für einen bestimmten Benutzer ist, der die Anwendung ausführt, z. B. dessen UPN. Falls der Benutzerbezeichner vorher unbekannt ist, kann der Wert NULL übergeben werden, und MAM versucht, die richtige Identität aus dem Thread oder Prozess zu ermitteln, in dem diese APIs aufgerufen werden. Die Identität muss für den Prozess oder Thread ordnungsgemäß festgelegt werden, damit MAM die Identität ermitteln kann. Weitere Informationen zum Festlegen der aktiven Identität in einem Prozess oder Thread finden Sie unter Phase 5: Multi-Identity

Hinweis

Wenn der protocol Parameter nicht angegeben wird, wird das höchste unterstützte SSL/TLS-Protokoll auf der Plattform verwendet.

Im Folgenden finden Sie einige Beispiele für die Verwendung dieser Klasse.

Beispiel für die Verwendung von HttpsUrlConnection
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactory(identity, "TLSv1.3");

// Create a URL object for the desired endpoint
URL url = new URL("https://example.com");

// Open a connection using the URL object
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();

// Set the SSL socket factory for the connection
httpsURLConnection.setSSLSocketFactory(sslSocketFactory);

// Perform any other configuration or operations on the connection as needed
...
Beispiel für die Verwendung von OkHttpClient
// Get the TrustManager instances for an identity from the SDK
TrustManager[] trustManagers = MAMTrustedRootCertsManager.createX509TrustManagers(identity);

// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");

// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);  

// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();

// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();

// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();

// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();

// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();

// Perform any other operations on the response as needed
...

Klasse MAMCertTrustWebViewClient

Diese Klasse stellt eine benutzerdefinierte Implementierung der Android-Klasse android.webkit.WebViewClient bereit, die eine Möglichkeit bietet, den SSL-Fehler android.net.http.SslError.SSL_UNTRUSTED in WebViewzu behandeln. Bei der Behandlung des Fehlers verwendet die Klasse vertrauenswürdige Stammzertifikate, die in Intune konfiguriert und vom MAM-Dienst empfangen werden, um die Vertrauenswürdigkeit des Hosts von der Ziel-URL zu überprüfen, die den SSL-Fehler in WebViewgeneriert hat. Wenn die benutzerdefinierte Implementierung den SSL-Fehler nicht behandelt, wird das von der Superclass geerbte Standardverhalten aufgerufen. Wenn Sie diese Klasse verwenden, sollten Sie eine instance erstellen und dann aufrufenWebView.setWebViewClient(WebViewClient), um sie bei einem WebView instance zu registrieren.

Hier ist ein Beispiel für die Verwendung dieser Klasse.

Beispiel für die Verwendung von WebView
// Get the MAM implementation of WebViewClient from the Intune App SDK
MAMCertTrustWebViewClient mamCertTrustWebViewClient = new MAMCertTrustWebViewClient();

// Set the MAM WebViewClient from the SDK as the current handler on the instance of WebView
webView.setWebViewClient(mamCertTrustWebViewClient);

// Perform any other operations on WebView
...

Exitkriterien

Informationen zur Vereinfachung des Testens finden Sie unter Schnelles Testen mit sich ändernder Richtlinie .

Überprüfen von "Speichern in/Öffnen aus Einschränkungen"

Überspringen Sie diese Option, wenn Sie keine Richtlinie zum Einschränken der Datenübertragung zwischen Apps und Geräten oder Cloudspeicherorten implementiert haben.

Machen Sie sich mit jedem Szenario vertraut, in dem Ihre App Daten in Clouddiensten oder lokalen Daten speichern und Daten aus Clouddiensten oder lokalen Daten öffnen kann.

Der Einfachheit halber wird bei diesen Tests davon ausgegangen, dass Ihre App nur die Unterstützung für das Speichern und Öffnen von Daten aus OneDrive for Business von einem einzelnen Speicherort innerhalb der App umfasst. Sie müssen jedoch jede Kombination überprüfen: Jeder unterstützte Speicherort an jedem Ort, an dem Ihre App Daten speichert, und jeder unterstützte offene Speicherort an jedem Ort, an dem Ihre App Daten öffnen kann.

Installieren Sie für diese Tests Ihre App und die Intune-Unternehmensportal. Melden Sie sich mit einem verwalteten Konto an, bevor Sie den Test starten. Außerdem:

  • Legen Sie die Richtlinie des verwalteten Kontos auf Folgendes fest:
    • "Senden von Organisationsdaten an andere Apps" an "Richtlinienverwaltete Apps".
    • "Empfangen von Daten von anderen Apps" in "Richtlinienverwaltete Apps".
Szenario Voraussetzungen Schritte
Speichern unter, vollständig zulässig Richtlinie "Kopien von Organisationsdaten speichern", die auf "Zulassen" festgelegt ist – Navigieren Sie zu dem Ort, an dem Ihre App Daten in OneDrive for Business speichern kann.
– Versuchen Sie, ein Dokument in OneDrive for Business in demselben verwalteten Konto zu speichern, das bei Ihrer App angemeldet ist.
– Vergewissern Sie sich, dass das Speichern zulässig ist.
Speichern in, ausgenommen – Richtlinie "Kopien von Organisationsdaten speichern" auf "Blockieren" festgelegt
– Richtlinie "Benutzer darf Kopien in ausgewählten Diensten speichern" nur auf "OneDrive for Business" festgelegt
– Navigieren Sie zu dem Ort, an dem Ihre App Daten in OneDrive for Business speichern kann.
– Versuchen Sie, ein Dokument in OneDrive for Business in demselben verwalteten Konto zu speichern, das bei Ihrer App angemeldet ist.
– Vergewissern Sie sich, dass das Speichern zulässig ist.
– Wenn Ihre App dies zulässt, versuchen Sie, die Datei an einem anderen Cloudspeicherort zu speichern, und bestätigen Sie, dass sie blockiert wurde.
Speichern in, blockiert Richtlinie "Kopien von Organisationsdaten speichern" auf "Blockieren" festgelegt – Navigieren Sie zu dem Ort, an dem Ihre App Daten in OneDrive for Business speichern kann.
– Versuchen Sie, ein Dokument in OneDrive for Business in demselben verwalteten Konto zu speichern, das bei Ihrer App angemeldet ist.
– Vergewissern Sie sich, dass das Speichern blockiert ist.
– Wenn Ihre App dies zulässt, versuchen Sie, die Datei an einem anderen Cloudspeicherort zu speichern, und bestätigen Sie, dass sie blockiert wurde.
Öffnen von, vollständig zulässig Richtlinie "Daten in Organisationsdokumenten öffnen", die auf "Zulassen" festgelegt ist – Navigieren Sie zu dem Ort, an dem Ihre App Daten aus OneDrive for Business öffnen kann.
– Versuchen Sie, ein Dokument aus OneDrive for Business zu öffnen, und dasselbe verwaltete Konto, das im Speicher Ihrer App angemeldet ist.
– Vergewissern Sie sich, dass das Öffnen zulässig ist.
Offen von, ausgenommen – Richtlinie "Daten in Organisationsdokumenten öffnen" auf "Blockieren" festgelegt
– Richtlinie "Benutzern das Öffnen von Daten aus ausgewählten Diensten erlauben", die nur auf "OneDrive for Business" festgelegt ist
– Navigieren Sie zu dem Ort, an dem Ihre App Daten aus OneDrive for Business öffnen kann.
– Versuchen Sie, ein Dokument aus OneDrive for Business zu öffnen, und dasselbe verwaltete Konto, das im Speicher Ihrer App angemeldet ist.
– Vergewissern Sie sich, dass das Öffnen zulässig ist.
– Wenn Ihre App dies zulässt, versuchen Sie, eine andere Datei von einem anderen Cloudspeicherort zu öffnen, und bestätigen Sie, dass sie blockiert ist.
Geöffnet von, blockiert Richtlinie "Daten in Organisationsdokumenten öffnen", die auf "Blockieren" festgelegt ist – Navigieren Sie zu dem Ort, an dem Ihre App Daten aus OneDrive for Business öffnen kann.
– Versuchen Sie, ein Dokument aus OneDrive for Business zu öffnen, und dasselbe verwaltete Konto, das im Speicher Ihrer App angemeldet ist.
– Vergewissern Sie sich, dass das geöffnete blockiert ist.
– Wenn Ihre App dies zulässt, versuchen Sie, eine andere Datei von einem anderen Cloudspeicherort zu öffnen, und bestätigen Sie, dass sie blockiert ist.

Überprüfen von Benachrichtigungseinschränkungen

Überspringen Sie, wenn Sie keine Richtlinie zum Einschränken von Inhalten in Benachrichtigungen implementiert haben.

Was die App-Schutzrichtlinie angeht, kann Ihre Anwendung drei verschiedene Arten von Benachrichtigungen auslösen:

  1. Benachrichtigungen, die keine Kontodaten enthalten.
  2. Benachrichtigungen, die Daten enthalten, die zu einem verwalteten Konto gehören.
  3. Benachrichtigungen, die Daten enthalten, die zu einem nicht verwalteten Konto gehören.

Wenn Es sich bei Ihrer Anwendung um eine einzelne Identität handelt, sind nur die ersten 2 relevant, da kein Schutz angewendet wird, wenn das einzige Konto nicht verwaltet wird.

Benachrichtigungseinschränkungen können überprüft werden, indem alle drei Arten von Benachrichtigungen mit unterschiedlichen Richtlinienwerten ausgelöst werden.

Installieren Sie für diese Tests Ihre App und die Intune-Unternehmensportal. Melden Sie sich mit einem verwalteten Konto an, bevor Sie den Test starten. Wenn Es sich bei Ihrer App um mehrere Identitäten handelt, melden Sie sich auch mit einem nicht verwalteten Konto bei Ihrer App an.

Szenario Voraussetzungen Schritte
Vollständiger Inhalt blockiert Richtlinie "Organisationsdatenbenachrichtigungen" auf "Blockieren" festgelegt – Lösen Sie Ihre App aus, um eine Benachrichtigung ohne Kontodaten auszulösen.
– Vergewissern Sie sich, dass diese Benachrichtigung keinen Inhalt anzeigt.
– Lösen Sie Ihre App aus, um eine Benachrichtigung mit den Daten des verwalteten Kontos auszulösen.
– Vergewissern Sie sich, dass diese Benachrichtigung keinen Inhalt anzeigt.
– Lösen Sie Ihre App aus, um eine Benachrichtigung mit den Daten des nicht verwalteten Kontos auszulösen.
– Vergewissern Sie sich, dass diese Benachrichtigung keinen Inhalt anzeigt.
Teilweise blockierter Inhalt Richtlinie "Organisationsdatenbenachrichtigungen" auf "Organisationsdaten blockieren" festgelegt – Lösen Sie Ihre App aus, um eine Benachrichtigung ohne Kontodaten auszulösen.
– Vergewissern Sie sich, dass diese Benachrichtigung den vollständigen Inhalt anzeigt.
– Lösen Sie Ihre App aus, um eine Benachrichtigung mit den Daten des verwalteten Kontos auszulösen.
– Bestätigen Sie, dass diese Benachrichtigung den Inhalt des verwalteten Kontos redigiert.
– Lösen Sie Ihre App aus, um eine Benachrichtigung mit den Daten des nicht verwalteten Kontos auszulösen.
– Vergewissern Sie sich, dass diese Benachrichtigung den vollständigen Inhalt anzeigt.
Kein Inhalt blockiert Richtlinie "Organisationsdatenbenachrichtigungen" auf "Zulassen" festgelegt

Überprüfen der Datensicherung und -wiederherstellung

Überspringen Sie, wenn Sie keine Richtlinie zum Schutz von Sicherungsdaten implementiert haben.

Machen Sie sich erneut mit dem Inhalt (Dateien und/oder Schlüssel-Wert-Paaren) vertraut, den Ihre App für die Sicherung konfiguriert hat. Sie sollten überprüfen, ob nur der erwartete Inhalt Teil der Wiederherstellung ist. Zusätzliche Inhalte in der Wiederherstellung können zu einem Datenleck führen.

Installieren Sie für diese Tests Ihre App und die Intune-Unternehmensportal. Melden Sie sich mit einem verwalteten Konto an, bevor Sie den Test starten. Wenn Es sich bei Ihrer App um mehrere Identitäten handelt, melden Sie sich auch mit einem nicht verwalteten Konto bei Ihrer App an.

Befolgen Sie die offiziellen Anweisungen von Android zum Testen der Sicherung. Diese Anweisungen unterscheiden sich für automatische Sicherungen und Schlüssel-Wert-Sicherungen. Befolgen Sie daher genau die Anweisungen.

Überprüfen der benutzerdefinierten Bildschirmaufnahme anhand der Richtlinie

Überspringen Sie, wenn Sie keine benutzerdefinierten Bildschirmaufnahmeeinschränkungen implementiert haben.

Wenn Ihre Anwendung über ein Feature verfügt, das die Android-Ebene WindowFLAG_SECUREumgeht, überprüfen Sie, ob dieses Feature durch App-Schutzrichtlinien-Bildschirmaufnahmeeinschränkungen blockiert ist.

Installieren Sie für diese Tests Ihre App und die Intune-Unternehmensportal. Melden Sie sich mit einem verwalteten Konto an, bevor Sie den Test starten.

Szenario Voraussetzungen Schritte
Bildschirmaufnahme blockiert Richtlinie "Bildschirmaufnahme und Google Assistant" auf "Blockieren" festgelegt – Navigieren Sie zu dem Speicherort in Ihrer App, der Ihren benutzerdefinierten FLAG_SECURE Code nutzt.
– Versuchen Sie, dieses Feature zu verwenden.
– Vergewissern Sie sich, dass das Feature blockiert ist.
Bildschirmaufnahme zulässig Richtlinie "Bildschirmaufnahme und Google Assistant" auf "Zulassen" festgelegt – Navigieren Sie zu dem Speicherort in Ihrer App, der Ihren benutzerdefinierten FLAG_SECURE Code nutzt.
– Versuchen Sie, dieses Feature zu verwenden.
– Vergewissern Sie sich, dass das Feature zulässig ist.

Überprüfen der App-Schutzzertifizierungsstelle

Überspringen Sie diese Option, wenn Sie die Support App Protection-Zertifizierungsstelle nicht implementiert haben.

Zusätzlich zu den typischen Überprüfungsschritten zum Erstellen und Zuweisen einer App-Schutzrichtlinie zu Ihrer App und Ihrem Testkonto müssen Sie auch eine App Protection-Richtlinie für bedingten Zugriff erstellen und Ihrem Testkonto zuweisen. Weitere Informationen finden Sie unter Einrichten von App-basierten Richtlinien für bedingten Zugriff mit Intune .

Testschritte:

  1. Deinstallieren Sie Microsoft Authenticator und Intune-Unternehmensportal, bevor Sie diesen Test starten.
  2. Installieren Sie Ihre App.
  3. Melden Sie sich bei Ihrer App mit Ihrem Testkonto an, für das sowohl eine App-Schutzrichtlinie als auch eine app-basierte Zertifizierungsstellenrichtlinie gilt.
  4. Vergewissern Sie sich, dass Ihre App Sie auffordert, die Unternehmensportal zu installieren.
  5. Melden Sie sich erneut an.
  6. Vergewissern Sie sich, dass Ihre App Sie auffordert, Ihr Gerät zu registrieren. Folgen Sie den Anweisungen. Wenn Ihre App hier nicht zur Registrierung auffordert, vergewissern Sie sich zuerst, dass Ihr Testgerät andere SDK-fähige Apps, Unternehmensportal und Authenticator deinstalliert hat. Wenn dies immer noch nicht angezeigt wird, lesen Sie die obigen Implementierungsanweisungen erneut.
  7. Vergewissern Sie sich, dass Sie nach der Registrierung auf alle App-Daten zugreifen können.

Überprüfen von Benachrichtigungsempfängern

Überspringen Sie diese Option, wenn Sie die Registrierung für Benachrichtigungen aus dem SDK nicht implementiert haben.

Validierungsschritte hängen von der Art der Benachrichtigungen ab, für die Ihre App registriert wurde. Fügen Sie für alle Arten von Benachrichtigungen die Protokollierung hinzu, um sicherzustellen, dass Ihr Empfänger ordnungsgemäß aufgerufen wird.

MAM_ENROLLMENT_RESULT kann einfach ausgelöst werden, indem Sie sich zuerst mit einem Konto bei Ihrer Anwendung anmelden, für das eine App-Schutzrichtlinie gilt.

REFRESH_APP_CONFIGund REFRESH_POLICY können ausgelöst werden, indem die entsprechenden App Configuration Richtlinie und App-Schutzrichtlinie für Ihr Testkonto aktualisiert werden und darauf gewartet wird, dass das SDK die aktualisierte Richtlinie erhält.

Tipp

Informationen zur Beschleunigung dieses Prozesses finden Sie unter Schnelles Testen mit sich ändernder Richtlinie .

MANAGEMENT_REMOVED- und WIPE_USER_DATAWIPE_USER_AUXILIARY_DATAWIPE_COMPLETED -Benachrichtigungen können ausgelöst werden, indem eine selektive Zurücksetzung von Microsoft Intune ausgegeben wird.

Überprüfen benutzerdefinierter Designs

Überspringen Sie, wenn Sie keine benutzerdefinierten Designs implementiert haben.

Die Unterstützung benutzerdefinierter Designs kann überprüft werden, indem die Farben in den Sdk-Dialogfeldern überprüft werden. Das einfachste zu überprüfende Dialogfeld ist der MAM-PIN-Bildschirm.

Voraussetzungen:

  • Legen Sie die Richtlinie des verwalteten Kontos auf Folgendes fest:
    • "PIN für Den Zugriff" auf "Erforderlich".
  • Installieren Sie Ihre App und die Intune-Unternehmensportal.

Testschritte:

  1. Starten Sie Ihre Anwendung, und melden Sie sich mit dem Testkonto an.
  2. Vergewissern Sie sich, dass der MAM-PIN-Bildschirm angezeigt wird und auf dem benutzerdefinierten Design basiert, das Sie für das SDK bereitgestellt haben.

Nächste Schritte

Wenn Sie diesen Leitfaden in der richtigen Reihenfolge befolgt und alle oben genannten Exitkriterien erfüllt haben, herzlichen Glückwunsch, Ihre App ist jetzt vollständig in das Intune App SDK integriert und kann App-Schutzrichtlinien erzwingen! Wenn Sie einen der vorherigen App-Teilnahmeabschnitte (Phase 5: Multi-Identity und Phase 6: App Configuration) übersprungen haben und sich nicht sicher sind, ob Ihre App diese Features unterstützen soll, lesen Sie die wichtigsten Entscheidungen für die SDK-Integration erneut.

App-Schutz ist jetzt ein Kernszenario für Ihre App. Lesen Sie diesen Leitfaden und den Anhang , während Sie Ihre App weiter entwickeln.