Fitur peran aplikasi memungkinkan admin IT memberikan hak istimewa khusus ke aplikasi terkelola di perangkat yang didukung Android. Dengan menetapkan peran tertentu, aplikasi dapat dikecualikan dari pembatasan daya dan latar belakang, penangguhan, hibernasi (di Android 14+) dan kontrol pengguna (yaitu mencakup tindakan pengguna seperti menghentikan paksa dan menghapus data aplikasi) dinonaktifkan (di Android 11+), sehingga aplikasi dapat menjalankan fungsi pentingnya tanpa gangguan. Selain itu, aplikasi dapat diberi tahu tentang peran yang ditetapkan, sehingga dapat melakukan bootstrapping sendiri tanpa campur tangan pengguna.
Prasyarat
Perangkat dikelola oleh EMM berbasis AMAPI (EMM yang menggunakan DPC kustom tidak didukung).
Menyiapkan aplikasi untuk menggunakan fitur ini
Integrasi dengan AMAPI SDK hanya diperlukan jika aplikasi ingin diberi tahu tentang peran yang ditetapkan yang memungkinkannya melakukan booting sendiri (yaitu, peluncuran otomatis tanpa interaksi pengguna).
Mengintegrasikan dengan AMAPI SDK di aplikasi Anda
Anda dapat menemukan informasi selengkapnya tentang AMAPI SDK dan cara menambahkannya ke aplikasi Anda di panduan integrasi AMAPI SDK.
Menambahkan metadata yang diperlukan ke manifes aplikasi
Android Device Policy (ADP) perlu mengetahui ComponentName
kelas Anda yang menerapkan NotificationReceiverService
untuk memberi tahu aplikasi Anda tentang peran yang ditetapkan. Anda harus memberi tag pada layanan di AndroidManifest.xml
dengan tepat agar dapat ditemukan secara otomatis oleh ADP.
- Aplikasi Anda harus memiliki tepat satu layanan yang merupakan
enabled
dan memilikimeta-data
denganandroid:name
sama dengancom.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES
- Layanan ini harus memiliki
android:exported
yang ditetapkan ketrue
android:value
darimeta-data
harus ditetapkan ke string kosong
<service
android:name=".MyNotificationReceiverService"
android:exported="true">
<meta-data android:name="com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES" android:value="" />
</service>
Jika Anda sedang menguji peran COMPANION_APP
, Anda juga harus menambahkan meta-data
berikut ke layanan Anda agar Android Device Policy dapat mengirimkan update status perintah lokal ke aplikasi Anda:
<meta-data android:name="com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_COMMAND_STATUS" android:value="" />
Buat layanan yang memperluas NotificationReceiverService (atau perbarui yang ada)
Buat atau perbarui NotificationReceiverService
yang ada dan terapkan
AppRolesListener
untuk memantau peran yang ditetapkan ke aplikasi Anda. Hanya
getAppRolesListener()
yang diperlukan untuk memantau peran yang ditetapkan ke
aplikasi Anda. Jika aplikasi Anda diberi peran COMPANION_APP
, Anda juga harus menerapkan
getCommandListener()
:
import android.util.Log
import com.google.android.managementapi.approles.AppRolesListener
import com.google.android.managementapi.approles.model.AppRolesSetRequest
import com.google.android.managementapi.approles.model.AppRolesSetResponse
import com.google.android.managementapi.commands.CommandListener
import com.google.android.managementapi.commands.model.Command
import com.google.android.managementapi.notification.NotificationReceiverService
class MyNotificationReceiverService : NotificationReceiverService() {
// If your app wants to listen for roles assigned
override fun getAppRolesListener(): AppRolesListener =
object : AppRolesListener {
override fun onAppRolesSet(request: AppRolesSetRequest): AppRolesSetResponse {
val roleTypes = request.roles.map { role -> role.roleType }
Log.i(TAG, "onAppRolesSet: $roleTypes")
return AppRolesSetResponse.getDefaultInstance()
}
}
// If your app wants to listen for local command status updates
// Only relevant for COMPANION_APP role
override fun getCommandListener(): CommandListener {
return object : CommandListener {
override fun onCommandStatusChanged(command: Command) {
Log.i(TAG, "onCommandStatusChanged")
}
}
}
private companion object {
const val TAG = "MyNotificationReceiverService"
}
}
Aplikasi Anda dapat diberi tahu beberapa kali jika perannya berubah beberapa kali. Jika semua peran dihapus, aplikasi Anda akan tetap diberi tahu dengan daftar peran kosong. Notifikasi ini akan mengeluarkan aplikasi Anda dari status berhenti dan bersama dengan
pengecualian yang diberikan untuk aplikasi Anda, aplikasi Anda dapat melakukan bootstrap sendiri tanpa
interaksi pengguna. Berkat notifikasi dan pengecualian peran aplikasi, aplikasi Anda dapat memproses siaran ACTION_BOOT_COMPLETED
. Jika aplikasi Anda bergantung pada
konfigurasi terkelolanya untuk melakukan bootstrap sendiri, lihat
Menyiapkan konfigurasi terkelola tentang cara membaca dan memantau
perubahan.
Menyediakan perangkat dengan kebijakan peran aplikasi
Developer aplikasi dapat menguji penetapan peran aplikasi ke aplikasi mereka menggunakan EMM atau mengikuti panduan memulai Android Management API. Notebook Colab AMAPI memungkinkan Anda mendaftarkan perusahaan, membuat kebijakan,dan menyediakan perangkat.
Menetapkan kebijakan untuk aplikasi Anda dengan peran aplikasi
Siapkan policy
dengan peran aplikasi yang dimaksudkan untuk dimiliki aplikasi Anda menggunakan
ApplicationPolicy.roles
.
Contoh berikut menunjukkan cara mengonfigurasi peran untuk aplikasi MTD:
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
]
}
]
}
Sebelum menetapkan peran seperti yang ditentukan dalam kebijakan, sistem akan memeriksa apakah sidik jari sertifikat kunci penandatanganan aplikasi di perangkat cocok dengan yang ada di Play Store.
Jika sidik jari berbeda, peran tidak akan ditetapkan ke aplikasi dan NonComplianceReason.APP_SIGNING_CERT_MISMATCH
ketidakpatuhan akan dilaporkan ke EMM.
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"signingKeyCerts": [
{ "signingKeyCertFingerprintSha256": "base64-encoded-sha256" }
],
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
]
}
]
}
Jika aplikasi Anda memiliki konfigurasi terkelola, admin IT dapat menyiapkan konfigurasi awal untuk restriction
yang relevan dalam kebijakan aplikasi:
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
],
"managedConfiguration": {
"<key>": "<value>"
}
}
]
}