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

Một số ứng dụng được thiết kế cho doanh nghiệp có các chế độ cài đặt tích hợp 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. Đối với tất cả các bộ giải pháp, bạn cần phải 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 cho các thiết bị. Bạn có thể hỗ trợ cấu hình được quản lý trong bảng điều khiển EMM theo 2 cách:

  • 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 thông qua managedConfiguration trong ApplicationPolicy.
  • Thêm iframe cấu hình được quản lý vào bảng điều khiển của bạ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à 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
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 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.

Thêm iframe vào bảng điều khiển của bạ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 thê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.

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ộ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 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ệ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 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 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, 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 bằng 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 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ế ứ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 không phù hợp nếu các 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
            }
        }]
    }]
}]

Nếu bạn lưu một quy định hạn chế hoặc nhóm gói, 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 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
]