دليل دمج إدارة الخدمات الجوّالة للمؤسسات (EMM)

يساعد هذا الدليل موفِّري إدارة الخدمات الجوّالة للمؤسسات (EMM) على دمج إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة في وحدة التحكّم. تابع القراءة لمعرفة المزيد حول التسجيل والاطلاع على أفضل الممارسات بشأن التسجيل مساعدة وحدة التحكّم بسياسة الجهاز (DPC) في توفير الأجهزة. إذا كان لديك وحدة التحكّم بسياسة الجهاز (DPC)، ستتعرَّف على أفضل الممارسات عند توفير المتطلبات اللازمة للأجهزة وستحصل على نصائح لمساعدتك. من خلال التطوير والاختبار.

ميزات لمشرفي تكنولوجيا المعلومات

يمكنك استخدام واجهة برمجة تطبيقات العميل لمساعدة مشرفي تكنولوجيا المعلومات في إعداد برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" مباشرةً من وحدة التحكم الخاصة بك. في ما يلي بعض المهام التي قد يُكملها مشرف تكنولوجيا المعلومات في وحدة التحكّم:

  • إنشاء إعدادات "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" وتعديلها وحذفها استنادًا إلى سياسات الجوّال.
  • اضبط إعدادات تلقائية لكي تدير وحدة التحكّم بسياسة الجهاز (DPC) الأجهزة المستقبلية. عمليات الشراء الخاصة بالمؤسسة.
  • تطبيق الإعدادات الفردية على الأجهزة أو إزالة الأجهزة من برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" التسجيل.

لمزيد من المعلومات حول "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة"، يمكنك الاطّلاع على نظرة عامة.

المتطلبات الأساسية

قبل إضافة برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" إلى وحدة تحكّم إدارة الخدمات الجوّالة للمؤسسات (EMM)، تأكَّد من ما يلي:

  • يحتاج حلّ إدارة الخدمات الجوّالة للمؤسسات (EMM) إلى توفير جهاز يعمل بنظام التشغيل Android 8.0 أو الإصدارات الأحدث (Pixel 7.1 أو الإصدارات الأحدث) المملوكة للشركة. جهازك في وضع الإدارة الكاملة. يمكن تنزيل أجهزة Android 10 أو الإصدارات الأحدث مملوكة للشركة قد تمت إدارتها بالكامل أو من خلال ملف شخصي للعمل.
  • نظرًا لأن برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" يتم تنزيله وتثبيته تلقائيًا، يجب أن تكون وحدة التحكّم بسياسة الجهاز متاحة من Google Play. نحتفظ بقائمة بوحدات التحكّم بسياسة الجهاز (DPC) المتوافقة. التي يمكن لمشرفي تكنولوجيا المعلومات ضبطها باستخدام واجهة برمجة تطبيقات العميل أو البوابة. إرسال طلب تعديل المنتج من خلال منتدى موفِّري إدارة الخدمات الجوّالة للمؤسسات (EMM) لإضافة وحدة التحكّم بسياسة الجهاز (DPC) إلى القائمة.
  • يحتاج عملاؤك إلى حساب مخصّص لعملية "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" للاتصال بواجهة برمجة تطبيقات العميل. يُعِدّ مورِّد شريك الحساب لمؤسسة مشرف تكنولوجيا المعلومات عند المؤسسة تشتري أجهزته.
  • يجب أن يكون الجهاز متوافقًا مع خدمات Google للأجهزة الجوّالة (GMS). ويجب تفعيل خدمات Google Play في جميع الأوقات لإعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة ليعمل بشكل صحيح.

استدعاء واجهة برمجة التطبيقات

يفوّض مستخدمو وحدة التحكّم (باستخدام حساباتهم على Google) طلبات واجهة برمجة التطبيقات لتنفيذ ما يلي: واجهة برمجة تطبيقات العميل. ويختلف هذا التدفق عن التفويض الذي تؤديه واجهات برمجة تطبيقات إدارة الخدمات الجوّالة للمؤسسات (EMM) الأخرى. اقرأ التفويض لمعرفة كيفية إجراء ذلك في تطبيقك.

التعامل مع بنود الخدمة

على المستخدمين الموافقة على أحدث بنود الخدمة قبل عن طريق استدعاء واجهة برمجة التطبيقات. إذا كان طلب بيانات من واجهة برمجة التطبيقات يعرض رمز حالة HTTP 403 Forbidden يحتوي نص الاستجابة على TosError، يُرجى الطلب من المستخدم الموافقة بنود الخدمة من خلال تسجيل الدخول إلى بوابة "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة". المثال أدناه إحدى الطرق التي يمكنك من خلالها إجراء ذلك:

Java

// Authorize this method call as a user that hasn't yet accepted the ToS.
final String googleApiFormatHttpHeader = "X-GOOG-API-FORMAT-VERSION";
final String googleApiFormatVersion = "2";
final String tosErrorType =
      "type.googleapis.com/google.android.device.provisioning.v1.TosError";

try {
  // Send an API request to list all the DPCs available including the HTTP header
  // X-GOOG-API-FORMAT-VERSION with the value 2. Import the  exception:
  // from googleapiclient.errors import HttpError
  AndroidProvisioningPartner.Customers.Dpcs.List request =
        service.customers().dpcs().list(customerAccount);
  request.getRequestHeaders().put(googleApiFormatHttpHeader, googleApiFormatVersion);
  CustomerListDpcsResponse response = request.execute();
  return response.getDpcs();

} catch (GoogleJsonResponseException e) {
  // Get the error details. In your app, check details exists first.
  ArrayList<Map> details = (ArrayList<Map>) e.getDetails().get("details");
  for (Map detail : details) {
    if (detail.get("@type").equals(tosErrorType)
          && (boolean) detail.get("latestTosAccepted") != true) {
      // Ask the user to accept the ToS. If they agree, open the portal in a browser.
      // ...
    }
  }
  return null;
}

NET.

// Authorize this method call as a user that hasn't yet accepted the ToS.
try
{
    var request = service.Customers.Dpcs.List(customerAccount);
    CustomerListDpcsResponse response = request.Execute();
    return response.Dpcs;
}
catch (GoogleApiException e)
{
    foreach (SingleError error in e.Error?.Errors)
    {
        if (error.Message.StartsWith("The user must agree the terms of service"))
        {
            // Ask the user to accept the ToS. If they agree, open the portal in a browser.
            // ...
        }
    }
}

Python

# Authorize this method call as a user that hasn't yet accepted the ToS.
tos_error_type = ('type.googleapis.com/'
                  'google.android.device.provisioning.v1.TosError')
portal_url = 'https://partner.android.com/zerotouch'

# Send an API request to list all the DPCs available including the HTTP
# header X-GOOG-API-FORMAT-VERSION with the value 2. Import the exception:
# from googleapiclient.errors import HttpError
try:
  request = service.customers().dpcs().list(parent=customer_account)
  request.headers['X-GOOG-API-FORMAT-VERSION'] = '2'
  response = request.execute()
  return response['dpcs']

except HttpError as err:
  # Parse the JSON content of the error. In your app, check ToS exists first.
  error = json.loads(err.content)
  tos_error = error['error']['details'][0]

  # Ask the user to accept the ToS (not shown here). If they agree, then open
  # the portal in a browser.
  if (tos_error['@type'] == tos_error_type
      and tos_error['latestTosAccepted'] is not True):
    if raw_input('Accept the ToS in the zero-touch portal? y|n ') == 'y':
      webbrowser.open(portal_url)

ما إذا كان عميل واجهة Google API يتيح عرض الأخطاء التفصيلية (Java أو Python أو HTTP الطلبات)، فضمِّن عنوان HTTP X-GOOG-API-FORMAT-VERSION مع القيمة 2 في طلباتك. إذا كان البرنامج الخاص بك لا يدعم الأخطاء التفصيلية (.NET أخرى)، تطابق رسالة الخطأ.

عند إجراء تحديث على بنود الخدمة في المستقبل، إذا اتّبعت هذه المنهجية، سينطبق توجيه المستخدم إلى إعادة قبول بنود الخدمة الجديدة

يستخدم مشرفو تكنولوجيا المعلومات بوابة "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" لإدارة المستخدمين المؤسسة - لا يمكنك تقديم هذا من خلال واجهة برمجة تطبيقات العميل. يمكن لمشرفي تكنولوجيا المعلومات أيضًا إدارة الأجهزة وعمليات الضبط باستخدام البوابة. إذا كنت بحاجة إلى الربط من وحدة التحكم أو في مستنداتك، استخدم عنوان URL هذا:

https://partner.android.com/zerotouch

قد تحتاج إلى إبلاغ مشرفي تكنولوجيا المعلومات بأنّه يُطلَب منهم تسجيل الدخول باستخدام حساب Google.

تسجيل الجهاز

إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة هو آلية لتسجيل الأجهزة تشبه تكنولوجيا NFC. التسجيل أو التسجيل باستخدام رمز الاستجابة السريعة يجب أن تتوافق وحدة التحكّم مع الأجهزة المُدارة. ويجب أن تكون وحدة التحكّم بسياسة الجهاز (DPC) قادرة على العمل في وضع الجهاز المُدار بالكامل.

يتوفّر برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" على الأجهزة المتوافقة التي تعمل بنظام التشغيل Android 8.0 أو لاحقًا. يجب على مشرفي تكنولوجيا المعلومات شراء الأجهزة المتوافقة من شريك المورّد. يمكن لوحدة التحكم تتبع أجهزة مشرف تكنولوجيا المعلومات المتاحة لعملية "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" من خلال يَتِمُّ الْآنَ الِاتِّصَالْ بِـ customers.devices.list.

في ما يلي شرح حول آلية عمل التسجيل:

  1. يتصل الجهاز بخادم Google عند بدء تشغيله لأول مرة (أو بعد المصنع إعادة الضبط) لبرنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة".
  2. إذا طبَّق مشرف تكنولوجيا المعلومات إعدادات على الجهاز، برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" عند التسجيل: إلى تشغيل معالج إعداد Android للأجهزة المُدارة بالكامل وتخصيص الشاشات مع بيانات وصفية من التكوين.
  3. يعمل برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" على تنزيل وحدة التحكّم بسياسة الجهاز هذه وتثبيتها من Google Play.
  4. تتلقى وحدة التحكّم بسياسة الجهاز (DPC) ACTION_PROVISION_MANAGED_DEVICE النية الجهاز.

في حال عدم توفّر اتصال بالإنترنت، يتم إجراء عملية التحقّق عندما يصبح الجهاز متصلاً. المتوفرة. للتعرّف على مزيد من المعلومات حول توفير المتطلبات اللازمة للأجهزة باستخدام برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة"، راجِع إدارة الحسابات أدناه.

الإعدادات التلقائية

يساعد برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" مشرفي تكنولوجيا المعلومات بشكلٍ أكبر عند ضبط الإعدادات التلقائية. التي تنطبق على أي أجهزة جديدة تشتريها المؤسسة. ترقية الإعداد تهيئة افتراضية من وحدة التحكم الخاصة بك إذا لم يتم تعيين واحد. يمكنك الاطّلاع على بقيمة customers.configurations.isDefault إلى لمعرفة ما إذا كانت إحدى المؤسسات قد قمت بتعيين التكوين الافتراضي.

يوضح المثال أدناه كيفية إجراء تهيئة حالية الافتراضي:

Java

// Send minimal data with the request. Just the 2 required fields.
// targetConfiguration is an existing configuration that we want to make the default.
Configuration configuration = new Configuration();
configuration.setIsDefault(true);
configuration.setConfigurationId(targetConfiguration.getConfigurationId());

// Call the API, including the FieldMask to avoid setting other fields to null.
AndroidProvisioningPartner.Customers.Configurations.Patch request = service
      .customers()
      .configurations()
      .patch(targetConfiguration.getName(), configuration);
request.setUpdateMask("isDefault");
Configuration results = request.execute();

NET.

// Send minimal data with the request. Just the 2 required fields.
// targetConfiguration is an existing configuration that we want to make the default.
Configuration configuration = new Configuration
{
    IsDefault = true,
    ConfigurationId = targetConfiguration.ConfigurationId,
};

// Call the API, including the FieldMask to avoid setting other fields to null.
var request = service.Customers.Configurations.Patch(configuration,
                                                     targetConfiguration.Name);
request.UpdateMask = "IsDefault";
Configuration results = request.Execute();

Python

# Send minimal data with the request. Just the 2 required fields.
# target_configuration is an existing configuration we'll make the default.
configuration = {
    'isDefault': True,
    'configurationId': target_configuration['configurationId']}

# Call the API, including the FieldMask to avoid setting other fields to null.
response = service.customers().configurations().patch(
    name=target_configuration['name'],
    body=configuration, updateMask='isDefault').execute()

الإشارة إلى وحدة التحكّم بسياسة الجهاز (DPC)

نوصي باستخدام اسم مورد واجهة برمجة التطبيقات customers.dpcs.name لتحديد وحدة التحكّم بسياسة الجهاز واستخدامها في الإعدادات يحتوي اسم المورد على معرّف فريد وغير متغير لوحدة التحكّم بسياسة الجهاز اتصل customers.dpcs.list للحصول على قائمة بكل الأجهزة المتوافقة وحدات التحكّم بسياسة الجهاز. نظرًا لأن اسم المورد يتضمن أيضًا الرقم التعريفي للعميل، يمكنك تصفية القائمة باستخدام مكوّن المسار الأخير للعثور على مثيل Dpc مطابق. المثال أدناه كيفية مطابقة وحدة التحكّم بسياسة الجهاز (DPC) واستمرار استخدامها لاحقًا في التكوين:

Java

// Return a customer Dpc instance for the specified DPC ID.
String myDpcIdentifier = "AH6Gbe4aiS459wlz58L30cqbbXbUa_JR9...xMSWCiYiuHRWeBbu86Yjq";
final int dpcIdIndex = 3;
final String dpcComponentSeparator = "/";
// ...
for (Dpc dpcApp : dpcs) {
    // Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID}, check the
    // fourth component matches the DPC ID.
    String dpcId = dpcApp.getName().split(dpcComponentSeparator)[dpcIdIndex];
    if (dpcId.equals(myDpcIdentifier)) {
        System.out.format("My DPC is: %s\n", dpcApp.getDpcName());
        return dpcApp;
    }
}
// Handle the case when the DPC isn't found...

NET.

// Return a customer Dpc instance for the specified DPC ID.
var myDpcIdentifer = "AH6Gbe4aiS459wlz58L30cqbbXbUa_JR9...fE9WdHcxMSWCiYiuHRWeBbu86Yjq";
const int dpcIdIndex = 3;
const String dpcComponentSeparator = "/";
// ...
foreach (Dpc dpcApp in dpcs)
{
    // Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID}, check the
    // fourth component matches the DPC ID.
    String dpcId = dpcApp.Name.Split(dpcComponentSeparator)[dpcIdIndex];
    if (dpcId.Equals(myDpcIdentifer))
    {
        Console.WriteLine("Matched DPC is: {0}", dpcApp.DpcName);
        return dpcApp;
    }
}
// Handle the case when the DPC isn't found...

Python

# Return a customer Dpc instance for the specified DPC ID.
my_dpc_id = 'AH6Gbe4aiS459wlz58L30cqb...fE9WdHcxMSWCiYiuHRWeBbu86Yjq'
# ...
for dpc_app in dpcs:
  # Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID},
  # check the fourth component matches the DPC ID.
  dpc_id = dpc_app['name'].split('/')[3]
  if dpc_id == my_dpc_id:
    return dpc_app

# Handle the case when the DPC isn't found...

إذا كنت بحاجة إلى إظهار اسم وحدة التحكّم بسياسة الجهاز (DPC) في واجهة المستخدم الخاصة بوحدة التحكّم، اعرض القيمة التي يتم عرضها من customers.dpcs.dpcName.

إدارة الحسابات

اغتنِم الفرصة لتوفير تجربة مستخدم رائعة لإدارة الأجهزة. يجب أن يكون اسم المستخدم وكلمة المرور هما كل ما تحتاج إليهما لإدارة الجهاز. تذكر أن المورّدين قد يشحنون الأجهزة مباشرةً إلى المستخدمين البعيدين. تضمين جميع الإعدادات الأخرى، مثل خادم إدارة الخدمات الجوّالة للمؤسسات (EMM) أو الوحدة التنظيمية، في customers.configuration.dpcExtras

يعرض مقتطف JSON أدناه جزءًا من مثال على عملية الضبط:

{
  "android.app.extra.PROVISIONING_LOCALE": "en_GB",
  "android.app.extra.PROVISIONING_TIME_ZONE": "Europe/London",
  "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED": true,
  "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
    "workflow_type": 3,
    "default_password_quality": 327680,
    "default_min_password_length": 6,
    "company_name": "XYZ Corp",
    "organizational_unit": "sales-uk",
    "management_server": "emm.example.com",
    "detail_tos_url": "https://www.example.com/policies/terms/",
    "allowed_user_domains": "[\"example.com\", \"example.org\", \"example.net\"]"
    }
}

يثبّت برنامج "إعداد الأجهزة الجوّالة للمؤسسات دُفعةً واحدة" ويطلق وحدة التحكّم بسياسة الجهاز (DPC) باستخدام نية Android. يرسل النظام القيم الموجودة في سمة JSON واحدة (android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE) إلى وحدة التحكّم بسياسة الجهاز كعناصر إضافية في النية. يمكن لوحدة التحكّم بسياسة الجهاز (DPC) قراءة إعدادات توفير المتطلبات اللازمة من PersistableBundle باستخدام المفاتيح نفسها.

إجراء مقترَح: استخدِم عناصر intent الإضافية التالية. لإعداد وحدة التحكّم بسياسة الجهاز (DPC)، يُرجى اتّباع الخطوات التالية:

إجراء غير مقترَح: عدم تضمين ما يلي المزايا الإضافية التي يمكنك استخدامها في طرق تسجيل أخرى:

للتعرّف على كيفية استخراج هذه الإعدادات واستخدامها في وحدة التحكّم بسياسة الجهاز، يُرجى الاطّلاع على المقالة توفير المتطلبات اللازمة. أجهزة العملاء.

التطوير والاختبار

لتطوير ميزات "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" في وحدة التحكّم واختبارها، ستحتاج إلى ما يلي:

  • جهاز متوافق
  • حساب عميل مخصّص لعملية "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة"

التطوير والاختبار باستخدام أجهزة متوافقة مع برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" التسجيل، مثل Google Pixel. ليس عليك شراء أجهزة التطوير من شريك مورِّد.

يمكنك التواصل معنا للحصول على حساب عميل تجريبي والوصول إلى بوابة برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة". يُرجى مراسلتنا عبر البريد الإلكتروني من عنوان البريد الإلكتروني لشركتك مرتبطًا بمنصة الحساب. أطلِعنا على الشركة المصنّعة. ورقم IMEI لجهاز واحد أو جهازين وسنضيفهما إلى جهاز التطوير الحساب.

تذكَّر أنّ برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" يعمل على تنزيل وتثبيت يجب أن تكون وحدة التحكّم بسياسة الجهاز متاحة من Google Play قبل اختبارها. توفير المتطلبات اللازمة. لا يمكنك إجراء الاختبار باستخدام إصدار تطويري لوحدة التحكّم بسياسة الجهاز.

الدعم لمشرفي تكنولوجيا المعلومات

إذا كنت بحاجة إلى مساعدة مشرفي تكنولوجيا المعلومات في واجهة وحدة التحكّم أو في مستنداتك، راجِع إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة لمشرفي تكنولوجيا المعلومات للحصول على إرشادات. إِنْتَ توجيه مستخدمي وحدة التحكم إلى مقالة مركز المساعدة هذه أيضًا.

محتوى إضافي للقراءة

اقرأ هذه المستندات لمساعدتك في دمج برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" في وحدة التحكم: