دستگاههایی که از قبل توسط DPC سفارشی شما مدیریت میشوند، میتوانند به خطمشی دستگاه اندروید (ADP) منتقل شوند و از API مدیریت اندروید بهرهمند شوند.
پیشنیازها
- این دستگاه از قبل توسط EMM شما با یک DPC سفارشی مدیریت میشود.
- DPC سفارشی شما با AMAPI SDK یکپارچه شده است.
- این دستگاه با Google Play EMM API ثبت شده است.
- این دستگاه متعلق به یک شرکت مدیریت حسابهای گوگل پلی است.
- این دستگاه اندروید ۹ یا بالاتر را اجرا میکند.
- در صورت استفاده از پروفایلهای کاری در دستگاههای متعلق به شرکت، دستگاه باید اندروید ۱۱ یا بالاتر را اجرا کند.
با AMAPI SDK در DPC سفارشی خود ادغام شوید
فرآیند مهاجرت مستلزم آن است که برنامه DPC سفارشی، AMAPI SDK را ادغام کند. میتوانید اطلاعات بیشتر در مورد این کتابخانه و نحوه افزودن آن به برنامه خود را در راهنمای ادغام AMAPI SDK بیابید.
مراحل مهاجرت یک دستگاه
- سیاستی را تنظیم کنید که پس از مهاجرت دستگاه به AMAPI، توسط آن استفاده شود. برای بهترین تجربه کاربری، این باید معادل سیاستی باشد که قبلاً توسط DPC شما روی دستگاه اعمال شده است. سیاست موجود در AMAPI باید متعلق به همان سازمانی باشد که دستگاه در Play EMM API به آن تعلق دارد. توجه داشته باشید که یک شرکت مشخص هم در AMAPI و هم در Play EMM API نام یکسانی دارد.
- با فراخوانی
enterprises.migrationTokens.create، یک توکن مهاجرت برای دستگاه ایجاد کنید. -
valueاین توکن مهاجرت را به DPC سفارشی خود ارسال کنید. - با استفاده از Play EMM API، مطمئن شوید که Android Device Policy روی دستگاه نصب شده است.
- استفاده از
DpcMigrationClientFactoryبرای ایجاد یکDpcMigrationClient - در
DpcMigrationClient، متدmigrateDeviceManagementToAndroidManagementApiرا فراخوانی کنید. این کار مهاجرت را تکمیل میکند. -
deviceStateبهACTIVEتغییر میکند و شما یک پیامSTATUS_REPORTاز طریق کانال Pub/Sub دریافت خواهید کرد.
پس از اتمام مهاجرت، برنامه فراخوانی، امتیازات مالک دستگاه یا مالک پروفایل خود را از دست میدهد، زیرا این امتیازات به خطمشی دستگاه اندروید منتقل میشوند. این فرآیند را میتوان با نمودار توالی زیر نشان داد:

توجه: برای شروع مهاجرت، دستگاه باید به اینترنت متصل باشد. این فرآیند به گونهای طراحی شده است که در طول فرآیند مهاجرت، در برابر قطع شدن شبکه مقاوم باشد، به طوری که عملیات کلیدی که نیاز به اتصال به شبکه دارند، قبل از انتقال واقعی حقوق مالک دستگاه یا مالک پروفایل از DPC شما به خطمشی دستگاه اندروید انجام شوند.
توکن مهاجرت
یک توکن مهاجرت توسط سرور EMM درخواست میشود تا قصد مهاجرت یک دستگاه خاص که توسط یک DPC سفارشی مدیریت میشود را نشان دهد. یک توکن مهاجرت میتواند تا زمانی که مهاجرت با موفقیت انجام شود یا تا زمان انقضای آن استفاده شود.
ادغام DPC سفارشی
ابتدا باید یک DpcMigrationRequest ایجاد کنید، توکن و در صورت لزوم، لیست شبکههای وایفای پیکربندیشده را به سازنده آن ارسال کنید:
// Create a DpcMigrationRequest
DpcMigrationRequest request =
DpcMigrationRequest.builder()
.setMigrationToken(token)
.build();
سپس میتوانید از دستور get a 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 و پیگیری مهاجرت
یک NotificationReceiverService را در DPC سفارشی خود پیادهسازی کنید.
فرآیند مهاجرت از طریق 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() {
return this;
}
@Override
public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
// send success feedback
}
}
مدیریت شبکههای وایفای
اگر شبکههای وایفای توسط DPC سفارشی مدیریت میشوند، سیاست AMAPI ONC باید با پیکربندی این شبکهها مطابقت داشته باشد تا AMAPI بتواند مدیریت آنها را به راحتی آغاز کند. تعامل مهاجرت DPC با مدیریت وایفای بسته به حالت مدیریت متفاوت است.
دستگاهها و پروفایلهای کاری کاملاً مدیریتشده در دستگاههای متعلق به شرکت
در طول مهاجرت، سیاست دستگاه اندروید فرض میکند که هر شبکه وایفای پیکربندیشده در سیاست که دارای SSID و نوع امنیتی یکسانی با شبکه وایفای پیکربندیشده روی دستگاه باشد، با شبکه وایفای پیکربندیشده منطبق یکسان است. از این رو، شبکههای وایفای پیکربندیشده توسط DPC سفارشی پس از مهاجرت دستنخورده باقی میمانند تا زمانی که تغییری در سیاست ONC مربوط به شبکه ایجاد شود. با این حال، اگر DPC سفارشی پس از مهاجرت حذف نصب شود، شبکههای وایفای پیکربندیشده توسط DPC سفارشی بهطور خودکار حذف میشوند. سیاست دستگاه اندروید به اجرای سیاست ادامه میدهد و اگر هر یک از این شبکهها در سیاست پیکربندی شده باشند، شبکههای پیکربندیشده در سیاست طبق معمول اضافه میشوند.
نمایه کاری روی دستگاه شخصی
به دلایل فنی، شبکههای وایفای پیکربندیشده توسط DPC سفارشی باید توسط DPC سفارشی برای Android Device Policy حذف شوند تا مدیریت این شبکههای وایفای آغاز شود. AMAPI SDK این کار را انجام میدهد و چنین شبکههای وایفای را قبل از انتقال مالکیت از DPC سفارشی به Android Device Policy حذف میکند، اما DPC سفارشی را ملزم میکند تا اطلاعات مربوط به این شبکهها را در DpcMigrationRequest ارسال کند. پس از مهاجرت، شبکههای پیکربندیشده در policy بهطور معمول اضافه میشوند، بنابراین توصیه میشود شبکههای اضافهشده توسط DPC سفارشی نیز در policy پیکربندی شوند.
نکاتی وجود دارد که باید از آنها آگاه باشید:
- اگر شبکه فعال، یک شبکه وایفای پیکربندیشده توسط DPC سفارشی باشد، دستگاه میتواند در طول مهاجرت بهطور خلاصه آفلاین شود.
- فقط شبکههای وایفای پیکربندیشده توسط DPC سفارشی باید در
DpcMigrationRequestارسال شوند، در غیر این صورت اگر شبکهای توسط AMAPI SDK قابل حذف نباشد (مثلاً شبکه وایفای اضافهشده توسط کاربر)، مهاجرت با شکست مواجه میشود. - شبکههای وایفای فقط زمانی باید در
DpcMigrationRequestارسال شوند که DPC سفارشی، مالک پروفایل روی یک دستگاه شخصی باشد، در غیر این صورت مهاجرت با شکست مواجه میشود. - به دلایل فنی، اندروید ۱۲ یک مورد استثنایی است که در آن شبکههای ارسالی در
DpcMigrationRequestنادیده گرفته میشوند و تمام شبکههای وایفای پیکربندیشده توسط DPC سفارشی بهطور خودکار حذف میشوند. علاوه بر این، لازم است DPC سفارشی در اندروید ۱۲ برای پروفایلهای کاری روی دستگاههای شخصی، مجوزACCESS_WIFI_STATEداشته باشد، در غیر این صورت مهاجرت با شکست مواجه میشود.
هشدارها
در اینجا به برخی از نکات مربوط به این ویژگی اشاره میکنیم.
شناسه مخصوص سازمان
برای پروفایلهای کاری در اندروید ۱۲ و بالاتر، شناسه مختص سازمان که از طریق DevicePolicyManager.getEnrollmentSpecificId قابل دسترسی است، در زمان مهاجرت تغییر نمیکند. با این حال، اگر یک پروفایل کاری که توسط Android Device Policy مدیریت میشود دوباره روی دستگاه ایجاد شود (مثلاً پس از حذف پروفایل قبلی یا پس از تنظیم مجدد کارخانه دستگاه)، شناسه مختص سازمان در آن نقطه تغییر خواهد کرد.
پروفایلهای کاری روی دستگاههای کاملاً مدیریتشده
این ویژگی در دستگاههای کاملاً مدیریتشده که دارای نمایه کاری با اندروید ۹ یا ۱۰ هستند، پشتیبانی نمیشود. مهاجرت این دستگاهها نباید انجام شود و صرف نظر از اینکه خطایی رخ دهد یا خیر، چنین دستگاههایی برای مهاجرت DPC پشتیبانی نمیشوند.
دستور RESET_PASSWORD
اگر دستگاه دارای رمز عبور قفل صفحه باشد، دستور RESET_PASSWORD تنها پس از تأیید اعتبار کاربر (مثلاً وارد کردن مجدد پین خود) پس از مهاجرت، موفق خواهد شد. اگر دستگاه رمز عبور قفل صفحه نداشته باشد، دستور RESET_PASSWORD را میتوان بلافاصله پس از مهاجرت استفاده کرد.