受管理 iframe iframe

受管理的設定 iframe 是嵌入式 UI,可讓 IT 管理員儲存、編輯及刪除應用程式的受管理設定。舉例來說,您可以在開啟 iframe 的應用程式詳細資料或設定頁面中顯示按鈕 (或類似的 UI 元素)。

IT 管理員可透過 iframe 執行的操作

公分 iframe
圖 1.Gmail 的受管理設定 iframe 範例。

設定及儲存組態設定檔

iframe 會擷取並顯示指定應用程式的受管理設定結構定義。在 iframe 中,IT 管理員可以進行設定,並將設定儲存為組態設定檔。IT 管理員每次儲存新的設定設定檔時,iframe 都會傳回名為 mcmId 的專屬 ID。方便 IT 管理員為同一個應用程式建立多個設定檔。

編輯組態設定檔

iframe 可顯示已儲存的設定設定檔。IT 管理員可以更新設定檔內的設定,然後儲存變更。

刪除組態設定檔

IT 管理員可以刪除 iframe 中的組態設定檔。這項功能預設為停用。

在控制台中顯示受管理的設定 iframe

產生網路權杖

使用 Enterprises.createWebToken 產生可識別企業的網頁權杖。在控制台中轉譯 iframe 時,您必須加入傳回的權杖和其他參數。下列範例說明如何使用 Java 適用的 Google Play EMM API 用戶端程式庫擷取權杖。

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>

網址參數

下表列出 iframe 網址所有可用的參數。

參數需要說明
token Enterprises.createWebToken 傳回的權杖。
packageName 應用程式的產品 ID。例如 com.google.android.gm
mcmId 受管理設定設定檔的 ID。
canDelete 如為 TRUE,請在 iframe 中啟用按鈕,讓 IT 管理員刪除受管理的設定設定檔。如果為 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);

更新應用程式的受管理設定結構定義

如果開發人員更新應用程式的代管設定結構定義,已儲存的設定設定檔會自動更新。舉例來說,如果開發人員移除某個選項,該選項就會從應用程式的所有現有設定檔中移除。如果開發人員新增一個選項,系統會將選項的預設值 (由開發人員定義) 新增至應用程式的所有現有設定設定檔中。

將受管理的設定套用至使用者的裝置

如要瞭解如何將使用者的裝置套用受管理的設定,請參閱「套用受管理的設定」。


瞭解選取/取消選取行為

IT 管理員現在可透過受管理的設定 iframe,明確取消選取受管理設定的應用程式限制。這是與先前行為不同的變更,並可能根據管理員選項,影響傳送至應用程式的限制。

下一節將概述受管理設定 iframe 如何以這個新的取消選取模式運作,以及開發人員應隨著受管理設定一起傳送的內容。

為應用程式限制使用預設值

如果應用程式限制的類型為 boolchoice整數多選字串,當管理員儲存受管理設定而不套用任何應用程式限制變更時,系統將套用預設值做為應用程式限制的值。

舉例來說,如果採用下列應用程式限制架構:

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

傳送到裝置的應用程式限制將:

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

不使用應用程式限制預設值

如果未提供預設值的應用程式限制包括 boolchoice整數多選字串,則管理員儲存受管理設定時,如果未對應用程式限制套用任何變更,就不會納入這些應用程式限制。

舉例來說,如果採用下列應用程式限制架構:

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

傳送到裝置的應用程式限制將:

"restrictions": [
    // Empty
]

在結構定義中使用套件

本節適用於套裝組合的應用程式限制:

在應用程式套件應用程式限制中,包含至少一項含有預設值的兒童應用程式限制

如果在 bundle 應用程式限制中,有至少一個具有類型 boolchoiceintegermulti-select字串的子項應用程式限制提供預設值,則當管理員儲存未套用任何預設值的受管理設定時,系統將排除預設值。

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

沒有預設值的所有兒童應用程式限制

如果在 bundle 應用程式限制中,所有具有 boolchoiceintegermulti-select字串的所有子項應用程式限制都沒有提供預設值,則管理員在儲存受管理設定時,如果未對應用程式限制套用任何變更,就不會納入應用程式限制。

舉例來說,如果採用下列應用程式限制架構:

"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 應用程式限制。如果子項應用程式限制的類型為 boolchoiceintegermulti-selectstring,就不適用此情況。

舉例來說,如果採用下列應用程式限制架構:

"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_array 應用程式限制中至少含有一個套件群組

如果設定了至少一個 bundle 群組,管理員儲存代管設定時,將會包含 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
            }
        }]
    }]
}]

bundle_array 應用程式限制中沒有任何組合群組

如果管理員沒有新增套裝組合群組,則不會納入 bundle_array 應用程式限制。傳送到裝置的應用程式限制將:

"restrictions": [
    // Empty
]