將現有裝置遷移至 AMAPI

由自訂 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 程式庫。

裝置遷移步驟

  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 實際轉移至 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 傳回的錯誤,或使用 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 管理機制的互動,會因管理模式而異。

全代管裝置和公司裝置上的工作資料夾

在遷移期間,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 工作資料夾的全代管裝置不支援這項功能。請勿嘗試遷移這些裝置;無論是否引發錯誤,一律無法遷移這類裝置。