Hỗ trợ cấu hình được quản lý

Một số ứng dụng dành cho doanh nghiệp có các chế độ cài đặt tích hợp sẵn gọi là cấu hình được quản lý mà quản trị viên CNTT có thể định cấu hình từ xa. Ví dụ: một ứng dụng có thể có tuỳ chọn chỉ đồng bộ hoá dữ liệu khi thiết bị được kết nối với Wi-Fi. Việc cung cấp cho quản trị viên CNTT khả năng chỉ định cấu hình được quản lý và áp dụng các cấu hình đó cho thiết bị là yêu cầu đối với mọi nhóm giải pháp. Bạn có 2 cách để hỗ trợ cấu hình được quản lý trong bảng điều khiển EMM:

  • Tạo giao diện người dùng của riêng bạn và áp dụng các chế độ cài đặt qua managedConfiguration trong ApplicationPolicy.
  • Thêm iframe cấu hình được quản lý vào bảng điều khiển (hướng dẫn chi tiết bên dưới) và áp dụng các chế độ cài đặt qua managedConfigurationTemplate trong ApplicationPolicy


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à xóa 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 thành phần trên 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 từ iframe

iframe cho mcm
Hình 1. Ví dụ về iframe cấu hình được quản lý cho Gmail.

Đặ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 các cấu hình đó làm 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ó thể 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 các 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.

Thêm iframe vào bảng điều khiển

Tạo mã thông báo web

Hãy dùng enterprises.webTokens.create để tạo mã thông báo web giúp xác định doanh nghiệp và đặt iframeFeature thành MANAGED_CONFIGURATIONS. 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 của mình.

Hiển thị 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 bên dưới liệt kê tất cả các thông số có sẵn cho URL iframe.

Thông sốBắt buộcNội dung mô tả
token Mã thông báo được trả về từ Enterprises.createWebToken.
packageName Mã sản phẩm của ứng dụng. Ví dụ: com.google.android.gm.
mcmId Không Mã của một hồ sơ cấu hình được quản lý.
canDelete Không Nếu là TRUE, hãy bật một nút trong iframe để cho phép 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), thì 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 đây trong quá trình tích hợp.

Sự kiệnNộ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 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.
}

Mẫu bên dưới cho thấy cách nghe onconfigupdated, làm ví dụ:

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 một 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 mọi hồ sơ cấu hình hiện có của ứng dụng.

Áp dụng hồ sơ cấu hình cho chính sách

Mỗi hồ sơ cấu hình được lưu dưới dạng một mcmId duy nhất. Để áp dụng hồ sơ cấu hình cho một chính sách, hãy chỉ định mcmId trong managedConfigurationTemplate.


Tìm hiểu hành vi chọn/bỏ chọn

Giờ đây, iframe cấu hình được quản lý cho phép quản trị viên CNTT bỏ chọn một cách rõ ràng các hạn chế đối với ứng dụng của một cấu hình được quản lý khi họ không cần đến. Đây là một 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 iframe cấu hình được quản lý hoạt động với mẫu bỏ chọn mới này và những thông tin mà nhà phát triển có thể 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 hạn chế về ứng dụng thuộc loại bool, lựa chọn, số nguyên, nhiều lựa chọn hoặc chuỗi được cung cấp giá trị mặc định, thì giá trị mặc định sẽ được áp dụng làm giá trị của chế độ hạn chế ứ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ế đó đố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": {
        "type": "bool",
        "valueBool": false
    }
}]

Các hạn chế khi ứ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 giá trị mặc định cho các 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, integer, multi-select hoặc string không được cung cấp cùng với giá trị mặc định, thì các hạn chế đối với ứng dụng này 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ế khi ứ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 tắc hạn chế đối với ứng dụng con có giá trị mặc định trong quy tắc hạn chế đối với ứng dụng theo gói

Nếu trong giới hạn ứng dụng theo gói, có ít nhất một trong các hạn chế về ứng dụng con với loại bool, lựa chọn, số nguyên, nhiều lựa chọn hoặc chuỗi được cung cấp giá trị mặc định, thì giá trị mặc định sẽ được áp dụng làm giá trị của hạn chế ứng dụng và những 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 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ế khi ứ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 tắc hạn chế ứng dụng gói tất cả hạn chế ứng dụng con có loại bool, lựa chọn, 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ì hạn chế về ứ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 tắc hạn chế đó đối với ứ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ế khi ứ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. Giá trị này không liên quan nếu các hạn chế về ứng dụng con đối với loại bool, lựa chọn, số nguyên, nhiều lựa chọn hoặc chuỗi 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 quy tắc hạn chế ứng dụng Bundle_array

Nếu bạn đã đặt ít nhất một nhóm bundle, hạn chế ứ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ế khi ứ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
            }
        }]
    }]
}]

Nếu bạn lưu một quy tắc hạn chế hoặc nhóm gói, thì tất cả các hạn chế/gói trong toàn bộ bundle_array sẽ được đặt theo mức độ ưu tiên sau:

  • giá trị do quản trị viên chọn
  • giá trị mặc định được liệt kê cho gói/hạn chế đó.
  • giá trị được hiển thị trong iFrame nếu không có giá trị mặc định

Không có nhóm gói nào trong quy tắc hạn chế đối với ứng dụng Bundle_array

Quy tắc hạn chế ứ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 nhóm gói. Các hạn chế khi ứng dụng được gửi đến thiết bị sẽ là:

"restrictions": [
    // Empty
]