ย้ายข้อมูลอุปกรณ์ที่มีอยู่ไปยัง 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

เมื่อการย้ายข้อมูลเสร็จสมบูรณ์ แอปการโทรจะสูญเสียสิทธิ์ของเจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ เนื่องจากระบบจะโอนสิทธิ์เหล่านี้ไปยัง 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

คุณสามารถใช้ URL ที่แสดงผลโดย 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 ที่กำหนดเอง นโยบาย AMAPI ONC ควรตรงกับการกำหนดค่าของเครือข่ายเหล่านี้เพื่อให้ AMAPI เริ่มจัดการได้อย่างราบรื่น การโต้ตอบของการย้ายข้อมูล DPC กับการจัดการ Wi-Fi จะแตกต่างกันไปโดยขึ้นอยู่กับโหมดการจัดการ

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

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

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

ด้วยเหตุผลทางเทคนิค เครือข่าย Wi-Fi ที่กำหนดค่าโดย DPC ที่กำหนดเองจะต้องนำออกโดย DPC ที่กำหนดเองสำหรับ Android Device Policy เพื่อเริ่มจัดการเครือข่าย Wi-Fi เหล่านี้ AMAPI SDK จะดูแลเรื่องนี้และนำเครือข่าย Wi-Fi ดังกล่าวออก ก่อนโอนการเป็นเจ้าของจาก DPC ที่กำหนดเองไปยัง Android Device Policy แต่ต้องใช้ 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