Es gibt zwei primäre Arten von Nutzeridentitäten für die Registrierung von Android Enterprise-Geräten: Managed Google Play-Konten und verwaltete Google-Konten. Verwaltete Google Play-Konten sind gerätebezogen und nicht an die Google-Identität eines bestimmten Nutzers gebunden. Verwaltete Google-Konten sind hingegen mit der Google-Identität eines Nutzers verknüpft, was die Nutzerfreundlichkeit verbessert, da Nutzer auf ihren Geräten angemeldet bleiben.
Früher waren Managed Google Play-Konten der Standard. Google empfiehlt jedoch, dass alle neuen Entwicklungen den verbesserten Registrierungsablauf verwenden, bei dem standardmäßig Managed Google-Konten erstellt werden.
Anleitungen für die ältere Implementierung finden Sie am Ende dieses Dokuments. Alle neuen Entwicklungen sollten jedoch dem hier beschriebenen neuen Registrierungsablauf folgen.
Übersicht
Der verbesserte Ablauf für die Geräteregistrierung optimiert die Geräteeinrichtung durch die Verwendung mehrerer neuer Komponenten und die Änderung der Implementierung benutzerdefinierter Device Policy Controller (DPCs). Für diesen neuen Ansatz müssen benutzerdefinierte DPC-Lösungen in das Android Management API (AMAPI) SDK und die Android Device Policy integriert werden, um Funktionen zur Gerätevorbereitung und Nutzerregistrierung auszuführen.
Das AMAPI SDK bietet die erforderlichen APIs für die Interaktion mit der Android-Geräterichtlinie auf dem Gerät selbst. Auf der Serverseite werden in Enterprise Mobility Management-Lösungen (EMM) die Registrierungstokens, die zum Starten der Geräteregistrierung erforderlich sind, mithilfe der Play EMM API generiert.
Die Android Device Policy App spielt jetzt eine zentrale Rolle bei der Verarbeitung von geräteseitigen Vorgängen. Mit dem AMAPI SDK werden die Installation und die erforderlichen Updates auf dem Gerät verwaltet. Android Device Policy übernimmt auch den Nutzerauthentifizierungsvorgang, indem die Nutzerauthentifizierung direkt durchgeführt und die Identität des Nutzers an das EMM weitergegeben wird. Wenn Google den Nutzer aus irgendeinem Grund nicht authentifizieren kann, wird ein neues Managed Google Play-Konto erstellt und dem Gerät als Fallback hinzugefügt.
API-Integration
Prüfen Sie vorab, ob Sie die aktuelle Version des Play EMM API-Clients und des AMAPI SDK verwenden.
Implementierungsleitfaden für die Registrierung
In diesem Leitfaden finden Sie die erforderlichen Schritte für die Implementierung der Registrierung. Darin wird beschrieben, wie Sie die Umgebung vorbereiten, verschiedene Registrierungsmethoden verwenden und den Lebenszyklus von Geräten verwalten.
Umgebung vorbereiten
Bevor Sie mit der Einrichtung des Kontos beginnen, müssen Sie die Geräteumgebung vorbereiten. Dazu gehört, den Play Store auf die neueste Version zu aktualisieren und die Android Device Policy App (com.google.android.apps.work.clouddpc
) im Hintergrund auf dem Gerät zu installieren. Die Installation der Android Device Policy App ist unerlässlich, da sie wichtige Komponenten des Kontoeinrichtungsprozesses enthält. EMMs müssen die Umgebung nicht manuell vorbereiten. Stattdessen sollten sie die EnvironmentClient
verwenden, wie in der Dokumentation beschrieben, und sich an die bereitgestellten Codebeispiele halten.
Beispielcode
Bevor die AccountSetup API verwendet werden kann, um das Arbeitskonto auf dem Gerät hinzuzufügen, muss der DPC zuerst prüfen, ob die Geräteumgebung bereit ist.
Verwenden Sie
EnvironmentClientFactory
, um eineEnvironmentClient
zu instanziieren undprepareEnvironment
oderprepareEnvironmentAsync
aufzurufen.val notificationReceiverServiceName = ComponentName(context, NotificationReceiver::class.java) // An EMM should implement android.app.admin.DeviceAdminReceiver and use that // class to instantiate a ComponentName val admin = ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java) EnvironmentClientFactory.create(context) .prepareEnvironment( PrepareEnvironmentRequest.builder() .setRoles( listOf( Role.builder().setRoleType( Role.RoleType.DEVICE_POLICY_CONTROLLER ).build() ) ) .setAdmin(admin) .build(), notificationReceiverServiceName, ) [Proceed with AccountSetup]
Dieser Vorgang kann einige Sekunden oder Minuten dauern, da möglicherweise Anwendungen installiert oder aktualisiert werden müssen, um eine ordnungsgemäße Arbeitsumgebung zu gewährleisten. Google empfiehlt, diesen Vorgang so früh wie möglich im Hintergrund zu starten und dem Nutzer während der Wartezeit eine entsprechende Benutzeroberfläche anzuzeigen. Wenn der Vorgang abgeschlossen ist, kann der DPC die AccountSetup API verwenden.
Registrierungsvorgang
EMMs müssen die Verwendung von users.generateAuthenticationToken()
und users.insert()
für alle Geräte einstellen. Stattdessen müssen EMMs die On-Device-API aufrufen, um die Endnutzerauthentifizierung durchzuführen. Die neue API gibt userId
und email
an den DPC zurück. Wenn Google den Nutzer nicht authentifizieren kann, wird ein verwaltetes Google Play-Konto erstellt und dem Gerät hinzugefügt. In diesem Fall gibt Google die userId
dieses Kontos zurück.
Google führt jetzt die Verwendung von Registrierungstokens ein, die an die Authentifizierungs-API übergeben werden müssen. EMMs legen fest, wann und wie das Token erstellt wird. Es kann Teil einer vorhandenen Registrierungsnutzlast sein, z. B. eines QR‑Codes oder einer Zero-Touch-Konfiguration.
Google empfiehlt jedoch, das Token bei Bedarf zu erstellen und die vorhandene API für verwaltete Google Play-Konten durch die neue API zu ersetzen, um die Änderung zu minimieren.



Der verbesserte benutzerdefinierte DPC-Registrierungsablauf umfasst die folgenden Schritte:
- Registrierungstoken erstellen:Das EMM erstellt ein Registrierungstoken mit der Play EMM API.
- Umgebung vorbereiten:Der benutzerdefinierte DPC verwendet den Ablauf „Umgebung vorbereiten“, um zu prüfen, ob das Gerät für die Registrierung bereit ist.
- Registrierung starten:Der benutzerdefinierte DPC ruft die
startAccountSetup
-API im AMAPI SDK auf und übergibt das Registrierungstoken. Hinweis: Der DPC muss entweder Geräteinhaber oder Profilinhaber sein, bevor diese API aufgerufen wird. - Google-Authentifizierungsaktivität starten:Falls erforderlich, ruft der benutzerdefinierte Geräteinhaber das
launchAuthenticationActivity
-API im AMAPI SDK auf und übergibt dasAccountSetupAttempt
. Dadurch wird eine Google-Authentifizierungsaktivität gestartet, die den Nutzer nach erfolgreicher Authentifizierung zum benutzerdefinierten DPC zurückleitet. Der Nutzer kann diesen Vorgang auch überspringen. In diesem Fall wird dem Gerät ein Managed Google Play-Konto hinzugefügt. Diese Option kann mitgoogleAuthenticationOptions
konfiguriert werden. - Registrierung abschließen:Das AMAPI SDK benachrichtigt den benutzerdefinierten DPC über das Registrierungsergebnis.
- Google-Dienste aktivieren:Sobald das Gerät eines Nutzers mit dem verwalteten Google-Konto den Unternehmensrichtlinien entspricht, muss der EMM-Dienst
Devices.setState()
aufrufen. Durch diese Aktion wird der Zugriff auf Google-Dienste für das Konto auf dem Gerät ermöglicht. Ohne diesen Aufruf funktionieren der Play Store und andere Google-Dienste nicht.
Kontoeinrichtung – Beispielcode
Um einen Versuch zur Kontoeinrichtung zu starten, kann die aufrufende App
AccountSetupClient
verwenden und entweder die MethodestartAccountSetup()
oderstartAccountSetupFuture()
aufrufen. Ein Beispiel für die Implementierung finden Sie im folgenden Codebeispiel:// Create AccountSetupClient val client = AccountSetupClientFactory.create( this, activityResultRegistry ) lifecycle.addObserver(client.lifecycleObserver) // Create adminComponent val notificationReceiver = ComponentName(this, AccountSetupNotificationReceiver::class.java) // Helper method to get enrollment token created with Play EMM API val enrollmentToken = getEnrollmentToken() val request = StartAccountSetupRequest.builder() .setEnrollmentToken(enteredText) .setNotificationReceiverServiceComponentName(notificationReceiver) .setAdminComponentName( ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java)) .build() try { val accountSetupAttempt = client.startAccountSetup(request) // handle attempt } catch (e: Exception) { // handle exception } ```
Implementieren Sie die
AccountSetupListener
-Schnittstelle und geben Sie an, wie die empfangenen Statusaktualisierungen verarbeitet werden sollen.Erweitern Sie
NotificationReceiverService
und stellen Sie die in Schritt 2 erstellteAccountSetupListener
-Instanz bereit, indem SiegetAccountSetupListener()
überschreiben.// Handles account setup changes class AccountSetupNotificationReceiver : NotificationReceiverService(), AccountSetupListener { override fun getAccountSetupListener(): AccountSetupListener = this override fun onAccountSetupChanged(accountSetupAttempt: AccountSetupAttempt) { when (accountSetupAttempt.state.kind) { StateCase.ADDED_ACCOUNT -> { val enterpriseAccount = state.addedAccount() val userId = enterpriseAccount.userId val deviceId = enterpriseAccount.deviceId // Handle account added state. } StateCase.AUTHENTICATION_ACTIVITY_LAUNCH_REQUIRED -> { val request = LaunchAuthenticationActivityRequest.builder() .setAccountSetupAttempt(accountSetupAttempt) .build(); // Send the attempt to the foreground activity to call: accountSetupClient.launchAuthenticationActivity(request) } StateCase.ACCOUNT_SETUP_ERROR -> { // Handle error state. val failureReason = state.accountSetupError().failureReason } else -> { // Handle unknown account setup attempt state. } } } } ```
Fügen Sie die erweiterte Klasse
NotificationReceiverService
zu IhremAndroidManifest.xml
hinzu und prüfen Sie, ob sie exportiert wird.<application> <service android:name = ".accountsetup.AccountSetupNotificationReceiver" android:exported = "true" /> </application>
Wenn Ihre App auf SDK 30 oder höher ausgerichtet ist, ist ein „queries“-Element im
AndroidManifest.xml
erforderlich, um anzugeben, dass sie mit ADP interagieren wird.<queries> <package android:name="com.google.android.apps.work.clouddpc" /> </queries>
Anleitung zum Testen
Dieser Abschnitt enthält eine Reihe von Richtlinien und Best Practices zum Testen Ihrer Implementierung.
Test PrepareEnvironment
Aktuellen Status des Geräts abrufen:Das EMM führt
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
um die Version der Android Device Policy auf dem Gerät abzurufen. Wenn die Android Device Policy nicht installiert ist, wird eine leere Ausgabe erwartet.
PrepareEnvironment einbinden:Der benutzerdefinierte DPC ruft die
prepareEnvironment
-API im AMAPI SDK auf und übergibt die richtige Anfrage.Auf Ergebnis von „PrepareEnvironment“ warten:Der benutzerdefinierte DPC wartet, bis
prepareEnvironment
abgeschlossen ist.Erfolg von „PrepareEnvironment“ bestätigen:Nach Abschluss wird EMM noch einmal ausgeführt.
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
Die Version der Android Device Policy sollte diesmal höher sein als in Schritt 1.
Google-Kontoauthentifizierung testen
- Testunternehmen erstellen:Der EMM erstellt ein Google-Testunternehmen mit einer Testdomain, das mit einem Test-EMM mit
enterprises.generateSignupUrl
verknüpft ist. - Google-Authentifizierung aktivieren:Der EMM-Anbieter aktiviert die Google-Authentifizierung für das Testunternehmen gemäß dieser Anleitung in der Admin-Konsole.
- Registrierungstoken erstellen:Das EMM erstellt ein Registrierungstoken mit der Play EMM API vom Typ userDevice.
- Registrierung starten:Der benutzerdefinierte DPC ruft die
startAccountSetup
-API im AMAPI SDK auf und übergibt das Registrierungstoken. - Startaktivität erforderlich:Das AMAPI SDK benachrichtigt den benutzerdefinierten DPC, dass eine Aktivität gestartet werden muss, um den Nutzer zu authentifizieren.
- Nutzer authentifizieren:Der benutzerdefinierte DPC ruft
launchAuthenticationActivity
auf, um die Aktivität zu starten. Der Nutzer authentifiziert sich mit einem verwalteten Google-Konto (Teil des Unternehmens, das in Schritt 1 erstellt wurde). - Registrierung abschließen:Das AMAPI SDK benachrichtigt den benutzerdefinierten DPC über das Registrierungsergebnis.
Überspringen der Google-Authentifizierung testen
Wir verwenden die zuvor beschriebene Einrichtung.
Dieses Mal drückt der Nutzer in Schritt 7 auf Überspringen, anstatt sich mit seinem Google-Konto zu authentifizieren. Die Registrierung wird erfolgreich abgeschlossen und auf dem Gerät ist ein Dienstkonto vorhanden (d.h. AuthenticationType
ist „Anonym“).
Geräte ohne Nutzer testen
Der verbesserte benutzerdefinierte DPC-Registrierungsablauf umfasst die folgenden Schritte, wenn die Google-Authentifizierung deaktiviert ist:
- Testunternehmen erstellen:Dies kann dasselbe Unternehmen sein, das Sie zuvor erstellt haben.
- Registrierungstoken erstellen:Der EMM erstellt mit der Play EMM API ein Registrierungstoken vom Typ userlessDevice.
- Registrierung starten:Der benutzerdefinierte DPC ruft die
startAccountSetup
-API im AMAPI SDK auf und übergibt das Registrierungstoken. - Registrierung abschließen:Das AMAPI SDK benachrichtigt den benutzerdefinierten DPC über das Registrierungsergebnis.