ติดตั้งใช้งานบัญชีผู้ใช้

การลงทะเบียน Android Enterprise มีข้อมูลประจำตัวผู้ใช้ 2 ประเภทหลักๆ ดังนี้ บัญชี Managed Google Play และบัญชี Google ที่มีการจัดการ บัญชี Google Play ที่มีการจัดการ จะเน้นที่อุปกรณ์เป็นหลัก ซึ่งหมายความว่าบัญชีเหล่านี้ไม่ได้เชื่อมโยงกับข้อมูลประจำตัว ใน Google ของผู้ใช้ที่เฉพาะเจาะจง ในทางตรงกันข้าม บัญชี Google ที่มีการจัดการจะลิงก์กับข้อมูลประจำตัว Google ของบริษัทของผู้ใช้ ซึ่งจะช่วยปรับปรุงประสบการณ์ของผู้ใช้ด้วยการให้ผู้ใช้ ยังคงลงชื่อเข้าใช้อยู่ในอุปกรณ์

บัญชี Managed Google Play เคยเป็นบัญชีมาตรฐาน อย่างไรก็ตาม ปัจจุบัน Google ขอแนะนำให้นักพัฒนาซอฟต์แวร์รายใหม่ทั้งหมดใช้ขั้นตอนการลงทะเบียนที่ปรับปรุงแล้ว ซึ่ง ค่าเริ่มต้นคือการสร้างบัญชี Google ที่มีการจัดการ

แม้ว่าเราจะให้คำแนะนำสำหรับการติดตั้งใช้งานเวอร์ชันเก่าที่ส่วนท้ายของเอกสารนี้เพื่อเป็นบริบท แต่การพัฒนาใหม่ทั้งหมดควรเป็นไปตามขั้นตอนการลงทะเบียนใหม่ที่อธิบายไว้ที่นี่

ภาพรวม

ขั้นตอนการลงทะเบียนอุปกรณ์ที่ได้รับการปรับปรุงจะช่วยให้การตั้งค่าอุปกรณ์มีประสิทธิภาพมากขึ้นด้วยการใช้ประโยชน์จาก คอมโพเนนต์ใหม่หลายรายการและเปลี่ยนวิธีติดตั้งใช้งานเครื่องมือควบคุมนโยบายด้านอุปกรณ์ (DPC) แบบกำหนดเอง แนวทางใหม่นี้กำหนดให้โซลูชัน DPC ที่กำหนดเองต้องผสานรวม กับ SDK ของ Android Management API (AMAPI) และ Android Device Policy เพื่อดำเนินการ ฟังก์ชันการเตรียมอุปกรณ์และการลงทะเบียนผู้ใช้

AMAPI SDK มี API ที่จำเป็นสำหรับการโต้ตอบกับนโยบายอุปกรณ์ Android ในอุปกรณ์นั้นๆ ในฝั่งเซิร์ฟเวอร์ โซลูชัน Enterprise Mobility Management (EMM) จะใช้ Play EMM API เพื่อสร้างโทเค็นการลงทะเบียน ที่จำเป็นในการเริ่มกระบวนการลงทะเบียนอุปกรณ์

ตอนนี้แอปพลิเคชัน Android Device Policy มีบทบาทสำคัญในการจัดการ การดำเนินการฝั่งอุปกรณ์ AMAPI SDK ใช้เพื่อจัดการการติดตั้ง และการอัปเดตที่จำเป็นในอุปกรณ์ Android Device Policy ยัง จะรับช่วงโฟลว์การตรวจสอบสิทธิ์ของผู้ใช้ จัดการการตรวจสอบสิทธิ์ของผู้ใช้โดยตรง และระบุตัวตนของผู้ใช้ให้กับ EMM ด้วย หาก Google ไม่สามารถตรวจสอบสิทธิ์ผู้ใช้ได้ไม่ว่าด้วยเหตุผลใดก็ตาม ระบบจะสร้างบัญชี Managed Google Play ใหม่และเพิ่มลงในอุปกรณ์เป็นตัวเลือกสำรอง

การผสานรวม API

ก่อนเริ่มต้นใช้งาน ให้ตรวจสอบว่าคุณใช้ไคลเอ็นต์ Play EMM API และ AMAPI SDK เวอร์ชันล่าสุด

คู่มือการติดตั้งใช้งานการลงทะเบียน

คู่มือนี้จะแสดงขั้นตอนที่จำเป็นสำหรับการลงทะเบียน โดยจะครอบคลุมถึง การเตรียมสภาพแวดล้อม การจัดการวิธีการลงทะเบียนต่างๆ และการจัดการ วงจรการใช้งานของอุปกรณ์

เตรียมสภาพแวดล้อม

ก่อนเริ่มการตั้งค่าบัญชี คุณต้องเตรียมสภาพแวดล้อมของอุปกรณ์ การเตรียมการนี้เกี่ยวข้องกับการอัปเดต Play Store เป็นเวอร์ชันล่าสุด และติดตั้ง Android Device Policy (com.google.android.apps.work.clouddpc) ลงในอุปกรณ์โดยอัตโนมัติ การติดตั้ง Android Device Policy เป็นสิ่งจำเป็นเนื่องจากมีองค์ประกอบสำคัญของกระบวนการตั้งค่าบัญชี EMM ไม่จำเป็นต้องเตรียมสภาพแวดล้อมด้วยตนเอง แต่ควรใช้ EnvironmentClient ตามที่ระบุไว้ใน และปฏิบัติตามตัวอย่างโค้ดที่ให้ไว้

โค้ดตัวอย่าง

ก่อนที่จะใช้ AccountSetup API เพื่อเพิ่มบัญชีงานในอุปกรณ์ได้ DPC ต้องยืนยันก่อนว่า สภาพแวดล้อมของอุปกรณ์พร้อมแล้ว

  • ใช้ EnvironmentClientFactory เพื่อสร้างอินสแตนซ์ของ EnvironmentClient และเรียกใช้ prepareEnvironment หรือ prepareEnvironmentAsync

    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]
    
    

การดำเนินการนี้อาจใช้เวลาหลายวินาทีหรือหลายนาที เนื่องจากระบบอาจติดตั้งหรืออัปเดตแอปพลิเคชันเพื่อยืนยันสภาพแวดล้อมการทำงานที่เหมาะสม Google ขอแนะนำให้ เริ่มกระบวนการนี้โดยเร็วที่สุดในเบื้องหลังและแสดง UI ที่เหมาะสมขณะที่ผู้ใช้รอ เมื่อการดำเนินการเสร็จสมบูรณ์ อุปกรณ์จะพร้อมให้ DPC ใช้ AccountSetup API

ขั้นตอนการลงทะเบียน

EMM ต้องหยุดใช้ users.generateAuthenticationToken() และ users.insert() สำหรับอุปกรณ์ทั้งหมด แต่ EMM ต้องเรียกใช้ API ในอุปกรณ์ เพื่อทำการตรวจสอบสิทธิ์ผู้ใช้ปลายทาง API ใหม่จะแสดง userId และ email ให้กับ DPC หาก Google ไม่สามารถตรวจสอบสิทธิ์ผู้ใช้ได้ ระบบจะสร้างบัญชี Managed Google Play และเพิ่มลงในอุปกรณ์ ในกรณีนี้ Google จะคืน userId ของบัญชีนั้น

ตอนนี้ Google ขอแนะนำให้ใช้โทเค็นการลงทะเบียน ซึ่งต้องส่งไปยัง API การตรวจสอบสิทธิ์ EMM จะเป็นผู้กำหนดเวลาและวิธีการสร้างโทเค็น และโทเค็นนี้อาจเป็นส่วนหนึ่งของเพย์โหลดการลงทะเบียนที่มีอยู่ (เช่น คิวอาร์โค้ดหรือการกำหนดค่าแบบ Zero-Touch)

อย่างไรก็ตาม Google ขอแนะนำให้สร้างโทเค็นตามต้องการและแทนที่ API ที่มีอยู่สำหรับบัญชี Google Play ที่มีการจัดการด้วย API ใหม่เพื่อลดการเปลี่ยนแปลง

การผสานรวม DPC ทั่วไปกับ API ก่อนหน้า
รูปที่ 1 การผสานรวม DPC ทั่วไปกับ API ก่อนหน้า
ตัวอย่างการผสานรวม DPC กับ API ใหม่สำหรับอุปกรณ์ที่ไม่มีผู้ใช้
รูปที่ 2 ตัวอย่างการผสานรวม DPC กับ API ใหม่สำหรับอุปกรณ์ที่ไม่มีผู้ใช้
ตัวอย่างการผสานรวม DPC กับ API ใหม่สำหรับอุปกรณ์ของผู้ใช้
รูปที่ 3 ตัวอย่างการผสานรวม DPC กับ API ใหม่สำหรับอุปกรณ์ของผู้ใช้

ขั้นตอนการลงทะเบียน DPC ที่กำหนดเองที่ได้รับการปรับปรุงมีดังนี้

  1. สร้างโทเค็นการลงทะเบียน: EMM สร้างโทเค็นการลงทะเบียนโดยใช้ Play EMM API
  2. เตรียมสภาพแวดล้อม: DPC ที่กำหนดเองใช้โฟลว์การเตรียมสภาพแวดล้อม เพื่อยืนยันว่าอุปกรณ์พร้อมสำหรับการลงทะเบียน
  3. เริ่มการลงทะเบียน: DPC ที่กำหนดเองจะเรียกใช้ startAccountSetup API ใน AMAPI SDK โดยส่งโทเค็นการลงทะเบียน หมายเหตุ: DPC ต้องเป็นเจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ก่อนเรียกใช้ API นี้
  4. เปิดใช้กิจกรรมการตรวจสอบสิทธิ์ของ Google: หากจำเป็น DPC ที่กำหนดเองจะเรียกใช้ launchAuthenticationActivity API ใน AMAPI SDK โดยส่งAccountSetupAttempt ซึ่งจะเริ่ม กิจกรรมการตรวจสอบสิทธิ์ของ Google และนำผู้ใช้กลับไปยัง DPC ที่กำหนดเองเมื่อ การตรวจสอบสิทธิ์สำเร็จ นอกจากนี้ ผู้ใช้ยังข้ามกระบวนการนี้ได้ด้วย ในกรณีนี้ ระบบจะเพิ่มบัญชี Managed Google Play ลงในอุปกรณ์ ตัวเลือกนี้ กำหนดค่าได้โดยใช้ googleAuthenticationOptions
  5. ลงทะเบียนให้เสร็จสมบูรณ์: AMAPI SDK จะแจ้งผลการลงทะเบียนให้ DPC ที่กำหนดเองทราบ
  6. เปิดใช้บริการของ Google: เมื่ออุปกรณ์ของผู้ใช้ที่มี บัญชี Google ที่มีการจัดการเป็นไปตามนโยบายขององค์กรแล้ว EMM ต้อง เรียกใช้ Devices.setState() การดำเนินการนี้จะเปิดใช้สิทธิ์เข้าถึงบริการของ Google สำหรับบัญชีในอุปกรณ์ หากไม่มีการเรียกนี้ Play Store และบริการอื่นๆ ของ Google จะทำงานไม่ได้

การตั้งค่าบัญชี - ตัวอย่างโค้ด

  1. หากต้องการเริ่มการพยายามตั้งค่าบัญชี แอปการโทรสามารถใช้ AccountSetupClient และเรียกใช้เมธอด startAccountSetup() หรือ startAccountSetupFuture() ดูตัวอย่างการติดตั้งใช้งานได้ที่ตัวอย่างโค้ดต่อไปนี้

    // 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 อินเทอร์เฟซและระบุวิธีจัดการการอัปเดตสถานะที่ได้รับ

  3. ขยาย NotificationReceiverService และระบุอินสแตนซ์ AccountSetupListener ที่สร้างในขั้นตอนที่ 2 โดยการลบล้าง getAccountSetupListener()

    // 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. เพิ่มคลาสที่ขยาย NotificationReceiverService ลงใน AndroidManifest.xml แล้วตรวจสอบว่าได้ส่งออกแล้ว

      <application>
        <service
            android:name = ".accountsetup.AccountSetupNotificationReceiver"
            android:exported = "true" />
      </application>
    

    หากแอปกำหนดเป้าหมายเป็น SDK 30 ขึ้นไป คุณจะต้องมีองค์ประกอบ queries ใน AndroidManifest.xml เพื่อระบุว่าแอปจะโต้ตอบกับ ADP

      <queries>
        <package android:name="com.google.android.apps.work.clouddpc" />
      </queries>
    

คำแนะนำในการทดสอบ

ส่วนนี้มีชุดหลักเกณฑ์และแนวทางปฏิบัติแนะนำสำหรับการทดสอบการติดตั้งใช้งาน

ทดสอบ PrepareEnvironment

  1. รับสถานะปัจจุบันของอุปกรณ์: EMM จะเรียกใช้

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    เพื่อรับเวอร์ชันของ Android Device Policy ที่มีอยู่ในอุปกรณ์ หากไม่ได้ติดตั้ง นโยบายอุปกรณ์ Android คุณจะเห็นเอาต์พุตที่ว่างเปล่า

  2. ผสานรวม PrepareEnvironment: DPC ที่กำหนดเองจะเรียกใช้ prepareEnvironment API ใน AMAPI SDK โดยส่งคำขอที่ถูกต้อง

  3. รอผลลัพธ์ PrepareEnvironment: DPC ที่กำหนดเองจะรอให้ prepareEnvironment เสร็จสมบูรณ์

  4. ยืนยันว่า PrepareEnvironment สำเร็จ: เมื่อเสร็จสิ้น EMM จะทำงานอีกครั้ง

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    คราวนี้เวอร์ชันนโยบายอุปกรณ์ Android ควรสูงกว่าในขั้นตอนที่ 1

ทดสอบการตรวจสอบสิทธิ์บัญชี Google

  1. สร้างองค์กรทดสอบ: EMM สร้างโดเมนทดสอบขององค์กร Google ที่ลิงก์กับ EMM ทดสอบ โดยมี enterprises.generateSignupUrl
  2. เปิดใช้การตรวจสอบสิทธิ์ของ Google: EMM เปิดใช้การตรวจสอบสิทธิ์ของ Google สำหรับ องค์กรทดสอบโดยทำตามวิธีการเหล่านี้ ในคอนโซลผู้ดูแลระบบของ Google
  3. สร้างโทเค็นการลงทะเบียน: EMM สร้างโทเค็นการลงทะเบียนโดยใช้ Play EMM API ที่มีประเภท userDevice
  4. เริ่มการลงทะเบียน: DPC ที่กำหนดเองจะเรียกใช้ startAccountSetup API ใน AMAPI SDK โดยส่งโทเค็นการลงทะเบียน
  5. ต้องเปิดใช้กิจกรรม: AMAPI SDK จะแจ้ง DPC ที่กำหนดเองว่าต้องเปิดใช้กิจกรรมเพื่อตรวจสอบสิทธิ์ผู้ใช้
  6. ตรวจสอบสิทธิ์ผู้ใช้: DPC ที่กำหนดเองเรียกใช้ launchAuthenticationActivity เพื่อเริ่มกิจกรรม ผู้ใช้จะตรวจสอบสิทธิ์ด้วยบัญชี Google ที่มีการจัดการ (ส่วนหนึ่งขององค์กรที่สร้างในขั้นตอนที่ 1)
  7. ลงทะเบียนให้เสร็จสมบูรณ์: AMAPI SDK จะแจ้งผลการลงทะเบียนให้ DPC ที่กำหนดเองทราบ

ทดสอบการข้ามการตรวจสอบสิทธิ์ด้วย Google

เราจะใช้การตั้งค่าที่อธิบายไว้ก่อนหน้านี้

คราวนี้ในขั้นตอนที่ 7 ผู้ใช้จะกดข้ามแทนการตรวจสอบสิทธิ์ด้วย บัญชี Google การลงทะเบียนเสร็จสมบูรณ์โดยมีบัญชีบริการ ในอุปกรณ์ (เช่น AuthenticationType เป็นแบบไม่ระบุตัวตน)

ทดสอบอุปกรณ์ที่ไม่มีผู้ใช้

ขั้นตอนการลงทะเบียน DPC ที่กำหนดเองที่ปรับปรุงแล้วจะใช้ขั้นตอนต่อไปนี้เมื่อปิดใช้การตรวจสอบสิทธิ์ของ Google

  1. สร้างองค์กรทดสอบ: องค์กรนี้อาจเป็นองค์กรเดียวกับที่สร้าง ไว้ก่อนหน้านี้
  2. สร้างโทเค็นการลงทะเบียน: EMM สร้างโทเค็นการลงทะเบียนโดยใช้ Play EMM API ที่มีประเภท userlessDevice
  3. เริ่มการลงทะเบียน: DPC ที่กำหนดเองจะเรียกใช้ startAccountSetup API ใน AMAPI SDK โดยส่งโทเค็นการลงทะเบียน
  4. ลงทะเบียนให้เสร็จสมบูรณ์: AMAPI SDK จะแจ้งผลการลงทะเบียนให้ DPC ที่กำหนดเองทราบ