Intune App SDK für Android – App-Teilnahmefeatures

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

Hinweis

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

Phase 7: Features für die App-Teilnahme

Etappenziele

  • Erfahren Sie mehr über die App-Teilnahmefeatures, die vom Intune App SDK angeboten werden.
  • Integrieren Sie für Ihre App und die Benutzer relevante App-Teilnahmefeatures.
  • Testen Sie die Integration dieser Funktionen.

Was sind "App-Teilnahmefunktionen"?

Dieser SDK-Integrationsprozess versucht, die Menge an App-spezifischem Code zu minimieren, die Entwickler schreiben müssen. Durch den erfolgreichen Abschluss der vorherigen Phasen der SDK-Integration erzwingt Ihre App nun die meisten App-Schutzrichtlinieneinstellungen, z. B. Dateiverschlüsselung, Kopie/Einfügebeschränkungen, Blockieren von Screenshots und Beschränkungen für die Datenübertragung.

Einige Einstellungen erfordern jedoch App-spezifischen Code, um ordnungsgemäß erzwungen zu werden. Diese Einstellungen werden als App-Teilnahmefeatures bezeichnet. In der Regel verfügt das SDK nicht über genügend Kontext zum Code Ihrer Anwendung oder zum Endbenutzerszenario, um diese Einstellungen automatisch zu erzwingen, und ist daher darauf angewiesen, dass Entwickler die SDK-APIs entsprechend aufrufen.

App-Teilnahmefeatures 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 Leitfadens wurden bereits mehrere Features für die App-Teilnahme beschrieben:

Im restlichen Teil dieses Leitfadens werden die verbleibenden Features für die App-Teilnahme beschrieben:

  • Richtlinie erzwingen, die das Speichern von Dateien im lokalen oder Cloudspeicher oder das Öffnen von Dateien aus diesem einschränkt.
  • Richtlinie zur Einschränkung des Inhalts in Benachrichtigungen erzwingen.
  • Richtlinie zum Schutz von Sicherungsdaten erzwingen.
  • Richtlinie zum Einschränken der Bildschirmaufnahme erzwingen (wenn Ihre App über einen benutzerdefinierten Bildschirmaufnahmecode verfügt).
  • Support App Protection CA.
  • Registrieren Sie sich für Benachrichtigungen vom SDK.
  • Anwenden benutzerdefinierter Anwendungsdesigns
  • Verwenden Sie vertrauenswürdige Zertifikate aus Intune, um die Vertrauenskette zu lokalen Endpunkten sicherzustellen.

Grundlagen der App-Teilnahme Features

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

Die meisten App-Teilnahmefeatures umfassen:

  • Identifizieren der richtigen Stelle im App-Code, um zu überprüfen, ob eine Aktion zulässig ist.
  • Aufrufen einer AppPolicy Methode zum Überprüfen, ob eine Aktion zulässig ist, basierend auf der aktuell konfigurierten Richtlinie.
  • Abhängig vom Ergebnis entweder zulassen, dass die Aktion abgeschlossen wird, oder das Verhalten der App geändert wird, wenn die Aktion blockiert wird.

Verwenden Sie zum Abrufen einer AppPolicy Instance eine der MAMPolicyManager-Methoden, z. BgetPolicy(final Context context). or .getPolicyForIdentityOID(final String oid)

Informationsmethoden in AppPolicy

Nicht jede Methode ist AppPolicy an ein App-Teilnahmefeature gebunden. Einige Methoden sind informativ und geben Ihrer App Daten darüber, welche Richtlinien derzeit konfiguriert sind, auch wenn diese Richtlinien automatisch vom SDK erzwungen werden. Diese Methoden sind vorhanden, um Ihrer App die Möglichkeit zu geben, benutzerdefinierte Benutzeroberflächen darzustellen, wenn bestimmte Richtlinien konfiguriert sind.

Beispiel: Feststellen, ob Screenshots blockiert sind

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

Die App kann dies durch Aufrufen von MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed()überprüfen.

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

Viele Apps ermöglichen es dem Endbenutzer, Daten im lokalen Dateispeicher oder bei Cloudspeicherdiensten zu speichern oder dort zu öffnen. Mit dem Intune App SDK können IT-Administratoren Daten vor dem Eindringen und Verlust von Daten schützen, indem sie einschränken, wo Apps Daten speichern und Daten öffnen können.

Hinweis

Wenn Ihre App das Speichern an persönlichen oder Cloud-Speicherorten direkt aus der App heraus zulässt oder wenn Daten direkt in der App geöffnet werden können, müssen Sie dieses Intune App SDK-App-Teilnahmefeature** implementieren, damit IT-Administratoren dieses Speichern und Öffnen blockieren können.

Speichern auf einem Gerät oder in der Cloud

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

MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);

Um zu bestimmen, ob die App die Überprüfung implementieren soll, ermitteln Sie, ob die App ausgehende getIsSaveToLocationAllowedForOID Daten unterstützt, indem Sie die folgende Tabelle überprüfen:

service Parameter: SaveLocation Enum Value Anwendungsfall Zugeordnete OID
ONEDRIVE Die App speichert Daten auf OneDrive. Eine OID für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
SHAREPOINT Die App speichert Daten auf SharePoint. Eine OID für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
BOX Die App speichert Daten in Box. Eine OID für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
LOCAL Die App speichert Daten an einem externen Speicherort auf dem Gerät, bei dem es sich nicht um den privaten Speicher der App handelt. Dieser Speicherort wird nicht als Clouddienst betrachtet und sollte immer mit einem null OID-Parameter verwendet werden.
PHOTO_LIBRARY Die App speichert Daten im lokalen Android-Fotospeicher. Lokaler Fotospeicher wird nicht als Clouddienst betrachtet und sollte immer mit einem null OID-Parameter verwendet werden.
IMANAGE Die App speichert Daten auf iManage. Eine OID für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
EGNYTE Die App speichert Daten auf Egnyte. Eine OID für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
ACCOUNT_DOCUMENT Die App speichert Daten an einem Speicherort, der einem Konto innerhalb der App zugeordnet ist, und ist nicht einer der spezifischen Cloud-Speicherorte in dieser Tabelle.

Verwenden Sie diesen Speicherort, um zu bestimmen, ob Daten zwischen Konten innerhalb einer App mit mehreren Identitäten übergeben werden können.
Eine OID für ein Konto, das für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
OTHER Die App speichert Daten an einem Speicherort, der in dieser Tabelle nicht angegeben ist und der die Kriterien für ACCOUNT_DOCUMENT. Das oid wird für diesen Speicherort nicht ausgewertet und sollte sein null.

Files im privaten App-Speicher, die entweder für den App-Betrieb erforderlich sind oder vorübergehend zur Anzeige heruntergeladen werden, sind immer erlaubt. Eine Überprüfung getIsSaveToLocationAllowedForOIDist nicht erforderlich. Überprüfen Sie auf SaveLocation.LOCAL

  1. Files, die außerhalb des privaten App-Speichers gespeichert sind.
  2. In privaten App-Speicher heruntergeladene Files, die für den App-Betrieb nicht erforderlich sind (z. B. wenn der Benutzer explizit den Download auf das Gerät auswählt).

Hinweis

Bei der Überprüfung der Speicherrichtlinie sollte die OID des Kontos angegeben werden, das dem Clouddienst zugeordnet ist, oid in dem gespeichert wird (dieses Konto muss nicht unbedingt mit dem Konto identisch sein, das Besitzer des zu speichernden Dokuments ist).

Öffnen von Daten von einem lokalen oder Cloud-Speicherort

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

MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);

Um zu bestimmen, ob die App die Überprüfung implementieren sollte, ermitteln Sie, ob die App den getIsOpenFromLocationAllowedForOID Dateneingang unterstützt, indem Sie die folgende Tabelle überprüfen:

location Parameter: OpenLocation Enum Value Anwendungsfall Zugeordnete OID
ONEDRIVE_FOR_BUSINESS Die App öffnet Daten von OneDrive. Eine OID für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
SHAREPOINT Die App öffnet Daten aus SharePoint. Eine OID für ein Konto, das sowohl für die Clouddienstauthentifizierung als auch für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
CAMERA Die App öffnet Daten von der Gerätekamera. Ein null Wert, da die Gerätekamera kein Clouddienst ist.
LOCAL Die App öffnet Daten von einem externen Speicherort auf dem Gerät, bei dem es sich nicht um den privaten Speicher der App handelt. Obwohl externer Speicher kein Clouddienst ist, wird ein oid Parameter erwartet, da er den Besitz angibt.

* Für Dateien mit Identitäts-Taggen:oid muss die Identität des Dateibesitzers sein.
* Für Dateien ohne Identitätstag:oidnullsollte sein.
PHOTO_LIBRARY Die App öffnet Daten aus dem lokalen Android-Fotospeicher. Lokaler Fotospeicher wird nicht als Clouddienst betrachtet und sollte immer mit einem null OID-Parameter verwendet werden.
ACCOUNT_DOCUMENT Die App öffnet Daten von einem Speicherort, der einem Konto innerhalb der App zugeordnet ist und nicht einem der spezifischen Cloudspeicherorte in dieser Tabelle zugeordnet ist.

Verwenden Sie diesen Speicherort, um zu bestimmen, ob Daten zwischen Konten innerhalb einer App mit mehreren Identitäten übergeben werden können.
Eine OID für ein Konto, das für die Microsoft Entra-Authentifizierung verwendet wird. Wenn dieses Konto nicht vorhanden oder die OID unbekannt ist, verwenden Sie null.
OTHER Die App öffnet Daten von einem Speicherort, der in dieser Tabelle nicht angegeben ist und der die Kriterien für ACCOUNT_DOCUMENT. Das oid wird für diesen Speicherort nicht ausgewertet und sollte sein null.

Hinweis

Wenn Sie die Öffnungsrichtlinie überprüfen, sollte die OID des Kontos angegeben werden, oid über das bzw. den die Datei oder der Clouddienst geöffnet wird (nicht unbedingt dasselbe wie das Konto, das bzw. der 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. Für die Richtlinienerzwingung ist diese Methode funktional identisch mit dem Aufrufen AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) , oid außer dass sie die Analyse der Methode des Dateibesitzers aus der File.

Dialogfeld "Freigabe blockiert"

Das SDK stellt ein Dialogfeld bereit, in dem der Benutzer benachrichtigt wird, wenn die MAM-Richtlinie eine Datenübertragungsaktion blockiert.

Das Dialogfeld sollte dem Benutzer immer dann angezeigt werden, wenn der getIsSaveToLocationAllowedForOIDgetIsOpenFromLocationAllowedForOID API-Aufruf dazu führt, dass die Aktion Speichern/Öffnen blockiert wird. Das Dialogfeld zeigt eine allgemeine Meldung an und kehrt nach dem Schließen zur Berufung Activity zurück.

Fügen Sie zum Anzeigen des Dialogfelds den folgenden Code hinzu:

MAMUIHelper.showSharingBlockedDialog(currentActivity)

Dateifreigabe zulassen

Wenn das Speichern in öffentlichen Speicherorten nicht zulässig ist, sollte Ihre App dem Benutzer dennoch das Anzeigen von Dateien ermöglichen, indem sie in den privaten App-Speicher heruntergeladen und dann mit der Systemauswahl geöffnet werden.

Richtlinie zum Einschränken des Inhalts in Benachrichtigungen

Bei Single-Identity-Apps 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, mit dem nur verwaltete Inhalte aus Benachrichtigungen entfernt werden sollen. Bei Apps mit mehreren Identitäten kann das SDK nicht ermitteln, welche Benachrichtigungen verwaltete Inhalte enthalten.

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

Um festzustellen, ob die Richtlinie erzwungen wird, führen Sie den folgenden Aufruf aus:

NotificationRestriction notificationRestriction =
    MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();

Die zurückgegebene NotificationRestriction Aufzählung weist die folgenden Werte auf:

NotificationRestriction Aufzählung Erwartetes App-Verhalten
BLOCKED Die App darf keine Benachrichtigungen für das Konto anzeigen, das dieser Richtlinie zugeordnet ist. Bei Single-Identity-Apps 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, unternimmt das MAM SDK alle Anstrengungen, um Benachrichtigungen nur für Single-Identity-Apps automatisch einzuschränken.

In diesem Fall BLOCK_ORG_DATA wird die Benachrichtigung wie behandelt und BLOCKED die Benachrichtigung überhaupt nicht angezeigt.

Überprüfen Sie für eine differenziertere Steuerung den Wert von App-Benachrichtigungen getNotificationRestriction , und ändern Sie sie entsprechend.

Richtlinie zum Schutz von Sicherungsdaten

Das Intune App SDK kann das Hochladen von Daten in die integrierte Sicherungs- und Wiederherstellungsfunktion von Android blockieren. Weitere Informationen zum Sichern und Wiederherstellen in Android finden Sie im Android API-Leitfaden und in den in Android S / 12 eingeführten Änderungen zum Sichern und Wiederherstellen.

Automatische Sicherung für Apps

Ab Android M bietet Android automatische vollständige Backups für Google Drive für Apps, unabhängig von der Ziel-API der App.

Mit Intune können Sie alle Funktionen für die automatische Sicherung verwenden, die Android bietet, einschließlich der Möglichkeit, benutzerdefinierte Regeln in XML zu definieren, mit speziellen Intune-Integrationsanleitungen, um sicherzustellen, dass Datenschutz gilt.

Konfigurieren des Sicherungsverhaltens im Manifest der App

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

Wenn die App keine vollständige Sicherungs- und Wiederherstellungsfunktionalität benötigt, legen Sie den Wert auf "false" festandroid:allowBackup. In diesem Fall sind keine weiteren Maßnahmen erforderlich, und die Unternehmensdaten bleiben in der App.

Wenn Ihre App vollständige Sicherungs- und Wiederherstellungsfunktionen benötigt, legen Sie den Wert auf "true" festandroid:allowBackup, und führen Sie die folgenden Schritte aus:

  1. Wenn Ihre App keine eigene benutzerdefinierte App BackupAgentverwendet, verwenden Sie den standardmäßigen MAMBackupAgent, um automatische vollständige Sicherungen zu aktivieren, die mit der Intune-Richtlinie konform sind. Fügen Sie Folgendes in das App-Manifest ein:

    <application
    ...
      android:fullBackupOnly="true"
      android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent"
      ...>
      </application>
    
  2. Optional. Wenn Sie ein benutzerdefiniertes BackupAgent, müssen Sie MAMBackupAgent oder MAMBackupAgentHelper verwenden. Weitere Informationen finden Sie in den folgenden Abschnitten. Erwägen Sie den Wechsel zum in Schritt 1 beschriebenen MAMDefaultBackupAgent von Intune, der 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), legen Sie das Attribut android:fullBackupContent auf , falseoder eine XML-Ressource in Ihrer App festtrue.

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

    • Beispiel 1: Wenn Ihre App über vollständige Sicherungen ohne Ausschlüsse verfügen soll, müssen Sie die Attribute und Metadaten-Tags 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, Intune-Richtlinienkonformen, automatischen Sicherungen verwenden soll, müssen Sie die Attribute und Metadaten-Tags 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 Metadaten-Tag 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-Backup

Die Option Key/Value Backup ist für alle APIs 8+ 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 einen BackupAgentHelper oder einen BackupAgent verwenden.

BackupAgentHelper

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

  1. Um die Sicherung mehrerer 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

Wenn Sie diese Richtlinien befolgen, können Sie erfolgreich die Sicherung und Wiederherstellung mehrerer Identitäten durchführen.

BackupAgent

Mit einem BackupAgent können Sie viel expliziter festlegen, welche Daten gesichert werden. Da der Entwickler für die Implementierung verantwortlich ist, sind weitere Schritte erforderlich, um einen angemessenen Datenschutz durch Intune sicherzustellen. Da die meiste Arbeit bei Ihnen als Entwickler liegt, ist die Intune-Integration etwas aufwändiger.

MAM integrieren:

  1. Lesen Sie den Android-Leitfaden sorgfältig durch, um Informationen zum Schlüssel-Wert-Backup und insbesondere zum Erweitern von BackupAgent zu erhalten, um sicherzustellen, dass Ihre BackupAgent-Implementierung den Android-Richtlinien entspricht.

  2. Lassen Sie Ihre Klasse MAMBackupAgent erweitern.

Sicherung mehrerer Identitäten:

  1. Bevor Sie mit der Sicherung beginnen, vergewissern Sie sich, dass die Sicherung der Dateien oder Datenpuffer, die Sie sichern möchten, vom IT-Administrator für Szenarien mit mehreren IDs zugelassen wurden. Verwenden Sie isBackupAllowed in MAMFileProtectionManager und MAMDataProtectionManager, um dieses Verhalten zu ermitteln. Wenn die Datei oder der Datenpuffer nicht gesichert werden darf, sollten Sie sie nicht in Ihre Sicherung einschließen.

  2. Wenn Sie zu einem bestimmten Zeitpunkt während der Sicherung die Identitäten der Dateien sichern möchten, die Sie in Schritt 1 überprüft haben, müssen Sie die Dateien aufrufen backupMAMFileIdentity(BackupDataOutput data, File … files) , aus denen Sie Daten extrahieren möchten. Diese Methode erstellt automatisch neue Sicherungsentitäten und schreibt sie für Sie in die BackupDataOutput Entität. Diese Entitäten werden bei der Wiederherstellung automatisch verbraucht.

Wiederherstellung mehrerer Identitäten: Das Handbuch für die Datensicherung gibt einen allgemeinen Algorithmus zum Wiederherstellen der Daten Ihrer Anwendung an und enthält ein Codebeispiel im Abschnitt Erweitern von BackupAgent . Um eine erfolgreiche Wiederherstellung mehrerer Identitäten durchzuführen, müssen Sie die allgemeine Struktur in diesem Codebeispiel befolgen und dabei besonders auf die folgenden Punkte achten:

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

  2. Sie müssen anrufen data.skipEntityData(), wenn data.getKey() es nicht mit dem Schlüssel übereinstimmt, den Sie in onBackupgeschrieben haben. Ohne diesen Schritt können Ihre Wiederherstellungen möglicherweise nicht erfolgreich sein.

  3. Vermeiden Sie die Rückkehr beim Verwenden von Sicherungsentitäten im *-Konstrukt, da alle Entitäten, die while(data.readNextHeader())wir automatisch schreiben, in diesem Fall verloren gehen.

  • Dabei data ist der lokale Variablenname für das MAMBackupDataInput , das die App bei der Wiederherstellung empfängt.

Einschränkungen für benutzerdefinierte Bildschirmaufnahmen Mitschreiben

Wenn Ihre App eine benutzerdefinierte Bildschirmaufnahmefunktion enthält, die die Einschränkungen auf WindowAndroid-Ebene FLAG_SECURE umgeht, müssen Sie die Bildschirmaufnahmerichtlinie überprüfen, bevor Sie den vollständigen Zugriff auf die Funktion zulassen. Wenn Ihre App beispielsweise eine benutzerdefinierte Rendering-Engine verwendet, um die aktuelle Ansicht in eine PNG-Datei zu rendern, müssen Sie zuerst überprüfen AppPolicy.getIsScreenCaptureAllowed().

Hinweis

Wenn die App keine benutzerdefinierten oder nicht von Microsoft stammenden Bildschirmaufnahmefunktionen enthält, sind keine Maßnahmen zum Einschränken von Bildschirmaufnahmen erforderlich. Die Bildschirmaufnahmerichtlinie wird automatisch auf der Ebene für Window alle in MAM integrierten Apps erzwungen. Alle Versuche des Betriebssystems oder einer anderen App, einen Window in Ihrer App zu erfassen, werden als erforderlich blockiert. Wenn ein Benutzer beispielsweise versucht, den Bildschirm Ihrer App über die integrierten Screenshot- oder Bildschirmaufzeichnungsfunktionen von Android aufzuzeichnen, wird die Aufzeichnung automatisch ohne Beteiligung Ihrer App eingeschränkt.

Support App Protection CA

App Protection CA (bedingter Zugriff), auch bekannt als App-basierte CA, schränkt den Zugriff auf Ressourcen ein. Intune-App-Schutzrichtlinien müssen Ihre Anwendung verwalten, bevor sie auf diese Ressourcen zugreifen kann. Microsoft Entra ID erzwingt diese Richtlinie, indem verlangt wird, dass die App bei Intune-App-Schutzrichtlinien registriert und von diesen verwaltet wird, bevor ein Token für den Zugriff auf eine Ressource gewährt wird, die durch bedingten Zugriff geschützt ist.

Hinweis

Für die Unterstützung von App Protection CA ist die Microsoft Authentication Library (MSAL) (MSAL) Version 1.0.0 oder höher erforderlich.

Umgang mit Nichtkompatibilität mit MSAL

Wenn die App ein Token für ein Konto abruft, gibt die MSAL-Bibliothek möglicherweise ein Token zurück oder löst ein aus MsalIntuneAppProtectionPolicyRequiredException , um auf die Nichteinhaltung der Verwaltung von App-Schutzrichtlinien hinzuweisen. Sie können weitere Parameter aus der Ausnahme extrahieren, um sie bei der Korrektur der Compliance zu verwenden (siehe MAMComplianceManager). Nachdem die Wiederherstellung erfolgreich war, kann die App den Tokenabruf erneut über MSAL versuchen.

MAMComplianceManager

Die MAMComplianceManager-Schnittstelle wird verwendet, wenn der Fehler "Richtlinie erforderlich" von MSAL empfangen wird. Sie enthält die [remediateCompliance]-Methode, die Sie aufrufen sollten, um zu versuchen, die App in einen konformen Zustand zu versetzen. Sie können einen Verweis auf die MAMComplianceManager wie folgt erhalten:

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

// make use of mgr

Die MAMComplianceManager zurückgegebene Instance ist nullgarantiert nicht .

package com.microsoft.intune.mam.policy;

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

Die remediateCompliance() Methode versucht, die App unter Verwaltung zu stellen, um die Bedingungen zu erfüllen, unter denen Microsoft Entra ID das angeforderte Token gewähren kann. Die ersten vier Parameter können aus der Ausnahme extrahiert werden, die die MSAL-Methode AuthenticationCallback.onError() empfängt. Der letzte Parameter ist ein boolescher Wert, der steuert, ob während des Kompatibilitätsversuchs eine Benutzeroberfläche angezeigt wird.

remediateCompliance zeigt ein einfaches Dialogfeld für den Blockierungsfortschritt an, sodass Apps während dieses Vorgangs keine benutzerdefinierten Oberflächen anzeigen müssen. Dieses Dialogfeld wird nur angezeigt, während die Compliance-Korrektur 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 Misserfolg des Korrekturversuchs zur Konformität zu verarbeiten. Weitere Informationen finden Sie unter Benachrichtigungen zum Status der Compliance.

remediateCompliance() möglicherweise eine MAM-Registrierung als Teil der Einrichtung der Compliance initiieren. Die App erhält möglicherweise eine Registrierungsbenachrichtigung, wenn sie einen Benachrichtigungsempfänger für Registrierungsbenachrichtigungen registriert hat. Die Methode der registrierten MAMServiceAuthenticationCallbackacquireToken() App wird aufgerufen, um ein Token für die Registrierung abzurufen. acquireToken() wird aufgerufen, bevor die App ihr eigenes Token erhält. Alle Buchhaltungs- oder Kontoerstellungsaufgaben, die die App nach einem erfolgreichen Tokenerwerb ausführt, wurden möglicherweise noch nicht ausgeführt. 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 Korrekturversuch der Compliance fehl.

Wenn Sie später mit einem gültigen Token für die angeforderte Ressource aufrufen updateToken , wird die Korrektur der Compliance sofort mit dem angegebenen Token fortgesetzt.

Hinweis

Der automatische Tokenerwerb ist weiterhin möglich acquireToken() , da der Benutzer bereits vor dem Auftreten der MsalIntuneAppProtectionPolicyRequiredException Ausnahme zur Installation des Brokers und zur Registrierung des Geräts geführt wurde. Dieser Prozess führt dazu, dass der Broker ein gültiges Aktualisierungstoken im Cache hat, wodurch der Broker das angeforderte Token im Hintergrund erwerben kann.

Hier ist ein Beispiel, das den richtlinienerforderlichen Fehler in der AuthenticationCallback.onError() Methode empfängt und den MAMComplianceManager aufruft, um den Fehler zu behandeln.

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

Wenn sich die App für Benachrichtigungen vom Typ COMPLIANCE_STATUSregistriert, sendet das System eine , MAMComplianceNotification um die App über den endgültigen Status des Konformitätsbehebungsversuchs zu informieren. Ausführliche Informationen zur Registrierung finden Sie unter Registrieren für Benachrichtigungen vom SDK .

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

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

Statuscode Erklärung
UNKNOWN Status ist unbekannt. Dieser Status könnte auf einen unerwarteten Fehlergrund hinweisen. Weitere Informationen finden Sie möglicherweise in den Protokollen des Unternehmensportals.
COMPLIANT Die Wiederherstellung der Compliance war erfolgreich, und die App ist jetzt mit der Richtlinie kompatibel. Der MSAL-Tokenerwerb sollte wiederholt werden.
NOT_COMPLIANT Der Versuch, die Compliance zu beheben, ist fehlgeschlagen. Die App ist nicht kompatibel, und der MSAL-Tokenabruf sollte erst dann wiederholt werden, wenn die Fehlerbedingung korrigiert ist. Es MAMComplianceNotification enthält zusätzliche Fehlerinformationen.
SERVICE_FAILURE Fehler beim Abrufen von Kompatibilitätsdaten vom Intune-Dienst. Weitere Informationen finden Sie möglicherweise in den Protokollen des Unternehmensportals.
NETWORK_FAILURE Beim Herstellen einer Verbindung mit dem Intune-Dienst ist ein Fehler aufgetreten. Die App sollte versuchen, die Tokenerfassung zu wiederholen, wenn die Netzwerkverbindung wiederhergestellt ist.
CLIENT_ERROR Der Versuch, die Compliance zu beheben, ist aufgrund eines clientbezogenen Problems fehlgeschlagen, z. B. eines fehlenden oder falschen Benutzertokens. Es MAMComplianceNotification enthält weitere Fehlerinformationen.
PENDING Der Versuch, die Compliance zu beheben, schlägt fehl, da der Dienst die Antwort auf den Status nicht vor Ablauf des Zeitlimits sendet. Die App sollte ihre Tokenerfassung später erneut versuchen.
COMPANY_PORTAL_REQUIRED Das Unternehmensportal muss auf dem Gerät installiert sein, damit die Compliance-Wiederherstellung erfolgreich ist. Wenn sie bereits installiert ist, muss die App neu gestartet werden. Ein Dialogfeld fordert den Benutzer auf, die App neu zu starten.

Wenn der Status der Konformität lautetMAMCAComplianceStatus.COMPLIANT, sollte die App ihren ursprünglichen Tokenabruf (für ihre eigene Ressource) erneut initiieren.

Wenn der Korrekturversuch zur Kompatibilitätskorrektur fehlgeschlagen ist, geben die getComplianceErrorTitle()getComplianceErrorMessage() und-Methoden lokalisierte Zeichenfolgen zurück, die die App dem Endbenutzer auf Wunsch anzeigen kann. Die App kann die meisten Fehlerfälle nicht beheben. Im Allgemeinen sollten Fehler bei der Kontoerstellung oder Anmeldung auftreten, und dem Benutzer erlauben, es später erneut zu versuchen.

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

Hier ist ein Beispiel für die Registrierung eines Empfängers mithilfe einer anonymen Klasse zur Implementierung 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

Sie müssen den Benachrichtigungsempfänger vor dem Aufruf remediateCompliance() registrieren, um eine Racebedingung zu vermeiden, die zum Auslassen der Benachrichtigung führen könnte.

Deklarieren der Unterstützung für App Protection CA

Sobald Ihre App für die App-CA-Wartung bereit ist, können Sie Microsoft Identity mitteilen, dass Ihre App für die App-CA bereit ist. Erstellen Sie dazu in der MSAL-Anwendung den öffentlichen Client mit den 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"
          }
        }
      ]
    }

Fahren Sie nach Abschluss der Schritte mit der Überprüfung von App Protection CA fort.

Hinweise zur Implementierung

Hinweis

Die Methode der App sollte "false" MAMServiceAuthenticationCallback.acquireToken() für das Flag an acquireTokenSilentAsync()übergebenforceRefresh.

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 Ihr UX zuerst anzeigen und Ihren Benachrichtigungslistener registrieren, bevor remediateCompliance()Sie aufrufen. Dadurch wird eine Racebedingung verhindert, bei der die Benachrichtigung übersehen werden kann, wenn remediateCompliance() sie schnell fehlschlägt. Beispielsweise ist die onCreate() oder-Methode onMAMCreate() einer Activity-Unterklasse der ideale Ort, um den Benachrichtigungslistener zu registrieren und dann aufzurufen remediateCompliance(). Die Parameter für remediateCompliance() können als Intent-Extras an Ihre UX übergeben werden. Wenn die Benachrichtigung über den Status der Konformität eingeht, können Sie das Ergebnis anzeigen oder die Aktivität beenden.

Hinweis

remediateCompliance() registriert das Konto und versucht die Registrierung. Sobald der Haupttoken abgerufen wurde, ist ein Anruf registerAccountForMAM() nicht mehr erforderlich, aber es schadet nicht, dies zu tun. Wenn die App hingegen ihr Token nicht abrufen kann und das Benutzerkonto entfernen möchte, muss sie aufrufen unregisterAccountForMAM() , um das Konto zu entfernen und Registrierungswiederholungen im Hintergrund zu verhindern.

Registrieren für Benachrichtigungen vom SDK

Im Leitfaden zum Intune App SDK werden mehrere Szenarien beschrieben, in denen Ihre App sich möglicherweise für Benachrichtigungen vom SDK registrieren 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()die eine MAMNotificationType-Aufzählung zurückgibt.

Bei den meisten Benachrichtigungen handelt es sich um MAMUserNotification-Instanzen , die Informationen zu einer einzelnen Identität bereitstellen. Die OID der Identität kann über die getUserOid() Funktion abgerufen werden, und der UPN der Identität kann über getUserIdentity()abgerufen werden.

MAMEnrollmentNotification und MAMComplianceNotification erweitern sich MAMUserNotificationweiter, das Ergebnisse für Versuche, einen Benutzer oder ein Gerät beim MAM-Dienst zu registrieren, bzw. Ergebnisse für Versuche, die Compliance für App Protection CA zu korrigieren, enthält.

Benachrichtigungstyp Notification class Grund für die Benachrichtigung Anwendbarkeit Tipps zur Handhabung Threadinfo
COMPLIANCE_STATUS MAMComplianceNotification Gibt das Ergebnis eines Korrekturversuchs zur Konformität zurück. Apps, die App Protection CA implementieren, müssen damit umgehen. Nichtdeterministisch
MAM_ENROLLMENT_RESULT MAMEnrollmentNotification Gibt das Ergebnis eines Registrierungsversuchs zurück. Alle Apps erhalten dies. Nichtdeterministisch
MANAGEMENT_REMOVED MAMUserNotification App is not managed (Die App wird bald nicht mehr verwaltet). Apps, die dies verwenden MAMDataProtectionManager , müssen damit umgehen. Siehe MANAGEMENT_REMOVED. Nie im UI-Thread
REFRESH_APP_CONFIG MAMUserNotification Möglicherweise haben sich die Werte der App-Konfiguration geändert. Apps, die die App-Konfiguration implementieren und App-Konfigurationsdaten zwischenspeichern, müssen dies verarbeiten. Apps müssen alle zwischengespeicherten App-Konfigurationsdaten ungültig machen und aktualisieren. Nichtdeterministisch
REFRESH_POLICY MAMUserNotification Möglicherweise wurde die Richtlinie zum App-Schutz geändert. Apps, die App-Schutzrichtlinien zwischenspeichern, müssen damit umgehen. Apps müssen zwischengespeicherte App-Schutzrichtliniendaten ungültig machen und aktualisieren. Nichtdeterministisch
WIPE_USER_DATA MAMUserNotification Zurücksetzen steht kurz bevor (*). Apps, die dies MAMDataProtectionManager verwenden, müssen damitWIPE_USER_AUXILIARY_DATA umgehen. Siehe Selektives Löschen. Nie im UI-Thread
WIPE_USER_AUXILIARY_DATA MAMUserNotification Zurücksetzen steht kurz bevor (*). Nur Multi-Identity-Apps erhalten dies.
Apps, die dies MAMDataProtectionManager verwenden, müssen damitWIPE_USER_DATA umgehen.
Siehe Selektives Löschen. Nie im UI-Thread
WIPE_COMPLETED MAMUserNotification Das Zurücksetzen ist abgeschlossen. Optional für alle Apps. Wird nach WIPE_USER_DATA oder WIPE_USER_AUXILIARY_DATAgeliefert.
Wenn die App einen Fehler von ihrem Löschhandler meldet, wird diese Benachrichtigung nicht gesendet.
Nie im UI-Thread

(*) Wipes können aus vielen Gründen auftreten, zum Beispiel:

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

Warnung

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

MANAGEMENT_REMOVED

Die MANAGEMENT_REMOVED Benachrichtigung informiert die App, dass ein zuvor richtlinienverwaltetes Konto bald nicht mehr verwaltet wird. Nachdem das Konto nicht mehr verwaltet wird, kann die App die verschlüsselten Dateien dieses Kontos nicht mehr lesen, die Daten MAMDataProtectionManagerdes Kontos, mit denen verschlüsselt ist, lesen, mit der verschlüsselten Zwischenablage interagieren oder anderweitig am verwalteten App-Ökosystem teilnehmen.

Dies erfordert nicht das Löschen der Benutzerdaten oder 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, Apps, die sie verwenden MAMDataProtectionManager , müssen dies jedoch verarbeiten. Weitere Informationen finden Sie unter Datenpufferschutz .

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

  • Das SDK hat bereits zuvor verschlüsselte Dateien (aber keine geschützten Datenpuffer) entschlüsselt, die zur App gehören. Files 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.

  • Alle neuen Dateien oder geschützten Datenpuffer, die die Empfängermethode erstellt (oder jeder andere Code, der nach dem Starten des Empfängers ausgeführt wird), werden nicht verschlüsselt.

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

Nachdem der Empfänger Ihrer App zurückkehrt, hat er keinen Zugriff mehr auf Verschlüsselungsschlüssel.

Implementieren von MAMNotificationReceiver

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

Um den Empfänger zu registrieren, rufen Sie registerReceiver den Empfänger an, und geben Sie die gewünschte Benachrichtigung in Ihrer Application.onCreate Methode ein:

@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 ruft für jede empfangene Benachrichtigung einzeln auf und muss eine .boolean Im Allgemeinen sollte diese Methode immer zurückgeben true, es sei denn, Ihre Anwendung hat bei der Reaktion auf eine Benachrichtigung einen Fehler festgestellt.

Wie bei anderen Arten von Android-Empfängern ist Ihre Anwendung flexibel bei der Verarbeitung von Benachrichtigungen:

  • Sie kann unterschiedliche MAMNotificationReceiver-Implementierungen für unterschiedliche Benachrichtigungstypen erstellen. Stellen Sie in diesem Fall sicher, dass Sie jede Implementierung und jeden Benachrichtigungstyp separat registrieren.
  • Sie kann eine einzelne MAMNotificationReceiver-Implementierung verwenden, die Logik zum Reagieren auf mehrere unterschiedliche Benachrichtigungstypen enthält. In diesem Fall muss es für jeden Benachrichtigungstyp registriert werden, auf den es reagieren kann.
  • Sie kann mehrere MAMNotificationReceiver-Implementierungen erstellen, die jeweils auf denselben Benachrichtigungstyp reagieren. In diesem Fall müssen beide für denselben Benachrichtigungstyp registriert sein.

Tipp

Es ist sicher zu blockieren MAMNotificationReceiver.onReceive , da der 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 gilt für alle SDK-Bildschirme und -Dialoge. Wenn kein Design bereitgestellt wird, wird das Standard-SDK-Design verwendet.

Bereitstellen eines benutzerdefinierten Designs

Um ein Design bereitzustellen, fügen Sie die folgende Codezeile in der Application.onMAMCreate Methode hinzu:

MAMThemeManager.setAppTheme(R.style.AppTheme);

Ersetzen Sie R.style.AppTheme im Beispiel das Formatvorlagendesign, das das SDK anwenden soll.

Verwaltung vertrauenswürdiger Stammzertifikate

Wenn die Anwendung SSL/TLS-Zertifikate benötigt, 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 Verwaltung der Zertifikatvertrauensstellung 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 vom Microsoft Tunnel-VPN Gateway verwendet werden, Sie müssen Microsoft MAM-Tunnel jedoch 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 die App Configuration-Richtlinie bereitgestellten vertrauenswürdigen Intune-Stammzertifikate als Ausweichoption, 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 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 respektiert diese zusätzliche Sicherheit, indem überprüft wird, ob die XML-Datei der 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.
  • Pin-Sets für Zertifikate für bestimmte Domänen.

Hinweis

Weitere Informationen zur Android-Netzwerksicherheitskonfiguration finden Sie unter Netzwerksicherheitskonfiguration.

Wenn eine dieser Optionen auf eine Domäne zutrifft, die auf Vertrauensstellung geprüft wird, überspringt die Verwaltung vertrauenswürdiger Stammzertifikate die benutzerdefinierten Vertrauensprüfungen für diese Domäne und überlässt die Überprüfung nur die standardmäßigen Vertrauensverwalter der Plattform.

Klasse MAMTrustedRootCertsManager

Diese Klasse stellt die folgenden APIs bereit:

  • createSSLContextForOID(String oid, 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 korrekt mit X509TrustManager Objekten initialisiert, die die kombinierten vertrauenswürdigen Stammzertifikate vom Gerät und dem MAM-Dienst verwenden.
  • createSSLSocketFactoryForOID(String oid, 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 von demselben SSLContext Objekt in dieser Klasse verwiesen.
  • createX509TrustManagersForOID(String oid): erstellt ein Array von X509TrustManager Objekten, die die kombinierten vertrauenswürdigen Stammzertifikate vom Gerät und dem MAM-Dienst für die angegebene Identität verwenden.

Hinweis

Es wird erwartet, dass der oid Parameter die Microsoft Entra-Benutzer-ID (OID) für einen bestimmten Benutzer ist, der die Anwendung ausführt. Wenn die Benutzer-ID im Voraus unbekannt ist, können Sie den Wert übergeben null , und MAM versucht, die richtige Identität aus dem Thread oder Prozess zu ermitteln, in dem diese APIs aufgerufen werden. Die Identität muss im Prozess oder Thread korrekt festgelegt sein, damit MAM die Identität ermitteln kann. Weitere Informationen zum Festlegen der aktiven Identität für einen Prozess oder Thread finden Sie unter Phase 5: Multi-Identität.

Hinweis

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

Hier sind 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.createSSLSocketFactoryForOID(oid, "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.createX509TrustManagersForOID(oid);

// 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.WebViewClientbereit. Die Klasse bietet eine Möglichkeit, 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 bereitgestellt werden. Bei diesem Ansatz wird die Vertrauenswürdigkeit des Hosts anhand der Ziel-URL überprüft, die den SSL-Fehler in WebViewgeneriert hat. Wenn die benutzerdefinierte Implementierung den SSL-Fehler nicht behandelt, ruft das System das Standardverhalten auf, das von der Superklasse geerbt wurde.

Wenn Sie diese Klasse verwenden, erstellen Sie eine Instance davon, und rufen WebView.setWebViewClient(WebViewClient) Sie sie dann auf, um sie bei einer 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
...

China App Store Datenschutz-Compliance

Einige chinesische App-Stores verlangen, dass Anwendungen Benutzern ein Dialogfeld zur Zustimmung zum Datenschutz anzeigen, bevor sie Vorgänge ausführen, die mit anderen Apps auf dem Gerät interagieren. Dies umfasst das Registrieren von Broadcast-Empfängern, die auf Ereignisse zum Installieren/Deinstallieren von Paketen lauschen. Das MAM-SDK tut dies, um auf das Vorhandensein des Unternehmensportals zu warten, in dem sich der Großteil der MAM-Logik befindet.

Wenn Ihre App über chinesische App Stores vertrieben wird, die diese Anforderung haben, verwenden Sie die folgende Integration, um Offlinestartvorgänge zu verzögern, bis die Zustimmung zum Datenschutz vorliegt.

1. Manifestflag hinzufügen

Fügen Sie die folgenden Metadaten zu den App-Dateien AndroidManifest.xmlhinzu:

<application>
    <meta-data
        android:name="com.microsoft.intune.mam.OfflineStartupDeferredUntilAppSignal"
        android:value="true"/>
</application>

Hinweis

Dieses Flag sollte nur APKs hinzugefügt werden, die über chinesische App Stores vertrieben werden und die vor der Interaktion mit anderen Apps eine Datenschutzzustimmung erfordern. Bei APKs, die über andere Stores vertrieben werden, sollte dieses Kennzeichen nicht enthalten sein.

2. Signalbereitschaft nach Datenschutzdialog

Nachdem der Benutzer Ihr Dialogfeld zur Datenschutzbestätigung akzeptiert hat, rufen Sie das SDK auf, um zu signalisieren, dass Offlinestartvorgänge fortgesetzt werden können:

// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager::class.java)
    .setOfflineStartupReady()

Oder in Java:

// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager.class)
    .setOfflineStartupReady();

Verhalten

Der Bereitschaftszustand wird über App-Starts hinweg beibehalten. Nach setOfflineStartupReady() dem Aufruf wird der Empfänger bei nachfolgenden Starts sofort während der App-Initialisierung registriert.

Hinweise

  • Die setOfflineStartupReady() Methode ist idempotent; ein mehrmaliges Aufrufen ist sicher.
  • Wenn das Unternehmensportal bereits installiert ist (Onlinemodus), hat der Anruf setOfflineStartupReady() keine Auswirkungen, da der Empfänger nicht benötigt wird.
  • Wichtig: Sie sollten immer anrufen, setOfflineStartupReady() nachdem Ihr Datenschutzdialogfeld akzeptiert wurde.

Beendigungskriterien

Weitere Informationen finden Sie unter Schnelles Testen mit sich ändernder Richtlinie , um das Testen zu vereinfachen.

Überprüfen von "Speichern in" und "Öffnen ab"-Einschränkungen

Überspringen Sie diesen Abschnitt, wenn Sie keine Richtlinie zur Begrenzung der Datenübertragung zwischen Apps und Geräte- 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 das Speichern und Öffnen von Daten in OneDrive von einem einzigen Speicherort innerhalb der App aus unterstützt. Sie müssen jedoch jede Kombination überprüfen: jeden unterstützten Speicherort für jeden Ort, an dem Ihre App das Speichern von Daten zulässt, und jeden unterstützten geöffneten Speicherort für jeden Ort, an dem Ihre App das Öffnen von Daten zulässt.

Installieren Sie für diese Tests Ihre App und das Intune-Unternehmensportal; melden Sie sich mit einem verwalteten Konto an, bevor Sie mit dem Test beginnen. Ferner gilt Folgendes:

  • Legen Sie die Richtlinie des verwalteten Kontos wie folgt fest:
    • "Organisationsdaten an andere Apps senden" ist auf "Richtlinienverwaltete Apps" eingestellt.
    • "Daten von anderen Apps empfangen" ist auf "Richtlinienverwaltete Apps" eingestellt.
Szenario Voraussetzungen Schritte
Speichern unter, vollständig zulässig Die Richtlinie "Kopien der Organisationsdaten speichern" ist auf "Zulassen" festgelegt - Navigieren Sie zu dem Teil Ihrer App, in dem Daten auf OneDrive gespeichert werden können.
- Versuchen Sie, ein Dokument auf OneDrive mit demselben verwalteten Konto zu speichern, das bei Ihrer App angemeldet ist.
- Vergewissern Sie sich, dass das Speichern zulässig ist.
Speichern unter, ausgenommen - Richtlinie "Kopien von Organisationsdaten speichern" auf "Blockieren" gesetzt
- Richtlinie "Benutzer das Speichern von Kopien in ausgewählten Diensten erlauben" nur auf OneDrive festgelegt
- Navigieren Sie zu dem Teil Ihrer App, in dem Daten auf OneDrive gespeichert werden können.
- Versuchen Sie, ein Dokument auf OneDrive mit 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 Cloud-Speicherort zu speichern, und bestätigen Sie, dass sie blockiert ist.
Speichern unter, blockiert Richtlinie "Kopien der Organisationsdaten speichern" auf "Blockieren" festgelegt - Navigieren Sie zu dem Teil Ihrer App, in dem Daten auf OneDrive gespeichert werden können.
- Versuchen Sie, ein Dokument auf OneDrive mit 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 Cloud-Speicherort zu speichern, und bestätigen Sie, dass sie blockiert ist.
Öffnen von, vollständig zulässig Die Richtlinie "Daten in Organisationsdokumenten öffnen" ist auf "Zulassen" festgelegt. - Navigieren Sie zu dem Teil Ihrer App, in dem Daten von OneDrive geöffnet werden können.
- Versuchen Sie, ein Dokument von OneDrive aus mit demselben verwalteten Konto zu öffnen, das im Speicher Ihrer App angemeldet ist.
- Vergewissern Sie sich, dass das Öffnen zulässig ist.
Offen von, ausgenommen - Richtlinie "Daten in Organisationsdokumente öffnen" auf "Blockieren" gesetzt
- Richtlinie "Benutzern das Öffnen von Daten aus ausgewählten Diensten erlauben" auf nur OneDrive festgelegt
- Navigieren Sie zu dem Teil Ihrer App, in dem Daten von OneDrive geöffnet werden können.
- Versuchen Sie, ein Dokument von OneDrive aus mit demselben verwalteten Konto zu öffnen, 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 Cloud-Speicherort zu öffnen, und bestätigen Sie, dass sie blockiert ist.
Öffnen von, blockiert Richtlinie "Daten in Organisationsdokumente öffnen" auf "Blockieren" festgelegt - Navigieren Sie zu dem Teil Ihrer App, in dem Daten von OneDrive geöffnet werden können.
- Versuchen Sie, ein Dokument von OneDrive aus mit demselben verwalteten Konto zu öffnen, das im Speicher Ihrer App angemeldet ist.
- Vergewissern Sie sich, dass das Öffnen blockiert ist.
- Wenn Ihre App dies zulässt, versuchen Sie, eine andere Datei von einem anderen Cloud-Speicherort zu öffnen, und bestätigen Sie, dass sie blockiert ist.

Überprüfen von Benachrichtigungseinschränkungen

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

Was die App-Schutzrichtlinie betrifft, so 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 beiden relevant, da kein Schutz angewendet wird, wenn das einzige Konto nicht verwaltet wird.

Sie können Benachrichtigungseinschränkungen überprüfen, indem Sie alle drei Arten von Benachrichtigungen mit unterschiedlichen konfigurierten Richtlinienwerten auslösen.

Installieren Sie für diese Tests Ihre App und das Intune-Unternehmensportal; melden Sie sich mit einem verwalteten Konto an, bevor Sie mit dem Test beginnen. Wenn es sich bei Ihrer App um eine Mehrfachidentität handelt, melden Sie sich auch mit einem nicht verwalteten Konto bei Ihrer App an.

Szenario Voraussetzungen Schritte
Vollständiger Inhalt blockiert Richtlinie für "Org-Datenbenachrichtigungen" auf "Blockieren" festgelegt - Lösen Sie Ihre App aus, um eine Benachrichtigung ohne Kontodaten auszulösen.
- Vergewissern Sie sich, dass die 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 die 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 die Benachrichtigung keinen Inhalt anzeigt.
Teilweise blockierter Inhalt Richtlinie "Benachrichtigungen zu Organisationsdaten" auf "Organisationsdaten blockieren" festgelegt - Lösen Sie Ihre App aus, um eine Benachrichtigung ohne Kontodaten auszulösen.
- Vergewissern Sie sich, dass die 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 die 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 die Benachrichtigung den vollständigen Inhalt anzeigt.
Kein Inhalt blockiert Richtlinie "Benachrichtigungen über Organisationsdaten" auf "Zulassen" festgelegt - Lösen Sie Ihre App aus, um eine Benachrichtigung ohne Kontodaten auszulösen.
- Vergewissern Sie sich, dass die Benachrichtigung den vollständigen Inhalt anzeigt.
- Lösen Sie Ihre App aus, um eine Benachrichtigung mit den Daten des verwalteten Kontos auszulösen.
- Vergewissern Sie sich, dass die Benachrichtigung den vollständigen Inhalt anzeigt.
- Lösen Sie Ihre App aus, um eine Benachrichtigung mit den Daten des nicht verwalteten Kontos auszulösen.
- Vergewissern Sie sich, dass die Benachrichtigung den vollständigen Inhalt anzeigt.

Überprüfen der Datensicherung und -wiederherstellung

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

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

Installieren Sie für diese Tests Ihre App und das Intune-Unternehmensportal; melden Sie sich mit einem verwalteten Konto an, bevor Sie den Test starten. Wenn es sich bei Ihrer App um eine Mehrfachidentität 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 Autobackup und Key/Value-Backups. Befolgen Sie sie daher genau.

Überprüfen der benutzerdefinierten Bildschirmaufnahme anhand der Richtlinie

Überspringen Sie diesen Abschnitt, wenn Sie keine benutzerdefinierten Einschränkungen für das Mitschreiben implementiert haben.

Wenn Ihre Anwendung über ein Feature verfügt, das die auf Android-Ebene FLAG_SECUREumgeht, überprüfen Sie, ob dieses Feature durch Bildschirmaufnahmeeinschränkungen Windowder App-Schutzrichtlinie blockiert wird.

Installieren Sie für diese Tests Ihre App und das Intune-Unternehmensportal; melden Sie sich mit einem verwalteten Konto an, bevor Sie mit dem Test beginnen.

Szenario Voraussetzungen Schritte
Bildschirmaufnahme blockiert Richtlinie für Bildschirmaufnahme und Google Assistant auf "Blockieren" festgelegt - Navigieren Sie zu dem Teil Ihrer App, der den benutzerdefinierten FLAG_SECURE Code verwendet.
- Versuchen Sie, diese Funktion zu verwenden.
- Vergewissern Sie sich, dass die Funktion blockiert ist.
Bildschirmaufnahme zulässig Richtlinie für "Bildschirmaufnahme und Google Assistant" auf "Zulassen" festgelegt - Navigieren Sie zu dem Teil Ihrer App, der den benutzerdefinierten FLAG_SECURE Code verwendet.
- Versuchen Sie, diese Funktion zu verwenden.
- Vergewissern Sie sich, dass die Funktion zulässig ist.

Überprüfung des App-Schutzes CA

Überspringen Sie diesen Abschnitt, wenn Sie den Support App Protection CA nicht implementiert haben.

Zusätzlich zu den typischen Validierungsschritten zum Erstellen und Zuweisen einer App-Schutzrichtlinie zu Ihrem App-und Testkonto müssen Sie auch eine App-Schutzrichtlinie 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 das Intune-Unternehmensportal, bevor Sie diesen Test starten.
  2. Installieren Sie Ihre App.
  3. Melden Sie sich bei Ihrer App mit Ihrem Testkonto an, das sowohl auf eine App-Schutzrichtlinie als auch auf eine App-basierte CA-Richtlinie abzielt.
  4. Vergewissern Sie sich, dass Ihre App Sie zur Installation des Unternehmensportals auffordert.
  5. Melden Sie sich erneut an.
  6. Bestätigen Sie, 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, dass Ihr Testgerät zuerst andere SDK-fähige Apps, das Unternehmensportal und Authenticator deinstalliert hat. Wenn Sie weiterhin nicht dazu aufgefordert werden, lesen Sie die 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 diesen Abschnitt, wenn Sie "Für Benachrichtigungen vom SDK registrieren" nicht implementiert haben.

Die Überprüfungsschritte hängen von den Benachrichtigungstypen ab, für die Ihre App registriert ist. Fügen Sie für alle Arten von Benachrichtigungen eine Protokollierung hinzu, um sicherzustellen, dass Ihr Empfänger ordnungsgemäß aufgerufen wird.

MAM_ENROLLMENT_RESULT können ausgelöst werden, indem Sie sich bei Ihrer Anwendung mit einem Konto anmelden, auf das die Richtlinie zum Schutz von Apps abzielt.

Sie können die REFRESH_APP_CONFIGREFRESH_POLICY jeweiligen App Configuration-Richtlinien und App-Schutzrichtlinien für Ihr Testkonto auslösen und darauf warten, dass das SDK eine aktualisierte Richtlinie erhält.

Tipp

Weitere Informationen finden Sie unter Schnelles Testen mit sich ändernder Richtlinie , um diesen Prozess zu beschleunigen.

Sie können , WIPE_USER_DATAWIPE_USER_AUXILIARY_DATA, und WIPE_COMPLETED Benachrichtigungen auslösenMANAGEMENT_REMOVED, indem Sie eine selektive Zurücksetzung von Microsoft Intune ausgeben.

Überprüfen von benutzerdefinierten Designs

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

Sie können die Unterstützung benutzerdefinierter Designs überprüfen, indem Sie die Farben in den Dialogfeldern des SDK überprüfen. Der am einfachsten zu überprüfende Dialog ist der MAM-PIN-Bildschirm.

Voraussetzungen:

  • Legen Sie die Richtlinie des verwalteten Kontos wie folgt fest:
    • "PIN für Zugriff" auf "erforderlich" eingestellt.
  • Installieren Sie Ihre App und das 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 dem SDK bereitgestellt haben.

Nächste Schritte

Wenn Sie diese Anleitung der Reihe nach befolgt und alle Beendigungskriterien weiter oben in diesem Artikel erfüllt haben, ist Ihre App jetzt vollständig in das Intune App SDK integriert und kann App-Schutzrichtlinien erzwingen. Wenn Sie einen der vorherigen Abschnitte für die App-Teilnahme, Phase 5: Multi-Identity und Phase 6: App Configuration, übersprungen haben und nicht sicher sind, ob Ihre App diese Features unterstützen sollte, lesen Sie erneut die wichtigsten Entscheidungen für die SDK-Integration.

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