iframe cấu hình được quản lý là một giao diện người dùng có thể nhúng, cho phép quản trị viên CNTT lưu, chỉnh sửa và xoá các chế độ cài đặt cấu hình được quản lý của ứng dụng. Chẳng hạn, bạn có thể hiển thị một nút (hoặc phần tử giao diện người dùng tương tự) trong trang chi tiết hoặc cài đặt của ứng dụng để mở iframe.
Các thao tác mà quản trị viên CNTT có thể thực hiện qua iframe
![iframe trên mcm](https://developers-dot-devsite-v2-prod.appspot.com/static/android/work/play/emm-api/images/mcm_iframe.png?authuser=5&hl=vi)
Đặt và lưu hồ sơ cấu hình
iframe truy xuất và hiển thị giản đồ cấu hình được quản lý cho một ứng dụng được chỉ định. Trong iframe, quản trị viên CNTT có thể đặt các cấu hình và lưu chúng dưới dạng hồ sơ cấu hình. Mỗi lần quản trị viên CNTT lưu một hồ sơ cấu hình mới, iframe sẽ trả về một giá trị nhận dạng duy nhất có tên là mcmId
.
Điều này giúp quản trị viên CNTT có thể tạo nhiều hồ sơ cho cùng một ứng dụng.
Chỉnh sửa hồ sơ cấu hình
Iframe có khả năng hiển thị các hồ sơ cấu hình đã lưu. Quản trị viên CNTT có thể cập nhật chế độ cài đặt trong một hồ sơ và lưu các thay đổi của họ.
Xoá hồ sơ cấu hình
Quản trị viên CNTT có thể xoá hồ sơ cấu hình khỏi iframe. Tính năng này bị tắt theo mặc định.
Hiển thị iframe cấu hình được quản lý trong bảng điều khiển của bạn
Tạo mã thông báo web
Sử dụng Enterprises.createWebToken
để tạo mã thông báo web giúp xác định doanh nghiệp. Bạn phải bao gồm mã thông báo được trả về cùng với các tham số khác khi hiển thị iframe trong bảng điều khiển. Ví dụ sau cho biết cách truy xuất mã thông báo bằng Thư viện ứng dụng API EMM của Google Play cho Java.
public AdministratorWebToken getAdministratorWebToken(
String enterpriseId,
AdministratorWebTokenSpec tokenSpec) throws IOException {
return androidEnterprise
.enterprise()
.createWebToken(enterpriseId, tokenSpec)
.execute();
}
Kết xuất iframe
Dưới đây là ví dụ về cách hiển thị iframe cấu hình được quản lý:
<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>
Tham số URL
Bảng dưới đây liệt kê tất cả các thông số hiện có cho URL iframe.
Thông số | Bắt buộc | Nội dung mô tả |
---|---|---|
token |
Có | Mã thông báo được trả về từ Enterprises.createWebToken . |
packageName |
Có | Mã sản phẩm của ứng dụng. Ví dụ: com.google.android.gm . |
mcmId |
Không | Mã của hồ sơ cấu hình được quản lý. |
canDelete |
Không | Nếu giá trị là TRUE, hãy bật một nút trong iframe để quản trị viên CNTT xoá hồ sơ cấu hình được quản lý. Nếu FALSE (giá trị mặc định), nút này sẽ bị tắt. |
locale |
Không | Thẻ ngôn ngữ BCP 47 được định dạng hợp lý, dùng để bản địa hoá nội dung trong iframe. Nếu bạn không chỉ định, giá trị mặc định sẽ là en_US. |
Sự kiện Iframe
Bạn cũng nên xử lý các sự kiện sau trong quá trình tích hợp.
Sự kiện | Nội dung mô tả |
---|---|
onconfigupdated |
Người dùng cập nhật một hồ sơ cấu hình được quản lý hiện có hoặc tạo một hồ sơ
mới. Thao tác này sẽ trả về một đối tượng chứa:{ "mcmId": The ID of the managed configurations profile. "name": The name of the updated or newly created managed configurations profile. } |
onconfigdeleted |
Người dùng này sẽ xoá một hồ sơ cấu hình được quản lý hiện có. Thao tác này sẽ trả về một đối tượng chứa:{ "mcmId": The ID of the managed configurations profile. } |
Ví dụ dưới đây cho thấy cách theo dõi onconfigupdated
:
iframe.register('onconfigupdated', function(event) {
console.log(event);
}, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);
Nội dung cập nhật đối với giản đồ cấu hình được quản lý của ứng dụng
Nếu nhà phát triển cập nhật giản đồ cấu hình được quản lý của ứng dụng, thì các hồ sơ cấu hình đã lưu sẽ tự động được cập nhật. Ví dụ: nếu nhà phát triển xoá một tuỳ chọn, tuỳ chọn đó sẽ bị xoá khỏi mọi hồ sơ cấu hình hiện có của ứng dụng. Nếu nhà phát triển thêm tuỳ chọn, giá trị mặc định của tuỳ chọn (do nhà phát triển xác định) sẽ được thêm vào tất cả hồ sơ cấu hình hiện có của ứng dụng.
Áp dụng cấu hình được quản lý cho thiết bị của người dùng
Để tìm hiểu cách áp dụng cấu hình được quản lý cho thiết bị của người dùng, hãy xem bài viết Áp dụng cấu hình được quản lý.
Tìm hiểu hành vi chọn/bỏ chọn
Giờ đây, với iframe về cấu hình được quản lý, quản trị viên CNTT có thể bỏ chọn các hạn chế đối với ứng dụng của một cấu hình được quản lý một cách rõ ràng khi họ không cần đến các hạn chế đó. Đây là sự thay đổi so với hành vi trước đó và có thể ảnh hưởng đến những hạn chế được gửi đến ứng dụng của bạn dựa trên lựa chọn của quản trị viên.
Phần dưới đây trình bày cách hoạt động của iframe cấu hình được quản lý với mẫu bỏ chọn mới này và những gì nhà phát triển có thể mong đợi được gửi trong cấu hình được quản lý của họ.
Sử dụng giá trị mặc định cho quy định hạn chế đối với ứng dụng
Nếu các quy tắc hạn chế đối với ứng dụng thuộc loại bool, choice, số nguyên, nhiều lựa chọn hoặc chuỗi được cung cấp với một giá trị mặc định, thì giá trị mặc định sẽ được áp dụng làm giá trị của quy định hạn chế về ứng dụng khi quản trị viên lưu cấu hình được quản lý mà không áp dụng bất kỳ thay đổi nào đối với quy định hạn chế về ứng dụng đó.
Ví dụ: với giản đồ hạn chế ứng dụng sau:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": false
}
}]
Các hạn chế ứng dụng được gửi đến thiết bị sẽ là:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": false
}
}]
Không sử dụng các giá trị mặc định cho các hạn chế đối với ứng dụng
Nếu các hạn chế đối với ứng dụng liên quan đến loại bool, choice, số nguyên, nhiều lựa chọn hoặc chuỗi không được cung cấp giá trị mặc định, thì các hạn chế này đối với ứng dụng sẽ không được đưa vào khi quản trị viên lưu cấu hình được quản lý mà không áp dụng bất kỳ thay đổi nào đối với quy định hạn chế đối với ứng dụng đó.
Ví dụ: với giản đồ hạn chế ứng dụng sau:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool"
// defaultValue absent.
}]
Các hạn chế ứng dụng được gửi đến thiết bị sẽ là:
"restrictions": [
// Empty
]
Sử dụng các gói trong giản đồ của bạn
Phần này áp dụng cho các hạn chế đối với ứng dụng gói:
Có ít nhất một quy định hạn chế đối với ứng dụng con kèm theo giá trị mặc định trong quy định hạn chế về ứng dụng theo gói
Nếu trong gói hạn chế ứng dụng có ít nhất một trong các hạn chế ứng dụng con với loại bool, choice, integer, nhiều lựa chọn hoặc chuỗi được cung cấp một giá trị mặc định, thì giá trị mặc định sẽ được áp dụng làm giá trị giới hạn ứng dụng và các giá trị không có giá trị mặc định sẽ bị loại trừ khi quản trị viên lưu cấu hình được quản lý mà không áp dụng bất kỳ thay đổi nào trên ứng dụng đó.
"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.
}
]
}]
Các hạn chế ứng dụng được gửi đến thiết bị sẽ là:
"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.
]
}]
Tất cả hạn chế đối với ứng dụng con không có giá trị mặc định
Nếu trong quy định hạn chế của ứng dụng gói, tất cả hạn chế đối với ứng dụng con theo loại bool, choice, integer, nhiều lựa chọn hoặc string không được cung cấp với giá trị mặc định, thì hạn chế ứng dụng bundle sẽ không được đưa vào khi quản trị viên lưu cấu hình được quản lý mà không áp dụng bất kỳ thay đổi nào đối với quy định hạn chế của ứng dụng đó.
Ví dụ: với giản đồ hạn chế ứng dụng sau:
"restrictions": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key_1",
"restrictionType": "bool",
// defaultValue absent.
},
{
"key": "bool_key_2",
"restrictionType": "bool"
// defaultValue absent.
}
]
}]
Các hạn chế ứng dụng được gửi đến thiết bị sẽ là:
"restrictions": [
// Empty
]
Sử dụng Bundle_array trong giản đồ của bạn
Phần này áp dụng cho các hạn chế đối với ứng dụng bundle_array. Điều này sẽ không phù hợp nếu các quy định hạn chế của ứng dụng con bằng loại bool, choice, số nguyên, nhiều lựa chọn hoặc chuỗi có các giá trị mặc định.
Ví dụ: với giản đồ hạn chế ứng dụng sau:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
Có ít nhất một nhóm gói trong chế độ hạn chế ứng dụng Bundle_array
Nếu bạn đặt ít nhất một nhóm gói, thì quy tắc hạn chế đối với ứng dụng bundle_array sẽ được đưa vào khi quản trị viên lưu cấu hình được quản lý.
Các hạn chế ứng dụng được gửi đến thiết bị sẽ là:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
Không có nhóm gói trong chế độ hạn chế đối với ứng dụng Bundle_array
Quy tắc hạn chế đối với ứng dụng bundle_array sẽ không được đưa vào khi quản trị viên lưu cấu hình được quản lý mà không thêm một nhóm gói. Các hạn chế ứng dụng được gửi đến thiết bị sẽ là:
"restrictions": [
// Empty
]