支援受管理的設定

部分專為企業設計的應用程式提供名為「受管理設定」的內建設定,IT 管理員可以從遠端進行設定。舉例來說,應用程式可以選擇只在裝置連上 Wi-Fi 時同步處理資料。所有「解決方案集」都必須提供 IT 管理員指定代管設定的功能,並套用至裝置。您可以透過以下兩種方式在 EMM 控制台支援受管理的設定:

  • 建立自己的 UI,並透過 ApplicationPolicy 中的 managedConfiguration 套用設定。
  • 將受管理的設定 iframe 新增至主控台 (操作說明請見下文),然後透過 ApplicationPolicy 中的 managedConfigurationTemplate 套用設定。


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

iframe 可供 IT 管理員執行的動作

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

設定及儲存組態設定檔

iframe 會擷取並顯示特定應用程式的受管理設定結構定義。在 iframe 中,IT 管理員可以自行調整設定,並將結構定義儲存為設定設定檔。每次 IT 管理員儲存新的設定檔時,iframe 都會傳回名為 mcmId 的專屬 ID。 如此一來,IT 管理員就能為同一個應用程式建立多個設定檔。

編輯組態設定檔

iframe 可顯示已儲存的組態設定檔。IT 管理員可以更新設定檔內的設定,並儲存所做變更。

刪除組態設定檔

IT 管理員可以刪除 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>

網址參數

下表列出 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);

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

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

將組態設定檔套用至政策

每個組態設定檔都會儲存為不重複的 mcmId。如要將設定檔套用至政策,請在 managedConfigurationTemplate 中指定 mcmId


瞭解選取/取消選取行為

受管理的設定 iframe 可讓 IT 管理員在不需要時,明確取消選取受管理設定的應用程式限制。這項變更是變更之前的行為,可能會影響傳送至應用程式的限制 (視管理員選取的設定而定)。

下節將概述受管理設定 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 應用程式限制中,至少有一個子項應用程式限制類型為 boolchoice整數複選字串,且已提供預設值,則系統會套用預設值做為應用程式限制的值,而未設定預設值的管理員在儲存該應用程式限制時,系統便會將其排除。

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

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

如果在套裝組合應用程式限制所有子項應用程式限制,類型為 boolchoice整數複選字串,但未以預設值提供,那麼當管理員儲存受管理設定時,如未對應用程式限制套用任何變更,系統就不會納入套裝組合

舉例來說,採用下列應用程式限制結構定義:

"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 應用程式限制。如果子項應用程式限制類型為 boolchoice整數複選字串類型,則沒有預設值。

舉例來說,採用下列應用程式限制結構定義:

"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 中的所有限制/套裝組合將依下列優先順序設定:

  • 管理員選擇的值
  • 該組合/限制所列出的預設值。
  • 如果沒有預設值,iFrame 中顯示的值

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

如果管理員在沒有新增套裝組合群組的情況下儲存受管理設定,系統就不會納入 bundle_array 應用程式限制。傳送至裝置的應用程式限制如下:

"restrictions": [
    // Empty
]