ฟีเจอร์บทบาทของแอปพลิเคชันช่วยให้ผู้ดูแลระบบไอทีสามารถให้สิทธิ์พิเศษแก่ แอปพลิเคชันที่มีการจัดการในอุปกรณ์ที่ใช้ Android การกำหนด บทบาทที่เฉพาะเจาะจงจะช่วยให้แอปได้รับการยกเว้นจากข้อจำกัดด้านพลังงานและข้อจำกัดในเบื้องหลัง การระงับ การหยุดทำงานชั่วคราว (ใน Android 14 ขึ้นไป) และปิดใช้การควบคุมของผู้ใช้ (เช่น การดำเนินการของผู้ใช้ อย่างการบังคับหยุดและล้างข้อมูลแอป) (ใน Android 11 ขึ้นไป) เพื่อให้แอปสามารถทำหน้าที่สำคัญได้โดยไม่หยุดชะงัก นอกจากนี้ แอปจะได้รับการแจ้งเตือนเกี่ยวกับบทบาทที่ได้รับมอบหมาย ซึ่งช่วยให้แอปเริ่มต้น ตัวเองได้โดยไม่ต้องให้ผู้ใช้จัดการ
ข้อกำหนดเบื้องต้น
อุปกรณ์ได้รับการจัดการโดย EMM ที่ใช้ AMAPI (ระบบไม่รองรับ EMM ที่ใช้ DPC ที่กำหนดเอง)
เตรียมแอปให้พร้อมสำหรับการใช้ฟีเจอร์
การผสานรวมกับ AMAPI SDK จะจำเป็นก็ต่อเมื่อแอปต้องการรับการแจ้งเตือน เกี่ยวกับบทบาทที่ได้รับมอบหมาย ซึ่งจะช่วยให้แอปเริ่มต้นตัวเองได้ (เช่น เปิดตัวโดยอัตโนมัติ โดยไม่ต้องมีการโต้ตอบจากผู้ใช้)
ผสานรวมกับ AMAPI SDK ในแอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับ AMAPI SDK และวิธีเพิ่มลงในแอปได้ในคู่มือการผสานรวม AMAPI SDK
เพิ่มข้อมูลเมตาที่จำเป็นลงในไฟล์ Manifest ของแอป
Device Policy ของ Android (ADP) จำเป็นต้องทราบComponentName
ของชั้นเรียน
ซึ่งใช้ NotificationReceiverService
เพื่อแจ้งเตือนแอปเกี่ยวกับ
บทบาทที่ได้รับมอบหมาย คุณต้องติดแท็กบริการใน AndroidManifest.xml
อย่างเหมาะสม
เพื่อให้ ADP ค้นพบได้โดยอัตโนมัติ
- แอปต้องมีบริการ
enabled
เพียง 1 รายการและมีmeta-data
ที่มีandroid:name
เท่ากับcom.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES
- บริการนี้ต้องตั้งค่า
android:exported
เป็นtrue
- ต้องตั้งค่า
android:value
ของmeta-data
เป็นสตริงว่างเปล่า
<service
android:name=".MyNotificationReceiverService"
android:exported="true">
<meta-data android:name="com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES" android:value="" />
</service>
หากคุณกำลังทดสอบบทบาท COMPANION_APP
คุณควรเพิ่มข้อมูลต่อไปนี้
meta-data
ลงในบริการด้วย เพื่อให้ Android Device Policy ส่งการอัปเดตสถานะคำสั่งในเครื่อง
ไปยังแอปได้
<meta-data android:name="com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_COMMAND_STATUS" android:value="" />
สร้างบริการที่ขยาย NotificationReceiverService (หรืออัปเดตบริการที่มีอยู่)
สร้างหรืออัปเดต NotificationReceiverService
ที่มีอยู่ และใช้ AppRolesListener
เพื่อฟังบทบาทที่กำหนดให้กับแอปของคุณ เฉพาะ getAppRolesListener()
เท่านั้นที่จำเป็นสำหรับการฟังบทบาทที่กำหนดให้กับแอปของคุณ หากแอปได้รับกำหนดบทบาท COMPANION_APP
คุณควรใช้ 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"
}
}
แอปของคุณอาจได้รับการแจ้งเตือนหลายครั้งหากบทบาทมีการเปลี่ยนแปลงหลายครั้ง หากนำบทบาททั้งหมดออก แอปจะยังคงได้รับการแจ้งเตือนพร้อมรายการบทบาทที่ว่างเปล่า การแจ้งเตือนนี้จะทำให้แอปของคุณออกจากสถานะหยุดทำงาน และเมื่อรวมกับ
ข้อยกเว้นที่ได้รับสำหรับแอปแล้ว แอปจะเริ่มต้นตัวเองได้โดยไม่ต้อง
มีการโต้ตอบจากผู้ใช้ การแจ้งเตือนและการยกเว้นสำหรับบทบาทของแอปช่วยให้แอปของคุณ
รับฟังการออกอากาศของ ACTION_BOOT_COMPLETED
ได้ หากแอปของคุณต้องใช้
การกำหนดค่าที่มีการจัดการเพื่อเริ่มต้นด้วยตัวเอง โปรดดูวิธีอ่านและฟัง
การเปลี่ยนแปลงในตั้งค่าการกำหนดค่าที่มีการจัดการ
จัดสรรอุปกรณ์ด้วยนโยบายบทบาทของแอป
นักพัฒนาแอปสามารถทดสอบการกำหนดบทบาทของแอปให้กับแอปพลิเคชันของตนโดยใช้ EMM หรือทำตามการเริ่มต้นใช้งาน Android Management API อย่างรวดเร็ว สมุดบันทึก Colab ของ AMAPI ช่วยให้คุณลงทะเบียนองค์กร สร้างนโยบาย และจัดสรรอุปกรณ์ได้
ตั้งค่านโยบายสำหรับแอปด้วยบทบาทของแอป
ตั้งค่า policy
โดยใช้บทบาทของแอปที่แอปของคุณควรมีโดยใช้
ApplicationPolicy.roles
ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าบทบาทสำหรับแอป MTD
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
]
}
]
}
ก่อนที่จะมอบหมายบทบาทตามที่ระบุไว้ในนโยบาย ระบบจะตรวจสอบว่าลายนิ้วมือของใบรับรองคีย์การลงนามของแอปในอุปกรณ์ตรงกับลายนิ้วมือจาก Play Store
หากลายนิ้วมือแตกต่างกัน ระบบจะไม่กำหนดบทบาทให้กับ
แอปและNonComplianceReason.APP_SIGNING_CERT_MISMATCH
จะรายงานการไม่ปฏิบัติตามข้อกำหนดไปยัง EMM
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"signingKeyCerts": [
{ "signingKeyCertFingerprintSha256": "base64-encoded-sha256" }
],
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
]
}
]
}
หากแอปมีการกำหนดค่าที่มีการจัดการ ผู้ดูแลระบบไอทีจะตั้งค่าเริ่มต้นสำหรับ restriction
ที่เกี่ยวข้องในนโยบายแอปพลิเคชันได้โดยทำดังนี้
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
],
"managedConfiguration": {
"<key>": "<value>"
}
}
]
}