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

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