由自訂 DPC 管理的裝置可以遷移至 Android Device Policy,並利用 Android Management API。
注意:對使用者來說,這項程序是透明的。這是單向程序 (一旦完成即無法復原),而且無法用於在 EMM 間遷移裝置。
必備條件
- 該裝置已由您的 EMM 採用自訂的 DPC 管理。
- 您的自訂 DPC 已與 AMAPI SDK 整合。
- 裝置已註冊 Google Play EMM API。
- 裝置屬於 Google Play 管理版帳戶企業所有。
- 裝置搭載 Android 9 以上版本。
- 如果公司擁有的裝置設有工作資料夾,則裝置必須搭載 Android 11 以上版本。
在自訂 DPC 中整合 AMAPI SDK
遷移程序需要透過自訂 DPC 應用程式整合 AAMAPI SDK。如要進一步瞭解這個程式庫,以及如何將其新增至應用程式,請參閱 AMAPI SDK 整合指南。
注意:這項程序需要使用 1.1.4 以上版本的 AMAPI SDK 程式庫。
裝置遷移步驟
- 設定要在裝置遷移至 AMAPI 後採用的政策。為獲得最佳使用者體驗,這應等同於 DPC 已在裝置上執行的政策。
- 呼叫
enterprises.migrationTokens.create
,為裝置建立遷移權杖。 - 將這個遷移權杖的
value
傳送至您的自訂 DPC。 - 使用 Play EMM API,確認已在裝置上安裝 Android Device Policy。
- 使用
DpcMigrationClientFactory
建立DpcMigrationClient
- 在
DpcMigrationClient
上呼叫migrateDeviceManagementToAndroidManagementApi
方法。即可完成遷移作業。 deviceState
會變更為ACTIVE
,而您會透過 Pub/Sub 管道收到STATUS_REPORT
訊息。
遷移完成後,呼叫應用程式就會失去裝置擁有者或設定檔擁有者權限,因為這些權限會轉移至 Android Device Policy。
注意:裝置必須連上網際網路才能開始遷移。該程序經過特別設計,可在遷移過程中彈性應對網路連線中斷,因此,在裝置擁有者或設定檔擁有者權限從 DPC 實際轉移至 Android Device Policy 之前,需要網路連線的關鍵作業才會完成。
遷移權杖
EMM 伺服器會要求遷移權杖,以表明遷移自訂 DPC 管理的特定裝置。直到遷移作業順利完成或到期時,您都可以使用遷移權杖。
自訂裝置政策控制器 (DPC) 整合
首先,您必須建立 DpcMigrationRequest
,將權杖傳遞給建構工具,並在必要時將已設定的 Wi-Fi 網路清單傳送給建構工具:
// Create a DpcMigrationRequest
DpcMigrationRequest request =
DpcMigrationRequest.builder()
.setMigrationToken(token)
.build();
接著,您可以使用 DpcMigrationClient
,並使用 migrateDeviceManagementToAndroidManagementApi
啟動遷移程序:
// Create a DpcMigrationClient
DpcMigrationClient dpcMigrationClient = DpcMigrationClientFactory.create(context);
try {
// Use helper functiong 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
}
追蹤遷移進度
系統會在裝置上透過 DpcMigrationAttempt
追蹤遷移程序。
您可以直接使用 migrateDeviceManagementToAndroidManagementApi
傳回的錯誤,或使用 getMigrationAttempt
和 listMigrationAttempts
方法取得和列出遷移作業。
// Passing an empty name, we retrieve the last attempt
var request = GetDpcMigrationAttemptRequest.builder().build();
var attempt = client.getMigrationAttempt(request);
您可以視需要使用 NotificationReceiverService
設定 DpcMigrationListener
,監聽 DpcMigrationAttempt
的狀態更新。
// DpcMigrationNotificationReceiver for callback handling
public class DpcMigrationNotificationReceiver extends NotificationReceiverService
implements DpcMigrationListener {
@Override
protected DpcMigrationListener getDpcMigrationListener() {
// getDpcMigrationListener"
return this;
}
@Override
public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
// send success feedback
}
}
處理 Wi-Fi 網路
如果有由自訂 DPC 管理的 Wi-Fi 網路,AMAPI ONC 政策應符合這些網路的設定,才能讓 AMAPI 順利管理這些網路。DPC 遷移作業與 Wi-Fi 管理機制的互動,會因管理模式而異。
全代管裝置和公司裝置上的工作資料夾
在遷移期間,Android Device Policy 會假設所有政策中設定的 Wi-Fi 網路,無論裝置上已設定的 Wi-Fi 網路,具有相同的 SSID 和安全性類型,都與已設定的 Wi-Fi 網路相同。因此,在遷移後,自訂 DPC 設定的 Wi-Fi 網路不會受到影響,直到與網路相對應的 ONC 政策有變更為止。不過,如果在遷移後已解除安裝自訂 DPC,系統會自動移除自訂 DPC 設定的 Wi-Fi 網路。Android Device Policy 會繼續強制執行政策,如果政策中設定了上述任一網路,系統會照常新增政策中設定的網路。
個人裝置上的工作資料夾
基於技術因素,自訂 DPC 設定的 Wi-Fi 網路必須由 Android Device Policy 適用的自訂 DPC 移除,才能開始管理這些 Wi-Fi 網路。AMAPI SDK 會處理這個問題,並移除這類 Wi-Fi 網路,然後再將擁有權從自訂 DPC 轉移至 Android Device Policy,但自訂 DPC 必須在 DpcMigrationRequest
中傳遞這些網路的相關資訊。遷移之後,系統會正常新增在政策中設定的網路,因此建議在政策中一併設定自訂 DPC 新增的網路。
請留意以下事項:
- 如果使用中的網路是自訂 DPC 設定的 Wi-Fi 網路,裝置在遷移期間可能會短暫離線。
- 只有自訂 DPC 設定的 Wi-Fi 網路才能傳入
DpcMigrationRequest
,否則如果 AMAPI SDK 無法移除網路 (例如使用者已新增的 Wi-Fi 網路),遷移作業就會失敗。 - 當自訂 DPC 是個人裝置上的設定檔擁有者時,Wi-Fi 網路才應在
DpcMigrationRequest
中傳遞,否則遷移作業會失敗。 - 基於技術因素,Android 12 屬於特殊情況,系統會忽略透過
DpcMigrationRequest
傳遞的網路,並自動移除自訂 DPC 設定的所有 Wi-Fi 網路。此外,自訂 DPC 則必須在 Android 12 上擁有適用於個人裝置的工作資料夾的ACCESS_WIFI_STATE
權限,否則遷移作業會失敗。
注意事項
以下是與這項功能相關的注意事項。
企業專屬 ID
如果是搭載 Android 12 以上版本的工作資料夾,在遷移期間,可從 DevicePolicyManager.getEnrollmentSpecificId
存取的企業專屬 ID 並不會變更。不過,如果由 Android Device Policy 管理的工作資料夾在裝置上再次建立 (例如,刪除前一個設定檔或將裝置恢復原廠設定後),該設定檔便會變更。
完全受管理裝置上的工作資料夾
具備搭載 Android 9 或 10 工作資料夾的全代管裝置不支援這項功能。請勿嘗試遷移這些裝置;無論是否引發錯誤,一律無法遷移這類裝置。