يساعد هذا الدليل موفّري إدارة الخدمات الجوّالة للمؤسسات (EMM) على دمج تسجيل ميزة "إعداد الجهاز باللمسة الواحدة" في وحدة التحكّم. تابع القراءة لمعرفة المزيد حول التسجيل والاطلاع على أفضل الممارسات بشأن التسجيل مساعدة وحدة التحكّم بسياسة الجهاز (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
.
في ما يلي شرح حول آلية عمل التسجيل:
- يتصل الجهاز بخادم Google عند تشغيله لأول مرة (أو بعد إعادة ضبطه على الإعدادات الأصلية) لإجراء عملية إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة.
- إذا طبَّق مشرف تكنولوجيا المعلومات إعدادات على الجهاز، برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" عند التسجيل: إلى تشغيل معالج إعداد Android للأجهزة المُدارة بالكامل وتخصيص الشاشات مع بيانات وصفية من التكوين.
- يعمل برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" على تنزيل وحدة التحكّم بسياسة الجهاز هذه وتثبيتها من Google Play.
- تتلقى وحدة التحكّم بسياسة الجهاز (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
مطابق. يوضِّح المثال أدناه كيفية مطابقة 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\"]"
}
}
يعمل برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" على تثبيت أداة التحكّم في سياسة الجهاز وتشغيلها باستخدام نية Android.
يرسل النظام القيم الموجودة في
سمة JSON واحدة (android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE
) إلى وحدة التحكّم بسياسة الجهاز
كعناصر إضافية في النية. يمكن لوحدة التحكّم بسياسة الجهاز (DPC) قراءة إعدادات توفير المتطلبات اللازمة من
PersistableBundle
باستخدام المفاتيح نفسها.
إجراء يُنصح به: استخدِم التطبيقات الإضافية التالية للنوايا لإعداد وحدة التحكّم بسياسة الجهاز:
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
EXTRA_PROVISIONING_LOCALE
EXTRA_PROVISIONING_TIME_ZONE
EXTRA_PROVISIONING_LOCAL_TIME
EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED
EXTRA_PROVISIONING_MAIN_COLOR
EXTRA_PROVISIONING_DISCLAIMERS
إجراء غير مقترَح: عدم تضمين ما يلي المزايا الإضافية التي يمكنك استخدامها في طرق تسجيل أخرى:
EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION
EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM
للتعرّف على كيفية استخراج هذه الإعدادات واستخدامها في وحدة التحكّم بسياسة الجهاز، يُرجى الاطّلاع على المقالة توفير المتطلبات اللازمة. أجهزة العملاء.
التطوير والاختبار
لتطوير ميزات إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة واختبارها في وحدة التحكّم، ستحتاج إلى ما يلي:
- جهاز متوافق
- حساب إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة للعميل
التطوير والاختبار باستخدام أجهزة متوافقة مع برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" التسجيل، مثل Google Pixel. ليس عليك شراء أجهزة التطوير من شريك مورِّد.
يمكنك التواصل معنا للحصول على حساب عميل تجريبي والوصول إلى بوابة برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة". يُرجى مراسلتنا عبر البريد الإلكتروني من عنوان البريد الإلكتروني لشركتك مرتبطًا بمنصة الحساب. أطلِعنا على الشركة المصنّعة. ورقم IMEI لجهاز واحد أو جهازين وسنضيفهما إلى جهاز التطوير الحساب.
تذكَّر أنّ برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" يعمل على تنزيل وتثبيت يجب أن تكون وحدة التحكّم بسياسة الجهاز متاحة من Google Play قبل اختبارها. توفير المتطلبات اللازمة. لا يمكنك إجراء الاختبار باستخدام إصدار تطويري لوحدة التحكّم بسياسة الجهاز.
الدعم لمشرفي تكنولوجيا المعلومات
إذا كنت بحاجة إلى مساعدة مشرفي تكنولوجيا المعلومات في واجهة وحدة التحكّم أو في مستنداتك، راجِع إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة لمشرفي تكنولوجيا المعلومات للحصول على إرشادات. إِنْتَ توجيه مستخدمي وحدة التحكم إلى مقالة مركز المساعدة هذه أيضًا.
محتوى إضافي للقراءة
اقرأ هذه المستندات لمساعدتك في دمج برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" في وحدة التحكم:
- إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة لمشرفي تكنولوجيا المعلومات في Android Enterprise مساعدة.
- إدارة أجهزة العملاء من "إدارة الخدمات الجوّالة للمؤسسات" لأجهزة Android Google Developers.