Các thiết bị đã được DPC tuỳ chỉnh của bạn quản lý có thể được di chuyển sang Android Device Policy (ADP) và tận dụng Android Management API.
Điều kiện tiên quyết
- Thiết bị đã được EMM của bạn quản lý bằng DPC tuỳ chỉnh.
- DPC tuỳ chỉnh của bạn được tích hợp với AMAPI SDK.
- Thiết bị được đăng ký bằng Google Play EMM API.
- Thiết bị thuộc về một tập hợp Tài khoản Google Play có quản lý.
- Thiết bị chạy Android 9 trở lên.
- Trong trường hợp hồ sơ công việc trên thiết bị thuộc sở hữu của công ty, thiết bị phải chạy Android 11 trở lên.
Tích hợp với AMAPI SDK trong DPC tuỳ chỉnh
Quy trình di chuyển yêu cầu ứng dụng DPC tuỳ chỉnh tích hợp AMAPI SDK. Bạn có thể tìm thêm thông tin về thư viện này và cách thêm thư viện vào ứng dụng trong hướng dẫn tích hợp AMAPI SDK.
Các bước di chuyển thiết bị
- Thiết lập một chính sách dự định được thiết bị sử dụng sau khi di chuyển sang AMAPI. Để mang lại trải nghiệm tốt nhất cho người dùng, chính sách này phải tương đương với chính sách mà DPC của bạn đã thực thi trên thiết bị. Chính sách trong AMAPI phải thuộc về cùng một doanh nghiệp mà thiết bị đã thuộc về trong Play EMM API. Xin lưu ý rằng một doanh nghiệp nhất định có cùng tên trong cả AMAPI và Play EMM API.
- Tạo mã di chuyển cho thiết bị bằng cách gọi
enterprises.migrationTokens.create. - Gửi
valuecủa mã di chuyển này đến DPC tuỳ chỉnh. - Đảm bảo Android Device Policy được cài đặt trên thiết bị bằng cách sử dụng Play EMM API.
- Sử dụng
DpcMigrationClientFactoryđể tạo aDpcMigrationClient - Trên
DpcMigrationClient, hãy gọimigrateDeviceManagementToAndroidManagementApiphương thức. Thao tác này sẽ hoàn tất quá trình di chuyển. deviceStatesẽ thay đổi thànhACTIVEvà bạn sẽ nhận được thông báoSTATUS_REPORTthông qua kênh Pub/Sub.
Sau khi quá trình di chuyển hoàn tất, ứng dụng gọi điện sẽ mất đặc quyền Chủ sở hữu thiết bị hoặc Chủ sở hữu hồ sơ, vì các đặc quyền này được chuyển sang Android Device Policy. Bạn có thể biểu diễn quy trình này bằng sơ đồ trình tự sau:

Lưu ý: Thiết bị phải được kết nối với Internet để bắt đầu di chuyển. Quy trình này được thiết kế để có khả năng phục hồi khi mạng bị ngắt kết nối trong quá trình di chuyển, sao cho các thao tác chính yêu cầu kết nối mạng được thực hiện trước khi quá trình chuyển quyền chủ sở hữu thiết bị hoặc chủ sở hữu hồ sơ thực tế diễn ra từ DPC sang Android Device Policy.
Mã di chuyển
Máy chủ EMM yêu cầu mã di chuyển để báo hiệu ý định di chuyển một thiết bị cụ thể do DPC tuỳ chỉnh quản lý. Bạn có thể sử dụng mã di chuyển cho đến khi quá trình di chuyển hoàn tất thành công hoặc cho đến khi mã hết hạn.
Tích hợp DPC tuỳ chỉnh
Trước tiên, bạn cần tạo DpcMigrationRequest, chuyển
mã thông báo và nếu cần, danh sách các mạng Wi-Fi đã định cấu hình cho trình tạo của mã thông báo:
// Create a DpcMigrationRequest
DpcMigrationRequest request =
DpcMigrationRequest.builder()
.setMigrationToken(token)
.build();
Sau đó, bạn có thể sử dụng để lấy DpcMigrationClient và bắt đầu
quy trình di chuyển bằng
migrateDeviceManagementToAndroidManagementApi:
// Create a DpcMigrationClient
DpcMigrationClient dpcMigrationClient = DpcMigrationClientFactory.create(context);
try {
// Use helper function to retrieve Admin component name
var adminComponentName = getAdminComponent(context);
ListenableFuture<DpcMigrationAttempt> futureAttempt =
dpcMigrationClient.migrateDeviceManagementToAndroidManagementApi(
new ComponentName(context, DpcMigrationNotificationReceiver.class),
adminComponentName,
request);
// handle futureAttempt
} catch (RuntimeException e) {
// send failure feedback: "Error: " + e
}
Thiết lập NotificationReceiverService và theo dõi quá trình di chuyển
Triển khai NotificationReceiverService
trong DPC tuỳ chỉnh.
Quá trình di chuyển được theo dõi trên thiết bị thông qua a
DpcMigrationAttempt.
Bạn có thể trực tiếp sử dụng mã được
migrateDeviceManagementToAndroidManagementApi trả về hoặc sử dụng các phương thức
getMigrationAttempt và
listMigrationAttempts để lấy và liệt kê các lần
di chuyển.
// Passing an empty name, we retrieve the last attempt
var request = GetDpcMigrationAttemptRequest.builder().build();
var attempt = client.getMigrationAttempt(request);
Bạn có thể tuỳ ý thiết lập DpcMigrationListener bằng
NotificationReceiverService để theo dõi
các bản cập nhật trạng thái cho DpcMigrationAttempt.
// DpcMigrationNotificationReceiver for callback handling
public class DpcMigrationNotificationReceiver extends NotificationReceiverService
implements DpcMigrationListener {
@Override
protected DpcMigrationListener getDpcMigrationListener() {
return this;
}
@Override
public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
// send success feedback
}
}
Xử lý mạng Wi-Fi
Nếu có các mạng Wi-Fi do DPC tuỳ chỉnh quản lý, thì chính sách AMAPI ONC phải khớp với cấu hình của các mạng này để AMAPI bắt đầu quản lý các mạng này một cách trơn tru. Tương tác di chuyển DPC với tính năng quản lý Wi-Fi sẽ khác nhau tuỳ thuộc vào chế độ quản lý.
Thiết bị được quản lý hoàn toàn và hồ sơ công việc trên thiết bị thuộc sở hữu của công ty
Trong quá trình di chuyển, Android Device Policy giả định rằng mọi mạng Wi-Fi được định cấu hình trong chính sách có cùng SSID và loại bảo mật của một mạng Wi-Fi đã định cấu hình trên thiết bị đều giống với mạng Wi-Fi đã định cấu hình phù hợp. Do đó, các mạng Wi-Fi do DPC tuỳ chỉnh định cấu hình sẽ không bị ảnh hưởng sau khi di chuyển cho đến khi có sự thay đổi trong chính sách ONC tương ứng với mạng. Tuy nhiên, nếu DPC tuỳ chỉnh bị gỡ cài đặt sau khi di chuyển, thì các mạng Wi-Fi do DPC tuỳ chỉnh định cấu hình sẽ tự động bị xoá. Android Device Policy tiếp tục thực thi chính sách và nếu bất kỳ mạng nào trong số này được định cấu hình trong chính sách, thì các mạng như được định cấu hình trong chính sách sẽ được thêm như bình thường.
Hồ sơ công việc trên thiết bị cá nhân
Vì lý do kỹ thuật, DPC tuỳ chỉnh cần xoá các mạng Wi-Fi do DPC tuỳ chỉnh định cấu hình để Android Device Policy bắt đầu quản lý các mạng Wi-Fi này. AMAPI SDK sẽ xử lý việc này và xoá các mạng Wi-Fi như vậy
trước khi chuyển quyền sở hữu từ DPC tuỳ chỉnh sang Android Device Policy
nhưng yêu cầu DPC tuỳ chỉnh phải chuyển thông tin về các mạng này trong
DpcMigrationRequest. Sau khi di chuyển, các mạng
được định cấu hình trong chính sách sẽ được thêm bình thường, vì vậy, bạn nên định cấu hình các
mạng do DPC tuỳ chỉnh thêm vào trong chính sách.
Bạn cần lưu ý một số điểm sau:
- Nếu mạng đang hoạt động là mạng Wi-Fi do DPC tuỳ chỉnh định cấu hình, thì thiết bị có thể bị ngắt kết nối trong thời gian ngắn trong quá trình di chuyển.
- Chỉ các mạng Wi-Fi do DPC tuỳ chỉnh định cấu hình mới được chuyển trong
DpcMigrationRequest, nếu không, quá trình di chuyển sẽ không thành công nếu AMAPI SDK không thể xoá mạng (ví dụ: mạng Wi-Fi do người dùng thêm). - Chỉ khi DPC tuỳ chỉnh là
chủ sở hữu hồ sơ trên thiết bị thuộc sở hữu cá nhân, thì các mạng Wi-Fi mới được chuyển trong
DpcMigrationRequest, nếu không, quá trình di chuyển sẽ không thành công. - Vì lý do kỹ thuật, Android 12 là một trường hợp ngoại lệ, trong đó các mạng
được chuyển trong
DpcMigrationRequestsẽ bị bỏ qua và tất cả các mạng Wi-Fi do DPC tuỳ chỉnh định cấu hình sẽ tự động bị xoá. Ngoài ra, DPC tuỳ chỉnh phải cóACCESS_WIFI_STATEquyền trên Android 12 đối với hồ sơ công việc trên thiết bị thuộc sở hữu cá nhân, nếu không, quá trình di chuyển sẽ không thành công.
Chú ý
Sau đây là một số điểm cần lưu ý liên quan đến tính năng này.
Mã nhận dạng dành riêng cho doanh nghiệp
Đối với hồ sơ công việc trên Android 12 trở lên, mã nhận dạng dành riêng cho doanh nghiệp,
có thể truy cập từ DevicePolicyManager.getEnrollmentSpecificId
không thay đổi tại thời điểm di chuyển. Tuy nhiên, nếu một hồ sơ công việc do Android Device Policy quản lý được tạo lại trên thiết bị (ví dụ: sau khi xoá hồ sơ trước đó hoặc sau khi khôi phục cài đặt gốc cho thiết bị), thì mã nhận dạng dành riêng cho doanh nghiệp sẽ thay đổi tại thời điểm đó.
Hồ sơ công việc trên các thiết bị được quản lý hoàn toàn
Tính năng này không được hỗ trợ trên các thiết bị được quản lý hoàn toàn có hồ sơ công việc chạy Android 9 hoặc 10. Bạn không được cố gắng di chuyển các thiết bị này và bất kể có lỗi nào xảy ra hay không, các thiết bị như vậy đều không được hỗ trợ cho việc di chuyển DPC.
Lệnh RESET_PASSWORD
Nếu thiết bị có mật khẩu màn hình khoá, thì lệnh RESET_PASSWORD command
sẽ chỉ thành công sau khi người dùng xác nhận thông tin đăng nhập của họ
(ví dụ: nhập lại mã PIN) sau khi di chuyển. Nếu thiết bị không có mật khẩu màn hình khoá, thì bạn có thể sử dụng lệnh RESET_PASSWORD ngay sau khi di chuyển.