將現有裝置遷移至 AMAPI

已由自訂 DPC 管理的裝置可以遷移至 Android Device Policy (ADP),並充分運用 Android 管理 API。

必要條件

  • 裝置已由 EMM 管理,並使用自訂 DPC。
  • 自訂 DPC 已與 AMAPI SDK 整合。
  • 裝置已註冊 Google Play EMM API
  • 裝置屬於 Google Play 管理版帳戶企業
  • 裝置搭載 Android 9 以上版本。
  • 如果是公司裝置上的工作資料夾,則裝置必須搭載 Android 11 以上版本。

在自訂 DPC 中整合 AMAPI SDK

遷移程序需要自訂 DPC 應用程式整合 AMAPI SDK。如要進一步瞭解這個程式庫,以及如何將其新增至應用程式,請參閱 AMAPI SDK 整合指南

遷移裝置的步驟

  1. 設定裝置遷移至 AMAPI 後要使用的政策。為提供最佳使用者體驗,這項政策應與 DPC 已在裝置上強制執行的政策相同。
  2. 呼叫 enterprises.migrationTokens.create,為裝置建立遷移權杖
  3. 將此移轉權杖的 value 傳送至自訂 DPC。
  4. 請使用 Play EMM API,確認 Android Device Policy 已安裝在裝置上。
  5. 使用 DpcMigrationClientFactory 建立 DpcMigrationClient
  6. 請在 DpcMigrationClient 上呼叫 migrateDeviceManagementToAndroidManagementApi 方法。這樣就完成遷移作業。
  7. deviceState 會變更為 ACTIVE,您會透過 Pub/Sub 管道收到 STATUS_REPORT 訊息。

遷移完成後,呼叫應用程式就會失去裝置擁有者或設定檔擁有者權限,因為這些權限會轉移至 Android Device Policy。這個程序可用下列序列圖表表示:

DPC 遷移作業流程圖

注意:裝置必須連上網際網路才能開始遷移。這個程序的設計目的,是為了在遷移過程中,讓系統能夠在網路連線中斷時仍能正常運作,因此在實際將裝置擁有者或設定檔擁有者權利從 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 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
}

追蹤遷移進度

遷移程序會透過 DpcMigrationAttempt 在裝置上追蹤。

您可以直接使用 migrateDeviceManagementToAndroidManagementApi 傳回的值,或使用 getMigrationAttemptlistMigrationAttempts 方法取得及列出遷移嘗試。

// 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 管理的互動方式會因管理模式而異。

完全受管理的裝置和公司裝置上的 Work 設定檔

遷移期間,Android 裝置政策會假設任何在政策中設定的 Wi-Fi 網路,其 SSID 和安全性類型與裝置上已設定的 Wi-Fi 網路相同,與相符的已設定 Wi-Fi 網路相同。因此,在 ONC 政策與網路對應的情況下,透過自訂 DPC 設定的 Wi-Fi 網路在遷移後不會受到影響。不過,如果在遷移後解除安裝自訂 DPC,系統會自動移除由自訂 DPC 設定的 Wi-Fi 網路。Android Device Policy 會繼續強制執行政策,如果政策中已設定任何這些網路,系統會照常新增政策中設定的網路。

個人裝置上的工作資料夾

基於技術原因,Android Device Policy 的自訂 DPC 必須移除由自訂 DPC 設定的 Wi-Fi 網路,才能開始管理這些 Wi-Fi 網路。AMAPI SDK 會處理這項作業,並在將擁有權從自訂 DPC 轉移至 Android 裝置政策之前,移除這類 Wi-Fi 網路,但這需要自訂 DPC 在 DpcMigrationRequest 中傳遞這些網路的相關資訊。遷移完成後,系統會正常新增在政策中設定的網路,因此建議您也應在政策中設定自訂 DPC 新增的網路。

請注意以下幾點:

  • 如果有效網路是透過自訂 DPC 設定的 Wi-Fi 網路,裝置可能會在遷移期間短暫離線。
  • DpcMigrationRequest 中只能傳遞自訂 DPC 設定的 Wi-Fi 網路,否則如果 AMAPI SDK 無法移除網路 (例如使用者新增的 Wi-Fi 網路),遷移作業就會失敗。
  • 只有在自訂 DPC 是個人裝置上的設定檔擁有者時,才應在 DpcMigrationRequest 中傳遞 Wi-Fi 網路,否則遷移作業會失敗。
  • 基於技術原因,Android 12 是例外情況,系統會忽略 DpcMigrationRequest 中傳遞的網路,並自動移除由自訂 DPC 設定的所有 Wi-Fi 網路。此外,自訂 DPC 必須在 Android 12 中具備 ACCESS_WIFI_STATE 權限,才能在個人裝置上設定工作資料夾,否則遷移作業會失敗。

注意事項

以下是這項功能的相關注意事項。

企業專屬 ID

對於 Android 12 以上版本的工作資料夾,可從 DevicePolicyManager.getEnrollmentSpecificId 存取的企業專屬 ID 在遷移時不會變更。不過,如果裝置上再次建立由 Android Device Policy 管理的工作資料夾 (例如在刪除先前的工作資料夾或恢復裝置原廠設定後),企業專屬 ID 就會隨之變更。

完全受管理裝置上的工作資料夾

這項功能不支援完全受管理的裝置,因為這些裝置設有執行 Android 9 或 10 的工作資料夾。請勿嘗試遷移這些裝置,且無論是否發生錯誤,這類裝置都不支援 DPC 遷移。