ย้ายข้อมูลอุปกรณ์ที่มีอยู่ไปยัง AMAPI

อุปกรณ์ที่จัดการโดย DPC ที่กำหนดเองอยู่แล้วจะย้ายข้อมูลไปยัง Android Device Policy (ADP) และใช้ประโยชน์จาก Android Management API ได้

ข้อกำหนดเบื้องต้น

  • EMM ของคุณจัดการอุปกรณ์ด้วย DPC ที่กําหนดเองอยู่แล้ว
  • DPC ที่กำหนดเองผสานรวมกับ AMAPI SDK
  • อุปกรณ์ลงทะเบียนกับ Google Play EMM API
  • อุปกรณ์เป็นของกลุ่มบัญชี Managed Google Play สำหรับองค์กร
  • อุปกรณ์ใช้ Android 9 ขึ้นไป
  • ในกรณีที่เป็นโปรไฟล์งานในอุปกรณ์ของบริษัท อุปกรณ์จะต้องใช้ Android 11 ขึ้นไป

ผสานรวมกับ AMAPI SDK ใน DPC ที่กำหนดเอง

กระบวนการย้ายข้อมูลกำหนดให้แอปพลิเคชัน 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

เมื่อการย้ายข้อมูลเสร็จสมบูรณ์ แอปการโทรจะเสียสิทธิ์ในฐานะเจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ เนื่องจากสิทธิ์เหล่านี้จะโอนไปยัง Device Policy สำหรับ Android กระบวนการนี้แสดงได้ด้วยผังลำดับต่อไปนี้

แผนภาพลำดับการย้ายข้อมูล 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 แสดงผลโดยตรง หรือจะใช้เมธอด getMigrationAttempt และ listMigrationAttempts เพื่อรับและแสดงรายการการพยายามย้ายข้อมูลก็ได้

// 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

หากมีเครือข่าย Wi-Fi ที่จัดการโดย DPC ที่กําหนดเอง นโยบาย ONC ของ AMAPI ควรตรงกับการกำหนดค่าของเครือข่ายเหล่านี้เพื่อให้ AMAPI เริ่มจัดการเครือข่ายได้อย่างราบรื่น การโต้ตอบของการย้ายข้อมูล DPC กับการจัดการ Wi-Fi จะแตกต่างกันไปโดยขึ้นอยู่กับโหมดการจัดการ

อุปกรณ์ที่มีการจัดการครบวงจรและโปรไฟล์งานในอุปกรณ์ของบริษัท

ในระหว่างการย้ายข้อมูล นโยบายอุปกรณ์ Android จะถือว่าเครือข่าย Wi-Fi ที่กําหนดค่าไว้ในนโยบายซึ่งมี SSID และประเภทการรักษาความปลอดภัยเหมือนกับเครือข่าย Wi-Fi ที่กําหนดค่าไว้ในอุปกรณ์นั้นเหมือนกันกับเครือข่าย Wi-Fi ที่กําหนดค่าไว้ซึ่งตรงกัน ดังนั้น เครือข่าย Wi-Fi ที่กําหนดค่าโดย DPC ที่กําหนดเองจะไม่เปลี่ยนแปลงหลังจากการย้ายข้อมูลจนกว่าจะมีการเปลี่ยนแปลงนโยบาย ONC ที่เกี่ยวข้องกับเครือข่าย อย่างไรก็ตาม หากมีการถอนการติดตั้ง DPC ที่กําหนดเองหลังจากการย้ายข้อมูล ระบบจะนำเครือข่าย Wi-Fi ที่กําหนดค่าโดย DPC ที่กําหนดเองออกโดยอัตโนมัติ Device Policy สำหรับ Android จะบังคับใช้นโยบายต่อไป และหากมีการกำหนดค่าเครือข่ายเหล่านี้ในนโยบาย ระบบจะเพิ่มเครือข่ายตามที่กําหนดค่าไว้ในนโยบายตามปกติ

โปรไฟล์งานในอุปกรณ์ส่วนตัว

เนื่องด้วยเหตุผลทางเทคนิค DPC ที่กําหนดเองต้องนําเครือข่าย Wi-Fi ที่กําหนดค่าโดย DPC ที่กําหนดเองออกเพื่อให้ Android Device Policy เริ่มจัดการเครือข่าย Wi-Fi เหล่านี้ AMAPI SDK จะจัดการเรื่องนี้และนำเครือข่าย Wi-Fi ดังกล่าวออกก่อนที่จะโอนการเป็นเจ้าของจาก DPC ที่กำหนดเองไปยังนโยบายอุปกรณ์ Android แต่กำหนดให้ DPC ที่กำหนดเองต้องส่งข้อมูลเกี่ยวกับเครือข่ายเหล่านี้ใน DpcMigrationRequest หลังจากการย้ายข้อมูล ระบบจะเพิ่มเครือข่ายที่กําหนดค่าไว้ในนโยบายตามปกติ ดังนั้นจึงขอแนะนําให้กําหนดค่าเครือข่ายที่เพิ่มโดย DPC ที่กําหนดเองในนโยบายด้วย

โปรดคำนึงถึงสิ่งต่อไปนี้

  • หากเครือข่ายที่ใช้งานอยู่เป็นเครือข่าย Wi-Fi ที่กําหนดค่าโดย DPC ที่กําหนดเอง อุปกรณ์อาจออฟไลน์เป็นระยะเวลาสั้นๆ ในระหว่างการย้ายข้อมูล
  • คุณควรส่งเฉพาะเครือข่าย Wi-Fi ที่กําหนดค่าโดย DPC ที่กําหนดเองใน DpcMigrationRequest มิเช่นนั้นการย้ายข้อมูลจะดำเนินการไม่สำเร็จหาก AMAPI SDK นำเครือข่ายออกไม่ได้ (เช่น เครือข่าย Wi-Fi ที่ผู้ใช้เพิ่ม)
  • คุณควรส่งเครือข่าย Wi-Fi ใน DpcMigrationRequest เฉพาะในกรณีที่ DPC ที่กําหนดเองเป็นเจ้าของโปรไฟล์ในอุปกรณ์ส่วนบุคคลเท่านั้น มิฉะนั้นการย้ายข้อมูลจะไม่สําเร็จ
  • Android 12 เป็นกรณีพิเศษเนื่องจากเหตุผลทางเทคนิค ระบบจะไม่สนใจเครือข่ายที่ส่งใน DpcMigrationRequest และจะนำเครือข่าย Wi-Fi ทั้งหมดที่กําหนดค่าโดย DPC ที่กําหนดเองออกโดยอัตโนมัติ นอกจากนี้ DPC ที่กําหนดเองต้องมีสิทธิ์ ACCESS_WIFI_STATE ใน Android 12 สําหรับโปรไฟล์งานในอุปกรณ์ส่วนบุคคล ไม่เช่นนั้นการย้ายข้อมูลจะไม่สําเร็จ

คำเตือน

ข้อควรทราบบางประการเกี่ยวกับฟีเจอร์นี้

รหัสเฉพาะองค์กร

สำหรับโปรไฟล์งานใน Android 12 ขึ้นไป รหัสเฉพาะองค์กรซึ่งเข้าถึงได้จาก DevicePolicyManager.getEnrollmentSpecificId จะไม่มีการเปลี่ยนแปลงขณะย้ายข้อมูล อย่างไรก็ตาม หากมีการสร้างโปรไฟล์งานที่จัดการโดย Android Device Policy อีกครั้งในอุปกรณ์ (เช่น หลังจากลบโปรไฟล์งานก่อนหน้าหรือหลังจากรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น) รหัสเฉพาะองค์กรจะเปลี่ยนไป ณ จุดนั้น

โปรไฟล์งานในอุปกรณ์ที่มีการจัดการเต็มรูปแบบ

อุปกรณ์ที่มีการจัดการแบบครบวงจรซึ่งมีโปรไฟล์งานที่ใช้ Android 9 หรือ 10 ไม่รองรับฟีเจอร์นี้ ห้ามย้ายข้อมูลอุปกรณ์เหล่านี้ และระบบไม่รองรับการย้ายข้อมูล DPC สำหรับอุปกรณ์ดังกล่าว ไม่ว่าจะเกิดข้อผิดพลาดหรือไม่ก็ตาม