Mendukung konfigurasi terkelola

Beberapa aplikasi yang didesain untuk perusahaan menyertakan setelan bawaan yang disebut konfigurasi terkelola yang dapat dikonfigurasi oleh admin IT dari jarak jauh. Misalnya, aplikasi mungkin memiliki opsi untuk hanya menyinkronkan data saat perangkat terhubung ke Wi-Fi. Kemampuan admin IT untuk menentukan konfigurasi terkelola dan menerapkannya ke perangkat adalah persyaratan bagi semua kumpulan solusi. Ada dua cara untuk mendukung konfigurasi terkelola di konsol EMM:

  • Buat UI Anda sendiri dan terapkan setelannya melalui managedConfiguration di ApplicationPolicy.
  • Tambahkan iframe konfigurasi terkelola ke konsol Anda (petunjuk dijelaskan di bawah) dan terapkan setelan melalui managedConfigurationTemplate di ApplicationPolicy


Iframe konfigurasi terkelola adalah UI yang dapat disematkan yang memungkinkan admin IT menyimpan, mengedit, dan menghapus setelan konfigurasi terkelola aplikasi. Misalnya, Anda dapat menampilkan tombol (atau elemen UI serupa) di halaman detail atau setelan aplikasi yang membuka iframe.

Tindakan yang tersedia untuk admin IT dari iframe

iframe mcm
Gambar 1. Contoh iframe konfigurasi terkelola untuk Gmail.

Menetapkan dan menyimpan profil konfigurasi

Iframe akan mengambil dan menampilkan skema konfigurasi terkelola untuk aplikasi yang ditentukan. Dalam iframe, admin IT dapat menetapkan konfigurasi dan menyimpannya sebagai profil konfigurasi. Setiap kali admin IT menyimpan profil konfigurasi baru, iframe akan menampilkan ID unik yang disebut mcmId. Hal ini memungkinkan admin IT membuat beberapa profil untuk aplikasi yang sama.

Mengedit profil konfigurasi

Iframe mampu menampilkan profil konfigurasi tersimpan. Admin IT dapat memperbarui setelan dalam profil dan menyimpan perubahan mereka.

Menghapus profil konfigurasi

Admin IT dapat menghapus profil konfigurasi dari iframe. Fitur ini dinonaktifkan secara default.

Tambahkan iframe ke konsol Anda

Membuat token web

Gunakan enterprises.webTokens.create untuk membuat token web yang mengidentifikasi perusahaan, dan tetapkan iframeFeature ke MANAGED_CONFIGURATIONS. Anda harus menyertakan token yang ditampilkan, bersama dengan parameter lainnya, saat merender iframe di konsol Anda.

Merender iframe

Berikut adalah contoh cara merender iframe konfigurasi terkelola:

<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>

Parameter URL

Tabel di bawah ini mencantumkan semua parameter yang tersedia untuk URL iframe.

ParameterWajibDeskripsi
token Ya Token yang ditampilkan dari Enterprises.createWebToken.
packageName Ya ID produk aplikasi. Misalnya, com.google.android.gm.
mcmId Tidak ID profil konfigurasi terkelola.
canDelete Tidak Jika TRUE, akan mengaktifkan tombol di iframe yang memungkinkan admin IT menghapus profil konfigurasi terkelola. Jika FALSE (nilai default), tombol akan dinonaktifkan.
locale Tidak Tag bahasa BCP 47 yang diformat dengan baik yang digunakan untuk melokalkan konten di iframe. Jika tidak ditentukan, nilai defaultnya adalah en_US.

Acara Iframe

Anda juga harus menangani peristiwa berikut sebagai bagian dari integrasi Anda.

AcaraDeskripsi
onconfigupdated Pengguna memperbarui profil konfigurasi terkelola yang ada atau membuat profil baru. Tindakan ini akan menampilkan objek yang berisi:
{
  "mcmId": The ID of the managed configurations profile.
  "name": The name of the updated or newly created managed configurations profile.
}
onconfigdeleted Pengguna menghapus profil konfigurasi terkelola yang ada. Tindakan ini akan menampilkan objek yang berisi:
{
  "mcmId": The ID of the managed configurations profile.
}

Contoh di bawah menunjukkan cara memproses onconfigupdated, sebagai contoh:

iframe.register('onconfigupdated', function(event) {
  console.log(event);
}, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);

Update pada skema konfigurasi terkelola aplikasi

Jika developer memperbarui skema konfigurasi terkelola aplikasi, profil konfigurasi yang tersimpan akan otomatis diperbarui. Misalnya, jika developer menghapus opsi, opsi tersebut akan dihapus dari semua profil konfigurasi yang ada untuk aplikasi. Jika developer menambahkan opsi, nilai default untuk opsi tersebut (ditentukan oleh developer) akan ditambahkan ke semua profil konfigurasi yang ada untuk aplikasi tersebut.

Menerapkan profil konfigurasi ke kebijakan

Setiap profil konfigurasi disimpan sebagai mcmId unik. Untuk menerapkan profil konfigurasi ke kebijakan, tentukan mcmId di managedConfigurationTemplate.


Memahami perilaku pilih/batalkan pilihan

Iframe konfigurasi terkelola kini memungkinkan admin IT secara eksplisit membatalkan pilihan batasan aplikasi dari konfigurasi terkelola saat mereka tidak membutuhkannya. Hal ini adalah perubahan dari perilaku sebelumnya dan mungkin berdampak pada batasan yang dikirim ke aplikasi Anda berdasarkan pilihan admin.

Bagian di bawah ini menguraikan perilaku iframe konfigurasi terkelola terhadap pola pembatalan pilihan baru ini dan apa yang dapat diharapkan oleh developer untuk dikirim sebagai bagian dari konfigurasi terkelola mereka.

Menggunakan nilai default untuk pembatasan aplikasi

Jika aplikasi melakukan pembatasan dengan jenis bool, pilihan, bilangan bulat, multi-pilihan, atau string diberikan dengan nilai default, nilai default akan diterapkan sebagai nilai pembatasan aplikasi saat admin menyimpan konfigurasi terkelola tanpa menerapkan perubahan apa pun pada pembatasan aplikasi tersebut.

Misalnya, dengan skema pembatasan aplikasi berikut:

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

Pembatasan aplikasi yang dikirim ke perangkat akan:

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

Tanpa menggunakan nilai default untuk pembatasan aplikasi

Jika aplikasi melakukan pembatasan dengan jenis bool, choice, integer, multi-pilihan, atau string tidak diberi nilai default, pembatasan aplikasi ini tidak akan disertakan saat admin menyimpan konfigurasi terkelola tanpa menerapkan perubahan pada pembatasan aplikasi tersebut.

Misalnya, dengan skema pembatasan aplikasi berikut:

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

Pembatasan aplikasi yang dikirim ke perangkat akan:

"restrictions": [
    // Empty
]

Menggunakan paket dalam skema

Bagian ini berlaku untuk pembatasan aplikasi paket:

Memiliki minimal satu pembatasan aplikasi turunan dengan nilai default dalam pembatasan aplikasi paket

Jika dalam pembatasan aplikasi paket setidaknya satu pembatasan aplikasi turunan dengan jenis bool, pilihan, bilangan bulat, multi-pilihan atau string diberikan dengan nilai default, nilai default akan diterapkan sebagai nilai batasan aplikasi dan batasan tanpa nilai default akan dikecualikan saat admin menyimpan konfigurasi terkelola tanpa menerapkan perubahan apa pun pada batasan aplikasi tersebut.

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

Pembatasan aplikasi yang dikirim ke perangkat akan:

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

Semua pembatasan aplikasi turunan tanpa nilai default

Jika dalam pembatasan aplikasi paket, semua batasan aplikasi turunan dengan jenis bool, pilihan, bilangan bulat, multi-pilihan, atau string tidak diberi nilai default, pembatasan aplikasi paket tidak akan disertakan saat admin menyimpan konfigurasi terkelola tanpa menerapkan perubahan apa pun pada batasan aplikasi tersebut.

Misalnya, dengan skema pembatasan aplikasi berikut:

"restrictions": [{
    "key": "bundle_key",
    "restrictionType": "bundle",
    "nestedRestriction": [{
            "key": "bool_key_1",
            "restrictionType": "bool",
            // defaultValue absent.
        },
        {
            "key": "bool_key_2",
            "restrictionType": "bool"
            // defaultValue absent.
        }
    ]
}]

Pembatasan aplikasi yang dikirim ke perangkat akan:

"restrictions": [
    // Empty
]

Menggunakan bundle_array dalam skema Anda

Bagian ini berlaku untuk batasan aplikasi bundle_array. Tidak relevan jika aplikasi turunan membatasi dengan jenis bool, pilihan, bilangan bulat, multi-pilihan, atau string memiliki nilai default.

Misalnya, dengan skema pembatasan aplikasi berikut:

"restrictions": [{
    "key": "bundle_array_key",
    "restrictionType": "bundleArray",
    "nestedRestriction": [{
        "key": "bundle_key",
        "restrictionType": "bundle",
        "nestedRestriction": [{
            "key": "bool_key",
            "restrictionType": "bool",
            "defaultValue": {
                "type": "bool",
                "valueBool": true
            }
        }]
    }]
}]

Memiliki setidaknya satu grup paket dalam batasan aplikasi bundle_array

Jika setidaknya satu grup bundle telah ditetapkan, pembatasan aplikasi bundle_array akan disertakan saat admin menyimpan konfigurasi terkelola.

Pembatasan aplikasi yang dikirim ke perangkat akan:

"restrictions": [{
    "key": "bundle_array_key",
    "restrictionType": "bundleArray",
    "nestedRestriction": [{
        "key": "bundle_key",
        "restrictionType": "bundle",
        "nestedRestriction": [{
            "key": "bool_key",
            "restrictionType": "bool",
            "value": {
                "type": "bool",
                "valueBool": true
            }
        }]
    }]
}]

Jika satu batasan atau grup paket disimpan, semua batasan/paket dalam seluruh bundle_array akan ditetapkan berdasarkan prioritas berikut:

  • nilai yang dipilih admin
  • nilai default yang tercantum untuk paket/batasan tersebut.
  • nilai yang ditampilkan di iFrame jika tidak ada nilai default

Tidak ada grup paket dalam batasan aplikasi bundle_array

Pembatasan aplikasi bundle_array tidak akan disertakan saat admin menyimpan konfigurasi terkelola tanpa menambahkan grup paket. Pembatasan aplikasi yang dikirim ke perangkat akan:

"restrictions": [
    // Empty
]