إطار iframe لعمليات الضبط المُدارة

إطار iframe لعمليات الضبط المُدارة هو واجهة مستخدم قابلة للتضمين تتيح لمشرفي تكنولوجيا المعلومات حفظ إعدادات الضبط المُدارة لأحد التطبيقات وتعديلها وحذفها يمكنك، بالنسبة على سبيل المثال، عرض زر (أو عنصر واجهة مستخدم مشابه) في تفاصيل التطبيق أو صفحة الإعدادات التي تفتح إطار iframe.

الإجراءات المتاحة لمشرفي تكنولوجيا المعلومات من إطار iframe

إطار iframe في "إدارة الشؤون التجارية والعقود"
الشكل 1. مثال على إطار iframe لعمليات الضبط المُدارة في Gmail

إعداد الملفات الشخصية للإعداد وحفظها

يسترد iframe ويعرض مخطط عمليات الضبط المُدارة تطبيق معين. يمكن لمشرف تكنولوجيا المعلومات ضبط الإعدادات وحفظها ضمن إطار iframe كملف شخصي للتهيئة. في كل مرة يحفظ فيها مشرف تكنولوجيا المعلومات نسخة جديدة يعرض إطار iframe معرّفًا فريدًا اسمه mcmId. يتيح ذلك لمشرفي تكنولوجيا المعلومات إنشاء ملفات شخصية متعدّدة للحساب نفسه. التطبيق.

تعديل الملفات الشخصية للإعدادات

يمكن لإطار iframe عرض الملفات الشخصية المحفوظة للإعدادات. يمكن لمشرفي تكنولوجيا المعلومات تحديث الإعدادات داخل الملف الشخصي وحفظ التغييرات.

حذف الملفات الشخصية للإعدادات

يمكن لمشرفي تكنولوجيا المعلومات حذف الملفات الشخصية للإعدادات من إطار iframe. هذه الميزة بشكل افتراضي.

عرض إطار iframe لعمليات الضبط المُدارة في وحدة التحكّم

إنشاء رمز مميّز للويب

يمكنك استخدام Enterprises.createWebToken لإنشاء رمز مميّز على الويب يحدّد المؤسسة. يجب تضمين ما يلي الذي تم إرجاعه، مع معلمات أخرى، عند عرض iframe في وحدة التحكم. يوضح المثال التالي كيفية استرداد الرمز المميز باستخدام صفحة تشغيل مكتبة برامج واجهة برمجة التطبيقات لإدارة الخدمات الجوّالة للمؤسسات (EMM) للغة Java.

public AdministratorWebToken getAdministratorWebToken(
    String enterpriseId,
    AdministratorWebTokenSpec tokenSpec) throws IOException {
  return androidEnterprise
     .enterprise()
     .createWebToken(enterpriseId, tokenSpec)
     .execute();
}

عرض إطار 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);

تعديلات على مخطّط عمليات الضبط المُدارة لأحد التطبيقات

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

تطبيق عمليات الضبط المُدارة على حسابات المستخدمين جهازان

لمعرفة كيفية تطبيق عمليات الضبط المُدارة على حسابات المستخدمين الأجهزة، انظر تطبيق عمليات الضبط المُدارة.


فهم سلوك التحديد/إلغاء الاختيار

يسمح إطار 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
            }
        }]
    }]
}]

ما مِن مجموعات حِزم في القيود المفروضة على تطبيق package_array

bundle_array لن يتم تضمين القيود المفروضة على التطبيقات عندما يحفظ المشرفون الإعدادات المُدارة. بدون إضافة حزمة المجموعة. ستكون قيود التطبيقات التي يتم إرسالها إلى الجهاز هي:

"restrictions": [
    // Empty
]