تتضمن بعض التطبيقات المصمَّمة للمؤسسات إعدادات مضمَّنة تُسمى مُدارة التي يمكن لمشرفي تكنولوجيا المعلومات ضبطها عن بُعد. على سبيل المثال، قد يحتاج أحد التطبيقات خيار مزامنة البيانات عند اتصال الجهاز بشبكة Wi-Fi فقط. توفير قدرة مشرفي تكنولوجيا المعلومات على تحديد عمليات الضبط المُدارة وتطبيقها على يكون مطلوبًا من جميع مجموعات الحلول. هناك طريقتان لإتاحة عمليات الضبط المُدارة في وحدة تحكّم إدارة الخدمات الجوّالة للمؤسسات (EMM):
- يمكنك إنشاء واجهة المستخدم الخاصة بك وتطبيق الإعدادات من خلال "
managedConfiguration
" في ApplicationPolicy. - إضافة إطار iframe لعمليات الضبط المُدارة إلى وحدة التحكّم (تعليمات تفصيلية
أدناه) وتطبيق الإعدادات عبر
managedConfigurationTemplate
في ApplicationPolicy
إطار iframe لعمليات الضبط المُدارة هو واجهة مستخدم قابلة للتضمين تتيح لمشرفي تكنولوجيا المعلومات حفظ إعدادات الضبط المُدارة لأحد التطبيقات وتعديلها وحذفها يمكنك، بالنسبة على سبيل المثال، عرض زر (أو عنصر واجهة مستخدم مشابه) في تفاصيل التطبيق أو صفحة الإعدادات التي تفتح إطار iframe.
الإجراءات المتاحة لمشرفي تكنولوجيا المعلومات من إطار iframe
![إطار iframe في "إدارة الشؤون التجارية والعقود"](https://developers.google.cn/static/android/work/play/emm-api/images/mcm_iframe.png?authuser=9&hl=ar)
إعداد الملفات الشخصية للإعداد وحفظها
يسترد iframe ويعرض مخطط عمليات الضبط المُدارة
تطبيق معين. يمكن لمشرف تكنولوجيا المعلومات ضبط الإعدادات وحفظها ضمن إطار iframe
كملف شخصي للتهيئة. في كل مرة يحفظ فيها مشرف تكنولوجيا المعلومات نسخة جديدة
يعرض إطار iframe معرّفًا فريدًا اسمه mcmId
.
يتيح ذلك لمشرفي تكنولوجيا المعلومات إنشاء ملفات شخصية متعدّدة للحساب نفسه.
التطبيق.
تعديل الملفات الشخصية للإعدادات
يمكن لإطار iframe عرض الملفات الشخصية المحفوظة للإعدادات. يمكن لمشرفي تكنولوجيا المعلومات تحديث الإعدادات داخل الملف الشخصي وحفظ التغييرات.
حذف الملفات الشخصية للإعدادات
يمكن لمشرفي تكنولوجيا المعلومات حذف الملفات الشخصية للإعدادات من إطار iframe. هذه الميزة بشكل افتراضي.
إضافة إطار iframe إلى وحدة التحكم
إنشاء رمز مميّز للويب
استخدام enterprises.webTokens.create
لإنشاء رمز مميّز للويب يعرف المؤسسة، وضبط iframeFeature
على
MANAGED_CONFIGURATIONS
يجب تضمين الرمز المميز الذي تم إرجاعه، بالإضافة إلى
المحددة، عند عرض iframe في وحدة التحكم.
عرض إطار iframe
في ما يلي مثال على كيفية عرض إطار iframe للإعدادات المُدارة:
<script src="https://apis.google.com/js/api.js"></script>
<div id="container" style="width: 1000px; height: 1000px"></div>
<script>
gapi.load('gapi.iframes', function() {
var options = {
'url': 'https://play.google.com/managed/mcm?token=web_token&packageName=app_package_name',
'where': document.getElementById('container'),
'attributes': { style: 'height:1000px', scrolling: 'yes'}
}
var iframe = gapi.iframes.getContext().openChild(options);
});
</script>
معلمات عنوان URL
يسرد الجدول التالي جميع المَعلمات المتاحة لعنوان URL الخاص بإطار iframe.
المعلمة | مطلوب | الوصف |
---|---|---|
token |
نعم | الرمز المميّز الذي تمّ عرضه من Enterprises.createWebToken |
packageName |
نعم | معرّف المنتج للتطبيق. على سبيل المثال:
com.google.android.gm |
mcmId |
لا | رقم تعريف ملف شخصي للإعدادات المُدارة. |
canDelete |
لا | إذا كانت القيمة صحيح، يتم تفعيل زر في إطار iframe يسمح بذلك. المشرفين لحذف الملف الشخصي لعمليات الضبط المُدارة. في حال حذف FALSE (القيمة التلقائية)، يتم إيقاف الزر. |
locale |
لا | نهجنا المكتوب بشكل جيد BCP 47 language (اللغة) المستخدمة لترجمة المحتوى في إطار iframe. إذا لم يكن كذلك محددة، تكون القيمة التلقائية en_US. |
أحداث Iframe
عليك أيضًا التعامل مع الأحداث التالية كجزء من عملية الدمج.
الحدث | الوصف |
---|---|
onconfigupdated |
يعدِّل المستخدم ملفًا شخصيًا حاليًا للإعدادات المُدارة أو ينشئ ملفًا شخصيًا جديدًا
واحد. يؤدي ذلك إلى عرض كائن يحتوي على:
{ "mcmId": The ID of the managed configurations profile. "name": The name of the updated or newly created managed configurations profile. } |
onconfigdeleted |
يحذف المستخدم ملفًا شخصيًا حاليًا للإعدادات المُدارة. يؤدي هذا إلى إرجاع
كائن يحتوي على:
{ "mcmId": The ID of the managed configurations profile. } |
يعرض النموذج أدناه كيفية الاستماع إلى "onconfigupdated
"، كمثال:
iframe.register('onconfigupdated', function(event) {
console.log(event);
}, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);
تعديلات على مخطّط عمليات الضبط المُدارة لأحد التطبيقات
في حال عدَّل المطوّر مخطط الضبط المُدار للتطبيق، سيتم حفظ يتم تحديث الملفات الشخصية للإعدادات تلقائيًا. على سبيل المثال، إذا مطور إزالة خيار، ستتم إزالة الخيار من جميع الإعدادات الحالية ملفات تعريف الارتباط الخاصة بالتطبيق. إذا أضاف المطور خيارًا، فإن القيمة الافتراضية ستتم إضافة الخيار (الذي يحدّده المطوّر) إلى جميع الإعدادات الحالية ملفات تعريف الارتباط الخاصة بالتطبيق.
تطبيق الملفات الشخصية للإعدادات على السياسة
يتم حفظ كل ملف شخصي للإعدادات باعتباره mcmId
فريدًا. لتطبيق
ملف الإعدادات إلى سياسة، حدّد mcmId
في
managedConfigurationTemplate
فهم سلوك التحديد/إلغاء الاختيار
يسمح إطار iframe للإعدادات المُدارة الآن لمشرفي تكنولوجيا المعلومات بإلغاء الاختيار بشكل صريح. قيود التطبيق على الإعدادات المُدارة عند عدم الحاجة إليها. هذا النمط هو تغيير عن السلوك السابق وقد يكون له تأثير على القيود يتم إرسالها إلى تطبيقك بناءً على اختيار المشرف.
يوضح القسم أدناه طريقة تعامل إطار iframe لعمليات الضبط المُدارة مع هذا النمط الجديد من إلغاء الاختيار والمعلومات التي يمكن أن يتوقّع المطوّرون إرسالها كجزء من الإعدادات المُدارة الخاصة بهم.
استخدام القيمة التلقائية لحظر أحد التطبيقات
في حال فرض قيود على التطبيق من النوع Bool، الاختيار عدد صحيح اختيار متعدّد أو سلسلة نصية بقيمة افتراضية، سيتم تطبيق القيمة الافتراضية قيمة قيد التطبيق عندما يحفظ المشرفون الإعدادات المُدارة بدون وتطبيق أي تغييرات على قيود التطبيق هذه.
على سبيل المثال، باستخدام مخطط قيود التطبيق التالي:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": false
}
}]
ستكون قيود التطبيقات التي يتم إرسالها إلى الجهاز هي:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": false
}
}]
بدون استخدام القيم التلقائية لقيود التطبيقات
في حال فرض قيود على التطبيق من النوع Bool، الاختيار عدد صحيح اختيار متعدّد أو سلسلة نصية بقيمة افتراضية، فلن يتم تطبيق قيود التطبيقات هذه يتم تضمينها عندما يحفظ المشرفون الإعدادات المُدارة بدون تطبيق أي تغييرات. على هذا القيد على التطبيق.
على سبيل المثال، باستخدام مخطط قيود التطبيق التالي:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool"
// defaultValue absent.
}]
ستكون قيود التطبيقات التي يتم إرسالها إلى الجهاز هي:
"restrictions": [
// Empty
]
استخدام الحزم ضمن المخطط
ينطبق هذا القسم على المجموعة. القيود المفروضة على التطبيقات:
فرض قيد واحد على الأقل على التطبيق الفرعي مع قيمة تلقائية في أحد قيود التطبيق الخاصة بحزمة
إذا كانت ضمن المجموعة تقييد تطبيق واحد على الأقل من قيود التطبيقات الفرعية من النوع bool أو الاختيار، عدد صحيح اختيار عناصر متعددة أو سلسلة بقيمة افتراضية، سيتم تطبيق القيمة الافتراضية قيمة حظر التطبيق وتلك التي لا تتضمّن قيمًا تلقائية عندما يحفظ المشرفون الإعدادات المُدارة بدون تطبيق أي تغييرات عليها القيود المفروضة على التطبيقات.
"restrictions": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key_1",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": false
}
},
{
"key": "bool_key_2",
"restrictionType": "bool"
// defaultValue absent.
}
]
}]
ستكون قيود التطبيقات التي يتم إرسالها إلى الجهاز هي:
"restrictions": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key_1",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": false
}
},
// The bool_key_2 child app restriction is not included.
]
}]
جميع قيود التطبيقات الفرعية التي لا تتضمّن قيمًا تلقائية
إذا كانت ضمن المجموعة تطبيق قيود على جميع قيود تطبيقات الأطفال من حيث النوع Bool، الاختيار، عدد صحيح اختيار عناصر متعددة أو سلسلة بالقيمة التلقائية، وهي الحزمة. لن يتم تضمين القيود المفروضة على التطبيقات عندما يحفظ المشرفون الإعدادات المُدارة. بدون تطبيق أي تغييرات على قيود التطبيق هذه.
على سبيل المثال، باستخدام مخطط قيود التطبيق التالي:
"restrictions": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key_1",
"restrictionType": "bool",
// defaultValue absent.
},
{
"key": "bool_key_2",
"restrictionType": "bool"
// defaultValue absent.
}
]
}]
ستكون قيود التطبيقات التي يتم إرسالها إلى الجهاز هي:
"restrictions": [
// Empty
]
استخدام package_array ضمن المخطط
ينطبق هذا القسم على bundle_array. القيود المفروضة على التطبيقات. لن يكون مناسبًا إذا كانت القيود المفروضة على التطبيقات الفرعية ضمن النوع. bool أو الاختيار عدد صحيح اختيار متعدّد أو سلسلة نصية لها قيم افتراضية.
على سبيل المثال، باستخدام مخطط قيود التطبيق التالي:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
إدراج مجموعة حِزم واحدة على الأقل في القيود المفروضة على تطبيق package_array
في حال توفُّر مجموعة واحدة على الأقل التي تم ضبطها، تمثّل bundle_array سيتم تضمين القيود المفروضة على التطبيقات عندما يحفظ المشرفون الإعدادات المُدارة.
ستكون قيود التطبيقات التي يتم إرسالها إلى الجهاز هي:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
في حال حفظ مجموعة حِزم أو قيود واحدة، ستظهر جميع القيود أو الحِزم.
في bundle_array
بالكامل حسب الأولوية التالية:
- القيمة التي يختارها المشرف
- القيمة الافتراضية المدرجة لهذه الحزمة/القيد.
- القيمة المعروضة في إطار iframe إذا لم تكن هناك قيمة افتراضية
ما مِن مجموعات حِزم في القيود المفروضة على تطبيق package_array
bundle_array لن يتم تضمين القيود المفروضة على التطبيقات عندما يحفظ المشرفون الإعدادات المُدارة. بدون إضافة حزمة المجموعة. ستكون قيود التطبيقات التي يتم إرسالها إلى الجهاز هي:
"restrictions": [
// Empty
]