将现有设备迁移到 AMAPI

已由自定义设备政策控制器 (DPC) 管理的设备可以迁移至 Android 设备 政策 (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 在设备上强制执行。
  2. 通过调用为设备创建迁移令牌 enterprises.migrationTokens.create
  3. 将此迁移令牌的 value 发送给 您的自定义设备政策控制器 (DPC)。
  4. 使用下面的命令确保设备上已安装 Android Device Policy Play EMM API
  5. 使用 DpcMigrationClientFactory 创建 DpcMigrationClient
  6. DpcMigrationClient 上,调用 migrateDeviceManagementToAndroidManagementApi 方法。 至此,迁移过程就完成了。
  7. deviceState会更改为ACTIVE,并且您会收到 STATUS_REPORT 消息通过 Pub/Sub 渠道发送。

迁移完成后,发起调用的应用将失去其设备所有者或配置文件 所有者权限,因为这些权限将转移到 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 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);

您可以选择性地设置 DpcMigrationListener,具体方法是: 您的NotificationReceiverService,即可收听 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 会假定任何 WLAN 网络 在政策中配置的 SSID 和安全类型与 设备上配置的 Wi-Fi 网络与配置的匹配 WLAN 网络。因此,由自定义 DPC 配置的 Wi-Fi 网络不受影响 直至 ONC 政策发生更改, 。不过,如果在迁移后卸载了自定义 DPC,则 系统会自动移除自定义 DPC 配置的 Wi-Fi 网络。 Android Device Policy 会继续强制执行政策,而且如果其中任一网络强制执行政策 政策中配置的网络将添加为政策中配置的网络

个人设备上的工作资料

由于技术原因,自定义 DPC 配置的 Wi-Fi 网络需要 由适用于 Android Device Policy 的自定义 DPC 移除,以开始管理这些内容 WLAN 网络。AMAPI SDK 负责处理此问题,并移除此类 Wi-Fi 网络 在将所有权从自定义 DPC 转移到 Android Device Policy 之前 但它需要自定义 DPC 传递有关这些网络的信息, DpcMigrationRequest。迁移后,网络 在政策中配置会正常添加,因此建议 自定义 DPC 添加的网络也应在政策中配置。

请注意以下几点:

  • 如果活动网络是由自定义 DPC 配置的 Wi-Fi 网络,则设备 在迁移过程中可能暂时处于离线状态。
  • 只能传入由自定义 DPC 配置的 Wi-Fi 网络 DpcMigrationRequest,否则 AMAPI SDK 无法移除网络(例如用户添加的 Wi-Fi 网络)。
  • Wi-Fi 网络应传入 DpcMigrationRequest(仅当自定义 DPC 是 个人资料所有者,否则迁移将失败。
  • 由于技术原因,Android 12 是一个例外,因为 系统会忽略传入的 DpcMigrationRequest,并且所有 Wi-Fi 网络 由自定义 DPC 配置的网络会被自动移除。此外, 自定义 DPC 具有 ACCESS_WIFI_STATE 的一项要求 权限(在 Android 12 中); 否则迁移失败

注意事项

以下是与此功能相关的一些注意事项。

企业专用 ID

对于 Android 12 及更高版本上的工作资料,企业专用 ID。 可通过DevicePolicyManager.getEnrollmentSpecificId访问 在迁移时不会发生变化。但是,如果工作资料 受 Android Device Policy 管理的设备再次被创建(例如, 删除前一部设备或将设备恢复出厂设置后), 届时企业专用 ID 将会发生变化。

完全托管设备中的工作资料

具有工作资料的全代管式设备不支持此功能 运行 Android 9 或 10 的配置文件。请勿尝试迁移这些设备 并且无论是否出现错误,此类设备均不受支持, 用于 DPC 迁移。