Android Enterprise kayıtlarında iki temel kullanıcı kimliği türü vardır: Managed Google Play hesapları ve yönetilen Google Hesapları. Yönetilen Google Play hesapları cihaza yöneliktir. Yani belirli bir kullanıcının Google kimliğine bağlı değildir. Yönetilen Google Hesapları ise kullanıcının kurumsal Google kimliğine bağlanır. Bu sayede, kullanıcıların cihazlarında oturumları açık tutularak kullanıcı deneyimi iyileştirilir.
Eskiden standart olarak Managed Google Play hesapları kullanılıyordu. Ancak Google artık tüm yeni geliştirmelerde, varsayılan olarak Managed Google Hesabı oluşturmaya yönelik iyileştirilmiş kayıt akışının kullanılmasını öneriyor.
Eski uygulama için yönergeler bu belgenin sonunda bağlam bilgisi olarak verilse de tüm yeni geliştirmeler burada ayrıntılı olarak açıklanan yeni kayıt akışına uygun olmalıdır.
Genel Bakış
Geliştirilmiş cihaz kaydı akışı, çeşitli yeni bileşenlerden yararlanarak ve özel cihaz politikası denetleyicilerinin (DPC'ler) uygulanma şeklini değiştirerek cihaz kurulumunu kolaylaştırır. Bu yeni yaklaşım, cihaz hazırlama ve kullanıcı kaydı işlevlerini gerçekleştirmek için özel DPC çözümlerinin Android Management API (AMAPI) SDK ve Android Device Policy ile entegre olmasını gerektirir.
AMAPI SDK, cihazın kendisinde Android Device Policy ile etkileşim kurmak için gerekli API'leri sağlar. Sunucu tarafında, kurumsal mobilite yönetimi (EMM) çözümleri, cihaz kaydı sürecini başlatmak için gereken kayıt jetonlarını oluşturmak üzere Play EMM API'yi kullanır.
Android Device Policy uygulaması artık cihaz tarafındaki işlemlerin yönetilmesinde merkezi bir rol üstleniyor. AMAPI SDK, cihazdaki kurulumunu ve gerekli güncellemeleri yönetmek için kullanılır. Android Device Policy, kullanıcı kimlik doğrulama akışını da devralır, kullanıcı kimlik doğrulamasını doğrudan işler ve kullanıcının kimliğini EMM'ye sağlar. Google, kullanıcıyı herhangi bir nedenle doğrulayamazsa yeni bir Managed Google Play hesabı oluşturulur ve yedek olarak cihaza eklenir.
API Entegrasyonu
Başlamadan önce Play EMM API istemcisinin ve AMAPI SDK'sının en yeni sürümünü kullandığınızı doğrulayın.
Kaydolma uygulama kılavuzu
Bu kılavuzda, kaydı uygulama için gerekli adımlar sağlanmaktadır. Bu kılavuzda ortamı hazırlama, farklı kayıt yöntemlerini kullanma ve cihaz yaşam döngüsünü yönetme konuları ele alınmaktadır.
Ortamı hazırlama
Hesap kurulumunu başlatmadan önce cihaz ortamını hazırlamanız gerekir. Bu hazırlık, Play Store'un en son sürümüne güncellenmesini ve Android Device Policy'nin (com.google.android.apps.work.clouddpc
) cihaza sessizce yüklenmesini içerir. Android Device Policy'nin yüklenmesi, Hesap Kurulumu sürecinin kritik bileşenlerini içerdiğinden zorunludur. EMM'lerin manuel ortam hazırlığı yapmasına gerek yoktur. Bunun yerine, EnvironmentClient
kullanmalı ve sağlanan kod örneklerine uymalıdır.
Örnek kod
DPC, iş hesabını cihaza eklemek için AccountSetup API'sini kullanmadan önce cihaz ortamının hazır olduğunu doğrulamalıdır.
EnvironmentClientFactory
kullanarak birEnvironmentClient
oluşturun veprepareEnvironment
veyaprepareEnvironmentAsync
öğesini çağırınval 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]
Uygulamalar, uygun bir çalışma ortamını doğrulamak için yüklenebileceğinden veya güncellenebileceğinden bu işlem birkaç saniye ya da dakika sürebilir. Google, bu süreci arka planda mümkün olduğunca erken başlatmanızı ve kullanıcı beklerken uygun kullanıcı arayüzünü göstermenizi önerir. İşlem tamamlandığında cihaz, DPC'nin AccountSetup API'yi kullanmasına hazır olur.
Kayıt akışı
EMM'ler, tüm cihazlar için users.generateAuthenticationToken()
ve users.insert()
kullanımını durdurmalıdır. Bunun yerine, EMM'lerin son kullanıcı kimlik doğrulaması yapmak için cihaz içi API'yi çağırması gerekir. Yeni API, userId
ve email
değerlerini DPC'ye döndürür. Google kullanıcının kimliğini doğrulayamazsa cihazda Managed Google Play hesabı oluşturulur ve cihaza eklenir. Bu durumda Google, söz konusu hesabın userId
değerini iade eder.
Google artık kimlik doğrulama API'sine iletilmesi gereken kayıt jetonlarının kullanımını sunuyor. EMM'ler jetonun ne zaman ve nasıl oluşturulacağını belirler.Jeton, mevcut bir kayıt yükünün (ör. QR kodu veya Zero-touch yapılandırması) parçası olabilir.
Ancak Google, değişikliği en aza indirmek için jetonun isteğe bağlı olarak oluşturulmasını ve mevcut Managed Google Play Hesapları API'sinin yeni API ile değiştirilmesini önerir.



İyileştirilmiş özel DPC kaydı iş akışı aşağıdaki adımları içerir:
- Kayıt jetonu oluşturma: EMM, Play EMM API'yi kullanarak kayıt jetonu oluşturur.
- Ortamı Hazırlama: Özel DPC, cihazın kayda hazır olduğunu doğrulamak için Ortamı Hazırlama akışını kullanır.
- Kaydı Başlatma: Özel DPC, kayıt jetonunu ileterek AMAPI SDK'sında
startAccountSetup
API'sini çağırır. Not: Bu API'yi çağırmadan önce DPC'nin cihaz sahibi veya profil sahibi olması gerekir. - Google kimlik doğrulama etkinliğini başlatma: Gerekirse özel DPC, AMAPI SDK'sında
launchAuthenticationActivity
API'sini çağırarakAccountSetupAttempt
değerini iletir. Bu işlem, Google kimlik doğrulama etkinliğini başlatır ve başarılı kimlik doğrulamanın ardından kullanıcıyı özel DPC'ye geri yönlendirir. Kullanıcı bu işlemi atlayabilir. Bu durumda, cihaza Managed Google Play hesabı eklenir. Bu seçenekgoogleAuthenticationOptions
kullanılarak yapılandırılabilir. - Kaydı Tamamlama: AMAPI SDK'sı, özel DPC'yi kayıt sonucu hakkında bilgilendirir.
- Google hizmetlerini etkinleştirme: Yönetilen Google Hesabı'nın bulunduğu bir kullanıcının cihazı kurumsal politikalara uygun olduğunda EMM,
Devices.setState()
işlevini çağırmalıdır. Bu işlem, cihazdaki hesabın Google hizmetlerine erişmesini sağlar. Bu çağrı olmadan Play Store ve diğer Google hizmetleri çalışmaz.
Hesap kurulumu - örnek kod
Arama uygulaması, hesap kurulumu denemesi başlatmak için
AccountSetupClient
kullanabilir vestartAccountSetup()
veyastartAccountSetupFuture()
yöntemini çağırabilir. Örnek uygulama için aşağıdaki kod örneğine bakın:// 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 } ```
AccountSetupListener
arayüzünü uygulayın ve alınan durum güncellemelerinin nasıl işleneceğine dair bir uygulama sağlayın.NotificationReceiverService
öğesini genişletinAccountSetupListener
vegetAccountSetupListener()
öğesini geçersiz kılarak 2. adımda oluşturulan örneği sağlayın.// 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. } } } } ```
Genişletilmiş
NotificationReceiverService
sınıfınıAndroidManifest.xml
'ye ekleyin ve dışa aktarıldığını doğrulayın.<application> <service android:name = ".accountsetup.AccountSetupNotificationReceiver" android:exported = "true" /> </application>
Uygulamanız SDK 30 veya sonraki sürümleri hedefliyorsa ADP ile etkileşimde bulunacağını belirtmek için
AndroidManifest.xml
içinde bir sorgu öğesi gerekir.<queries> <package android:name="com.google.android.apps.work.clouddpc" /> </queries>
Test yönergeleri
Bu bölümde, uygulamanızı test etmeyle ilgili bir dizi yönerge ve en iyi uygulama sunulmaktadır.
Test PrepareEnvironment
Cihazın Mevcut Durumunu Alma: EMM,
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
Cihazda bulunan Android Device Policy sürümünü almak için. Android Cihaz Politikası yüklenmemişse boş bir çıkış beklenir.
PrepareEnvironment'ı entegre edin: Özel DPC, AMAPI SDK'sında
prepareEnvironment
API'sini çağırarak doğru isteği iletir.PrepareEnvironment sonucunu bekleyin: Özel DPC,
prepareEnvironment
işleminin tamamlanmasını bekler.PrepareEnvironment'ın başarılı olduğunu onaylayın: İşlem tamamlandığında EMM tekrar çalışır.
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
Bu kez Android Device Policy sürümü, 1. adımdaki sürümden daha yüksek olmalıdır.
Google Hesabı kimlik doğrulamasını test etme
- Test kuruluşu oluşturma: EMM,
enterprises.generateSignupUrl
ile test EMM'sine bağlı bir test alanı Google kuruluşu oluşturur. - Google kimlik doğrulamasını etkinleştirme: EMM, Google Yönetici Konsolu'nda bu talimatları uygulayarak test kuruluşu için Google kimlik doğrulamasını etkinleştirir.
- Kayıt jetonu oluşturma: EMM, türü userDevice olan Play EMM API'yi kullanarak bir kayıt jetonu oluşturur.
- Kaydı Başlatma: Özel DPC, kayıt jetonunu ileterek AMAPI SDK'sında
startAccountSetup
API'sini çağırır. - Başlatma etkinliği gerekli: AMAPI SDK, kullanıcının kimliğini doğrulamak için bir etkinliğin başlatılması gerektiğini özel DPC'ye bildirir.
- Kullanıcının kimliğini doğrulayın: Özel KYS, etkinliği başlatmak için
launchAuthenticationActivity
'i çağırır. Kullanıcı, yönetilen bir Google Hesabı ile kimliğini doğrular (1. adımda oluşturulan kuruluşun bir parçası). - Kaydı Tamamlama: AMAPI SDK'sı, özel DPC'yi kayıt sonucu hakkında bilgilendirir.
Google kimlik doğrulamasını atlamayı test etme
Daha önce açıklanan kurulumu kullanacağız.
Bu kez, 7. adımda kullanıcı Google Hesabı ile kimlik doğrulamak yerine Atla'ya basar. Kaydolma işlemi başarıyla tamamlanır ve cihazda bir hizmet hesabı bulunur (ör. AuthenticationType
anonimdir).
Kullanıcısız cihazları test etme
İyileştirilmiş özel DPC kaydı akışı, Google kimlik doğrulaması devre dışı bırakıldığında aşağıdaki adımları kullanır:
- Test kuruluşu oluşturun: Bu, daha önce oluşturulan kuruluşla aynı olabilir.
- Kayıt jetonu oluşturma: EMM, userlessDevice türüyle Play EMM API'yi kullanarak bir kayıt jetonu oluşturur.
- Kaydı Başlatma: Özel DPC, kayıt jetonunu ileterek AMAPI SDK'sında
startAccountSetup
API'sini çağırır. - Kaydı Tamamlama: AMAPI SDK'sı, özel DPC'yi kayıt sonucu hakkında bilgilendirir.