Có hai loại danh tính người dùng chính cho việc đăng ký Android Enterprise: Tài khoản Google Play có quản lý và Tài khoản Google có quản lý. Tài khoản Managed Google Play tập trung vào thiết bị, tức là không liên kết với danh tính Google của một người dùng cụ thể. Ngược lại, Tài khoản Google do quản lý được liên kết với danh tính Google của người dùng trong doanh nghiệp, giúp cải thiện trải nghiệm người dùng bằng cách duy trì trạng thái đăng nhập của họ trên thiết bị.
Tài khoản Google Play có quản lý từng là tiêu chuẩn. Tuy nhiên, hiện tại Google khuyến khích tất cả các hoạt động phát triển mới sử dụng quy trình đăng ký được cải tiến. Quy trình này mặc định tạo Tài khoản Google được quản lý.
Mặc dù hướng dẫn về việc triển khai cũ được cung cấp ở cuối tài liệu này để làm ngữ cảnh, nhưng mọi hoạt động phát triển mới đều phải tuân theo quy trình đăng ký mới được trình bày chi tiết tại đây.
Tổng quan
Quy trình đăng ký thiết bị được cải tiến giúp đơn giản hoá việc thiết lập thiết bị bằng cách tận dụng một số thành phần mới và thay đổi cách triển khai Trình điều khiển chính sách thiết bị (DPC) tuỳ chỉnh. Phương pháp mới này yêu cầu các giải pháp DPC tuỳ chỉnh tích hợp với Android Management API (AMAPI) SDK và Android Device Policy để thực hiện các chức năng chuẩn bị thiết bị và đăng ký người dùng.
SDK AMAPI cung cấp các API cần thiết để tương tác với Chính sách thiết bị Android trên chính thiết bị. Về phía máy chủ, các giải pháp Quản lý thiết bị di động doanh nghiệp (EMM) sẽ sử dụng Play EMM API để tạo mã thông báo đăng ký cần thiết để bắt đầu quy trình đăng ký thiết bị.
Ứng dụng Android Device Policy hiện đóng vai trò trung tâm trong việc xử lý các hoạt động phía thiết bị. AMAPI SDK được dùng để quản lý quá trình cài đặt và các bản cập nhật cần thiết trên thiết bị. Android Device Policy cũng tiếp quản quy trình xác thực người dùng, xử lý trực tiếp việc xác thực người dùng và cung cấp danh tính của người dùng cho EMM. Nếu Google không thể xác thực người dùng vì bất kỳ lý do nào, thì một tài khoản Managed Google Play mới sẽ được tạo và thêm vào thiết bị làm phương án dự phòng.
Tích hợp API
Trước khi bắt đầu, hãy xác minh rằng bạn đang sử dụng phiên bản mới nhất của ứng dụng Play EMM API và AMAPI SDK.
Hướng dẫn triển khai quy trình đăng ký
Hướng dẫn này cung cấp các bước cần thiết để triển khai quy trình đăng ký. Nội dung này đề cập đến việc chuẩn bị môi trường, xử lý các phương thức đăng ký khác nhau và quản lý vòng đời của thiết bị.
Chuẩn bị môi trường
Trước khi bắt đầu thiết lập tài khoản, bạn cần chuẩn bị môi trường thiết bị. Quá trình chuẩn bị này bao gồm việc cập nhật Cửa hàng Play lên phiên bản mới nhất và cài đặt lặng lẽ Chính sách thiết bị Android (com.google.android.apps.work.clouddpc
) vào thiết bị. Bạn cần phải cài đặt Android Device Policy vì ứng dụng này chứa các thành phần quan trọng của quy trình Thiết lập tài khoản. EMM không cần chuẩn bị môi trường theo cách thủ công. Thay vào đó, họ nên sử dụng EnvironmentClient
, như được ghi lại tại và tuân thủ các ví dụ về mã được cung cấp.
Mã mẫu
Trước khi có thể sử dụng API AccountSetup để thêm tài khoản công việc vào thiết bị, trước tiên, DPC phải xác minh rằng môi trường thiết bị đã sẵn sàng.
Dùng
EnvironmentClientFactory
để khởi tạo mộtEnvironmentClient
và gọiprepareEnvironment
hoặcprepareEnvironmentAsync
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]
Thao tác này có thể mất vài giây hoặc vài phút, vì các ứng dụng có thể được cài đặt hoặc cập nhật để xác minh môi trường hoạt động phù hợp. Google đề xuất bắt đầu quy trình này càng sớm càng tốt ở chế độ nền và cho thấy giao diện người dùng phù hợp trong khi người dùng chờ đợi. Khi thao tác hoàn tất, thiết bị sẽ sẵn sàng để DPC sử dụng AccountSetup API.
Quy trình đăng ký
EMM phải ngừng sử dụng users.generateAuthenticationToken()
và users.insert()
cho tất cả các thiết bị. Thay vào đó, EMM phải gọi API trên thiết bị để thực hiện quy trình xác thực người dùng cuối. API mới sẽ trả về userId
và email
cho DPC. Nếu Google không thể xác thực người dùng, thì một Tài khoản Google do quản lý sẽ được tạo và thêm vào thiết bị. Trong trường hợp này, Google sẽ trả về userId
của tài khoản đó.
Giờ đây, Google giới thiệu việc sử dụng mã thông báo đăng ký. Bạn phải truyền mã thông báo này đến API xác thực. EMM xác định thời điểm và cách tạo mã thông báo, đồng thời mã thông báo này có thể là một phần của tải trọng đăng ký hiện có (ví dụ: mã QR hoặc cấu hình Zero-touch).
Tuy nhiên, Google đề xuất tạo mã thông báo theo yêu cầu và thay thế API hiện có cho Tài khoản Google Play được quản lý bằng API mới để giảm thiểu thay đổi.



Quy trình đăng ký DPC tuỳ chỉnh được cải tiến bao gồm các bước sau:
- Tạo mã thông báo đăng ký: EMM tạo mã thông báo đăng ký bằng Play EMM API.
- Chuẩn bị môi trường: DPC tuỳ chỉnh sử dụng quy trình Chuẩn bị môi trường để xác minh rằng thiết bị đã sẵn sàng cho quá trình đăng ký.
- Bắt đầu đăng ký: DPC tuỳ chỉnh gọi API
startAccountSetup
trong AMAPI SDK, truyền mã thông báo đăng ký. Lưu ý: DPC phải là chủ sở hữu thiết bị hoặc chủ sở hữu hồ sơ trước khi gọi API này. - Khởi chạy hoạt động xác thực của Google: Nếu cần, DPC tuỳ chỉnh sẽ gọi API
launchAuthenticationActivity
trong SDK AMAPI, truyềnAccountSetupAttempt
. Thao tác này sẽ bắt đầu một hoạt động xác thực của Google, đưa người dùng trở lại DPC tuỳ chỉnh sau khi xác thực thành công. Người dùng cũng có thể bỏ qua quy trình này. Trong trường hợp này, một tài khoản Managed Google Play sẽ được thêm vào thiết bị. Bạn có thể định cấu hình lựa chọn này bằnggoogleAuthenticationOptions
. - Hoàn tất quy trình đăng ký: AMAPI SDK sẽ thông báo cho DPC tuỳ chỉnh về kết quả đăng ký.
- Bật các dịch vụ của Google: Sau khi thiết bị của người dùng có Tài khoản Google do quản lý tuân thủ các chính sách của doanh nghiệp, EMM phải gọi
Devices.setState()
. Thao tác này cho phép tài khoản trên thiết bị truy cập vào các dịch vụ của Google. Nếu không có lệnh gọi này, Cửa hàng Play và các dịch vụ khác của Google sẽ không hoạt động.
Thiết lập tài khoản – mã mẫu
Để bắt đầu quá trình thiết lập tài khoản, ứng dụng gọi có thể sử dụng
AccountSetupClient
và gọi phương thứcstartAccountSetup()
hoặcstartAccountSetupFuture()
. Để xem ví dụ về cách triển khai, hãy xem đoạn mã mẫu sau:// 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 } ```
Triển khai giao diện
AccountSetupListener
và cung cấp một cách triển khai để xử lý các thông tin cập nhật trạng thái đã nhận.Mở rộng
NotificationReceiverService
và cung cấp thực thểAccountSetupListener
được tạo ở bước 2 bằng cách ghi đè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. } } } } ```
Thêm lớp
NotificationReceiverService
mở rộng vàoAndroidManifest.xml
và xác minh rằng lớp đó đã được xuất.<application> <service android:name = ".accountsetup.AccountSetupNotificationReceiver" android:exported = "true" /> </application>
Nếu ứng dụng của bạn nhắm đến SDK 30 trở lên, thì bạn cần có một phần tử truy vấn trong
AndroidManifest.xml
để chỉ định rằng ứng dụng sẽ tương tác với ADP.<queries> <package android:name="com.google.android.apps.work.clouddpc" /> </queries>
Hướng dẫn kiểm thử
Phần này cung cấp một bộ nguyên tắc và các phương pháp hay nhất để kiểm thử việc triển khai của bạn.
Kiểm tra PrepareEnvironment
Lấy trạng thái hiện tại của thiết bị: EMM chạy
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
để lấy phiên bản Android Device Policy có trên thiết bị. Nếu bạn chưa cài đặt Chính sách thiết bị Android, thì hệ thống sẽ trả về một đầu ra trống.
Tích hợp PrepareEnvironment: DPC tuỳ chỉnh sẽ gọi API
prepareEnvironment
trong AMAPI SDK, truyền yêu cầu chính xác.Await PrepareEnvironment result: DPC tuỳ chỉnh đợi
prepareEnvironment
hoàn tất.Xác nhận thành công PrepareEnvironment: Khi hoàn tất, EMM sẽ chạy lại
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
Lần này, phiên bản Chính sách thiết bị Android phải cao hơn phiên bản ở bước 1.
Kiểm thử quy trình xác thực Tài khoản Google
- Tạo doanh nghiệp thử nghiệm: EMM tạo một miền thử nghiệm cho doanh nghiệp trên Google được liên kết với một EMM thử nghiệm, có
enterprises.generateSignupUrl
. - Bật tính năng xác thực bằng Google: EMM cho phép xác thực bằng Google cho doanh nghiệp kiểm thử theo các hướng dẫn này trong Bảng điều khiển dành cho quản trị viên của Google.
- Tạo mã thông báo đăng ký: EMM tạo mã thông báo đăng ký bằng Play EMM API có loại userDevice.
- Bắt đầu đăng ký: DPC tuỳ chỉnh gọi API
startAccountSetup
trong AMAPI SDK, truyền mã thông báo đăng ký. - Cần có hoạt động khởi chạy: SDK AMAPI thông báo cho DPC tuỳ chỉnh rằng một hoạt động phải được khởi chạy để xác thực người dùng.
- Xác thực người dùng: DPC tuỳ chỉnh sẽ gọi
launchAuthenticationActivity
để bắt đầu hoạt động. Người dùng xác thực bằng Tài khoản Google được quản lý (thuộc doanh nghiệp được tạo ở bước 1). - Hoàn tất quy trình đăng ký: AMAPI SDK sẽ thông báo cho DPC tuỳ chỉnh về kết quả đăng ký.
Thử bỏ qua bước xác thực bằng Google
Chúng ta sẽ sử dụng chế độ thiết lập như mô tả trước đó.
Lần này, ở bước 7, người dùng nhấn vào Bỏ qua thay vì xác thực bằng Tài khoản Google của họ. Quá trình đăng ký hoàn tất thành công, với một tài khoản dịch vụ trên thiết bị (tức là AuthenticationType
là Anonymous).
Kiểm thử các thiết bị không có người dùng
Quy trình đăng ký DPC tuỳ chỉnh được cải tiến sẽ sử dụng các bước sau khi tắt tính năng xác thực của Google:
- Tạo một doanh nghiệp kiểm thử: Đây có thể là doanh nghiệp giống như doanh nghiệp bạn đã tạo trước đó.
- Tạo mã thông báo đăng ký: EMM tạo một enrollmenttoken bằng Play EMM API có loại userlessDevice.
- Bắt đầu đăng ký: DPC tuỳ chỉnh gọi API
startAccountSetup
trong AMAPI SDK, truyền mã thông báo đăng ký. - Hoàn tất quy trình đăng ký: AMAPI SDK sẽ thông báo cho DPC tuỳ chỉnh về kết quả đăng ký.