Kullanıcı hesaplarını uygulama

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 bir EnvironmentClient oluşturun ve prepareEnvironment veya prepareEnvironmentAsync öğesini çağırın

    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]
    
    

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.

Önceki API'lerle tipik DPC entegrasyonu
Şekil 1. Önceki API'lerle tipik DPC entegrasyonu
Kullanıcısız cihazlar için yeni API'lerle örnek DPC entegrasyonu
Şekil 2. Kullanıcısız cihazlar için yeni API'lerle örnek DPC entegrasyonu
Kullanıcı cihazları için yeni API'lerle örnek DPC entegrasyonu
3. Şekil. Kullanıcı cihazları için yeni API'lerle örnek DPC entegrasyonu

İyileştirilmiş özel DPC kaydı iş akışı aşağıdaki adımları içerir:

  1. Kayıt jetonu oluşturma: EMM, Play EMM API'yi kullanarak kayıt jetonu oluşturur.
  2. Ortamı Hazırlama: Özel DPC, cihazın kayda hazır olduğunu doğrulamak için Ortamı Hazırlama akışını kullanır.
  3. 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.
  4. Google kimlik doğrulama etkinliğini başlatma: Gerekirse özel DPC, AMAPI SDK'sında launchAuthenticationActivity API'sini çağırarak AccountSetupAttempt 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çenek googleAuthenticationOptions kullanılarak yapılandırılabilir.
  5. Kaydı Tamamlama: AMAPI SDK'sı, özel DPC'yi kayıt sonucu hakkında bilgilendirir.
  6. 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

  1. Arama uygulaması, hesap kurulumu denemesi başlatmak için AccountSetupClient kullanabilir ve startAccountSetup() veya startAccountSetupFuture() 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
    }
      ```
    
  2. AccountSetupListener arayüzünü uygulayın ve alınan durum güncellemelerinin nasıl işleneceğine dair bir uygulama sağlayın.

  3. NotificationReceiverService öğesini genişletin AccountSetupListener ve getAccountSetupListener() öğ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.
                }
            }
        }
    }
    
      ```
    
  4. 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

  1. 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.

  2. PrepareEnvironment'ı entegre edin: Özel DPC, AMAPI SDK'sında prepareEnvironment API'sini çağırarak doğru isteği iletir.

  3. PrepareEnvironment sonucunu bekleyin: Özel DPC, prepareEnvironment işleminin tamamlanmasını bekler.

  4. 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

  1. Test kuruluşu oluşturma: EMM, enterprises.generateSignupUrl ile test EMM'sine bağlı bir test alanı Google kuruluşu oluşturur.
  2. 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.
  3. Kayıt jetonu oluşturma: EMM, türü userDevice olan Play EMM API'yi kullanarak bir kayıt jetonu oluşturur.
  4. Kaydı Başlatma: Özel DPC, kayıt jetonunu ileterek AMAPI SDK'sında startAccountSetup API'sini çağırır.
  5. 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.
  6. 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ı).
  7. 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:

  1. Test kuruluşu oluşturun: Bu, daha önce oluşturulan kuruluşla aynı olabilir.
  2. Kayıt jetonu oluşturma: EMM, userlessDevice türüyle Play EMM API'yi kullanarak bir kayıt jetonu oluşturur.
  3. Kaydı Başlatma: Özel DPC, kayıt jetonunu ileterek AMAPI SDK'sında startAccountSetup API'sini çağırır.
  4. Kaydı Tamamlama: AMAPI SDK'sı, özel DPC'yi kayıt sonucu hakkında bilgilendirir.