將現有裝置遷移至 AMAPI

您可將已由自訂 DPC 管理的裝置遷移至 Android Device Policy (ADP),並善用 Android Management 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 在裝置上強制執行的政策。AMAPI 中的政策必須與裝置在 Play EMM API 中所屬的企業相同。請注意,在 AMAPI 和 Play EMM API 中,特定企業的名稱相同。
  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) 遷移作業流程圖

注意:裝置必須連上網際網路才能開始遷移。這項程序旨在確保遷移期間即使發生網路中斷,也不會影響遷移作業,因此系統會在實際轉移裝置擁有者或設定檔擁有者權限前,完成需要網路連線的重要作業。

遷移權杖

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
}

設定 NotificationReceiverService 並追蹤遷移作業

在自訂 DPC 中實作 NotificationReceiverService

裝置會透過 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() {
    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 網路相同。因此,在 ONC 政策中出現對應網路的變更之前,遷移後自訂 DPC 設定的 Wi-Fi 網路不會受到影響。不過,如果遷移後解除安裝自訂 DPC,系統會自動移除自訂 DPC 設定的 Wi-Fi 網路。Android 裝置政策會繼續強制執行政策,如果政策中設定了任何這類網路,系統會照常新增政策中設定的網路。

個人裝置上的工作資料夾

基於技術考量,自訂 DPC 設定的 Wi-Fi 網路必須由自訂 DPC 移除,Android Device Policy 才能開始管理這些 Wi-Fi 網路。AMAPI SDK 會負責處理這項作業,並在將擁有權從自訂裝置政策控制器 (DPC) 轉移至 Android Device Policy 前,移除這類 Wi-Fi 網路,但自訂裝置政策控制器 (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 以上版本的工作資料夾,企業專屬 ID (可透過 DevicePolicyManager.getEnrollmentSpecificId 存取) 在遷移時不會變更。不過,如果裝置上再次建立由 Android Device Policy 管理的工作資料夾 (例如刪除先前的資料夾或將裝置恢復原廠設定後),企業專屬 ID 就會變更。

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

這項功能不支援搭載 Android 9 或 10 的全代管裝置 (設有工作資料夾)。請勿嘗試遷移這些裝置,且無論是否發生錯誤,DPC 遷移作業都不支援這類裝置。

RESET_PASSWORD 指令

如果裝置設有螢幕鎖定密碼,使用者必須在遷移後確認憑證 (例如重新輸入 PIN 碼),RESET_PASSWORD 指令才會成功。如果裝置沒有螢幕鎖定密碼,遷移作業完成後即可使用 RESET_PASSWORD 指令。