รองรับการกําหนดค่าที่มีการจัดการ

บางแอปที่ออกแบบมาเพื่อองค์กรจะมีการตั้งค่าในตัวที่เรียกว่าการกำหนดค่าที่มีการจัดการ ซึ่งผู้ดูแลระบบไอทีสามารถกำหนดค่าจากระยะไกลได้ เช่น แอปอาจมีตัวเลือกให้ซิงค์ข้อมูลเฉพาะเมื่ออุปกรณ์เชื่อมต่อกับ Wi-Fi เท่านั้น ชุดโซลูชันทั้งหมดกำหนดให้ผู้ดูแลระบบไอทีระบุการกำหนดค่าที่มีการจัดการและนำไปใช้กับอุปกรณ์ได้ คุณสามารถรองรับการกำหนดค่าที่มีการจัดการในคอนโซล EMM ได้ 2 วิธีดังนี้

  • สร้าง UI ของคุณเองและใช้การตั้งค่าผ่าน managedConfiguration ใน ApplicationPolicy
  • เพิ่ม iframe การกำหนดค่าที่มีการจัดการไปยังคอนโซล (วิธีการโดยละเอียดด้านล่าง) และใช้การตั้งค่าผ่าน managedConfigurationTemplate ใน ApplicationPolicy


iframe การกำหนดค่าที่มีการจัดการเป็น UI แบบฝังที่ช่วยให้ผู้ดูแลระบบไอทีบันทึก แก้ไข และลบการตั้งค่าการกำหนดค่าที่มีการจัดการของแอปได้ เช่น แสดงปุ่ม (หรือองค์ประกอบ UI ที่คล้ายกัน) ในรายละเอียดหรือหน้าการตั้งค่าของแอปที่เปิด iframe เป็นต้น

การดำเนินการที่ผู้ดูแลระบบไอทีเข้าถึงได้จาก iframe

iframe ของ mcm
รูปที่ 1 ตัวอย่าง iframe การกำหนดค่าที่มีการจัดการสำหรับ Gmail

ตั้งค่าและบันทึกโปรไฟล์การกำหนดค่า

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 ไม่ได้ หากตั้งค่าเป็น TRUE ให้เปิดใช้ปุ่มใน iframe ที่อนุญาตให้ผู้ดูแลระบบไอทีลบโปรไฟล์การกำหนดค่าที่มีการจัดการ หาก FALSE (ค่าเริ่มต้น) ระบบจะปิดใช้ปุ่ม
locale ไม่ได้ แท็กภาษา BCP 47 ที่มีการจัดรูปแบบที่ดีซึ่งใช้ในการแปลเนื้อหาใน 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, choice, integer, multi-select หรือ string ของแอปมีค่าเริ่มต้น ระบบจะใช้ค่าเริ่มต้นเป็น ค่าของข้อจำกัดแอปเมื่อผู้ดูแลระบบบันทึกการกำหนดค่าที่มีการจัดการโดยไม่ได้ใช้การเปลี่ยนแปลงใดๆ กับข้อจำกัดของแอป

ตัวอย่างเช่น ด้วยสคีมาข้อจำกัดของแอปต่อไปนี้

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool",
    "defaultValue": {
        "type": "bool",
        "valueBool": false
    }
}]

ข้อจำกัดของแอปที่ส่งไปยังอุปกรณ์จะเป็นดังนี้

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool",
    "value": {
        "type": "bool",
        "valueBool": false
    }
}]

ไม่ใช้ค่าเริ่มต้นสําหรับการจำกัดแอป

หากการจำกัดประเภท bool, choice, integer, multi-select หรือ string ไม่ได้ให้ค่าเริ่มต้น ข้อจำกัดแอปเหล่านี้จะไม่รวมเมื่อผู้ดูแลระบบบันทึกการกำหนดค่าที่มีการจัดการโดยไม่ได้นำการเปลี่ยนแปลงใดๆ ไปใช้กับการจำกัดแอปดังกล่าว

ตัวอย่างเช่น ด้วยสคีมาข้อจำกัดของแอปต่อไปนี้

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool"
    // defaultValue absent.
}]

ข้อจำกัดของแอปที่ส่งไปยังอุปกรณ์จะเป็นดังนี้

"restrictions": [
    // Empty
]

การใช้แพ็กเกจภายในสคีมา

ส่วนนี้ใช้กับข้อจำกัดของแอปแพ็กเกจดังนี้

มีข้อจำกัดของแอปย่อยอย่างน้อย 1 รายการที่มีค่าเริ่มต้นในข้อจำกัดแอป Bundle

หากภายในการจำกัดแอปBundle อย่างน้อย 1 รายการมีค่าเริ่มต้นเป็นข้อจำกัดแอปย่อยประเภท bool, choice, integer, multi-select หรือ string ที่มีค่าเริ่มต้น ระบบจะใช้ค่าเริ่มต้นเป็นค่าของข้อจำกัดแอป และระบบจะยกเว้นค่าที่ไม่มีค่าเริ่มต้นเมื่อผู้ดูแลระบบบันทึกการกำหนดค่าที่มีการจัดการโดยไม่ใช้การเปลี่ยนแปลงใดๆ กับการจำกัดดังกล่าว

"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, choice, integer, multi-select หรือ string ที่มีค่าเริ่มต้น ระบบจะไม่รวมข้อจำกัดแอป bundle ไว้ด้วยเมื่อผู้ดูแลระบบบันทึกการกำหนดค่าที่มีการจัดการโดยที่ไม่ได้ใช้การเปลี่ยนแปลงใดๆ กับการจำกัดของแอปนั้น

ตัวอย่างเช่น ด้วยสคีมาข้อจำกัดของแอปต่อไปนี้

"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
]

การใช้แพ็กเกจ [bundle_array] ภายในสคีมา

ส่วนนี้ใช้กับข้อจำกัดของแอป bundle_array ซึ่งจะไม่เกี่ยวข้องหากการจำกัดแอปย่อยที่มีประเภท bool, choice, integer, multi-select หรือสตริงมีค่าเริ่มต้น

ตัวอย่างเช่น ด้วยสคีมาข้อจำกัดของแอปต่อไปนี้

"restrictions": [{
    "key": "bundle_array_key",
    "restrictionType": "bundleArray",
    "nestedRestriction": [{
        "key": "bundle_key",
        "restrictionType": "bundle",
        "nestedRestriction": [{
            "key": "bool_key",
            "restrictionType": "bool",
            "defaultValue": {
                "type": "bool",
                "valueBool": true
            }
        }]
    }]
}]

มีกลุ่ม Bundle อย่างน้อย 1 กลุ่มในข้อจำกัดแอปbundle_array

หากมีการตั้งค่ากลุ่ม bundle อย่างน้อย 1 กลุ่ม ระบบจะรวมข้อจำกัดแอป 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
            }
        }]
    }]
}]

หากบันทึกข้อจำกัดหรือกลุ่มแพ็กเกจไว้ 1 รายการ ระบบจะกำหนดข้อจำกัด/กลุ่มทั้งหมดภายใน bundle_array ทั้งกลุ่มตามลำดับความสำคัญดังต่อไปนี้

  • ค่าที่ผู้ดูแลระบบเลือก
  • ค่าเริ่มต้นที่ระบุไว้สำหรับแพ็กเกจ/ข้อจำกัดดังกล่าว
  • ค่าที่แสดงใน iFrame หากไม่มีค่าเริ่มต้น

ไม่มีกลุ่มชุดในการจำกัดแอป Bundle_array

แต่จะไม่รวมข้อจำกัดแอป bundle_array เมื่อผู้ดูแลระบบบันทึกการกำหนดค่าที่มีการจัดการโดยไม่เพิ่มกลุ่ม bundle ข้อจำกัดของแอปที่ส่งไปยังอุปกรณ์จะเป็นดังนี้

"restrictions": [
    // Empty
]