העברת מכשירים קיימים ל-AMAPI

אפשר להעביר מכשירים שכבר מנוהלים על ידי בקר ה-DPC המותאם אישית שלך ל-Android Device Policy (ADP) וליהנות מהיתרונות של Android Management API.

דרישות מוקדמות

  • המכשיר כבר מנוהל על ידי ה-EMM עם בקר DPC בהתאמה אישית.
  • בקר ה-DPC המותאם אישית שלך משולב עם AMAPI SDK.
  • המכשיר רשום באמצעות Google Play EMM API.
  • המכשיר שייך לארגון של חשבונות 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. מוודאים ש-Device Policy למכשירי Android מותקנת במכשיר באמצעות Play EMM API.
  5. משתמשים ב-DpcMigrationClientFactory כדי ליצור DpcMigrationClient
  6. ב-DpcMigrationClient, קוראים ל-method migrateDeviceManagementToAndroidManagementApi. עכשיו ההעברה תסתיים.
  7. deviceState ישתנה ל-ACTIVE, ותקבלו הודעת STATUS_REPORT דרך ערוץ Pub/Sub.

בסיום ההעברה, אפליקציית השיחות מאבדת את ההרשאות של 'בעלי המכשיר' או 'בעלי הפרופיל', כי הן מועברות ל-Android Device Policy.

הערה: כדי להתחיל בהעברה, המכשיר צריך להיות מחובר לאינטרנט. התהליך נועד לעמוד בפני ניתוקים ברשת במהלך ההעברה, כך שהפעולות העיקריות שמחייבות קישוריות רשת יבוצעו לפני ההעברה בפועל של זכויות בעלי המכשיר או זכויות הבעלים של הפרופיל מ-DPC ל-Android Device Policy.

אסימון העברה

שרת ה-EMM מבקש אסימון העברה כדי לסמן את הכוונה להעביר מכשיר ספציפי שמנוהל על ידי בקר DPC בהתאמה אישית. אפשר להשתמש באסימון העברה עד שההעברה מסתיימת בהצלחה או עד שהתוקף שלו יפוג.

שילוב בקר DPC בהתאמה אישית

קודם צריך ליצור DpcMigrationRequest ולהעביר את האסימון, ואם צריך, את הרשימה של רשתות ה-Wi-Fi שהוגדרו ל-builder שלו:

// 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 או להשתמש ב-methods של 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 משתנה בהתאם למצב הניהול.

מכשירים ופרופילי עבודה מנוהלים במכשירים בבעלות החברה

במהלך ההעברה, Device Policy של Android מניח שלכל רשת Wi-Fi שהוגדרה במדיניות יש אותו SSID וסוג אבטחה של רשת Wi-Fi שהוגדרה במכשיר, זהות לרשת ה-Wi-Fi התואמת שהוגדרה. לכן, רשתות ה-Wi-Fi שהוגדרו על ידי בקר DPC מותאם אישית לא משפיעות על ההעברה, עד שיחול שינוי במדיניות ONC שתואמת לרשת. עם זאת, אם מסירים את ה-DPC המותאם אישית לאחר ההעברה, רשתות ה-Wi-Fi שהוגדרו על ידי בקר DPC מותאם אישית יוסרו באופן אוטומטי. אפליקציית Device Policy ל-Android ממשיכה לאכוף את המדיניות, ואם אחת מהרשתות האלה מוגדרת במדיניות, הרשתות שמוגדרות במדיניות מתווספות כרגיל.

פרופיל עבודה במכשיר אישי

מסיבות טכניות, יש להסיר רשתות Wi-Fi שהוגדרו על ידי ה-DPC המותאם אישית על ידי בקר ה-DPC המותאם אישית עבור Android Device Policy כדי להתחיל לנהל את רשתות ה-Wi-Fi האלה. AMAPI SDK מטפל בכך ומסיר את רשתות ה-Wi-Fi האלה לפני העברת הבעלות מה-DPC המותאם אישית אל Android Device Policy, אבל הוא דורש מה-DPC המותאם אישית להעביר מידע על הרשתות האלה ב-DpcMigrationRequest. אחרי ההעברה, רשתות שהוגדרו במדיניות יתווספו כרגיל, כך שמומלץ להגדיר גם את הרשתות שנוספו על ידי ה-DPC המותאם אישית במדיניות.

חשוב לשים לב לנקודות הבאות:

  • אם הרשת הפעילה היא רשת Wi-Fi שהוגדרה על ידי בקר DPC בהתאמה אישית, המכשיר יכול להיות במצב אופליין למשך זמן קצר במהלך ההעברה.
  • יש להעביר ב-DpcMigrationRequest רק את רשתות ה-Wi-Fi שהוגדרו על ידי בקר DPC מותאם אישית, אחרת ההעברה תיכשל אם לא ניתן להסיר את הרשת על ידי 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.