หากกำลังพัฒนาแอปสำหรับตลาดองค์กร คุณอาจต้องปฏิบัติตามข้อกำหนดเฉพาะที่กำหนดโดยนโยบายขององค์กร การกำหนดค่าที่มีการจัดการซึ่งก่อนหน้านี้เรียกว่าข้อจำกัดของแอปพลิเคชัน จะช่วยให้ผู้ดูแลระบบไอทีขององค์กรระบุการตั้งค่าสำหรับแอปจากระยะไกลได้ ความสามารถนี้มีประโยชน์อย่างยิ่งสำหรับแอปที่องค์กรอนุมัติซึ่งติดตั้งใช้งานในโปรไฟล์งาน
ตัวอย่างเช่น องค์กรอาจกำหนดให้แอปที่ได้รับอนุมัติต้องอนุญาตให้ผู้ดูแลระบบไอทีดำเนินการต่อไปนี้ได้
- อนุญาตหรือบล็อก URL สําหรับเว็บเบราว์เซอร์
- กำหนดค่าว่าจะอนุญาตให้แอปซิงค์เนื้อหาผ่านเครือข่ายมือถือหรือแค่ผ่าน Wi-Fi เท่านั้น
- กำหนดการตั้งค่าอีเมลของแอป
คู่มือนี้จะแสดงวิธีใช้การตั้งค่าการกำหนดค่าที่มีการจัดการในแอป หากต้องการดูตัวอย่างแอปที่มีการกำหนดค่าที่มีการจัดการ โปรดดูที่ ManagedConfigurations หากคุณเป็นนักพัฒนาแอป Enterprise Mobility Management (EMM) โปรดดูคู่มือ Android Management API
หมายเหตุ: การตั้งค่าการกําหนดค่าเหล่านี้เรียกว่าข้อจํากัดเนื่องจากเหตุผลทางประวัติศาสตร์ และนําไปใช้กับไฟล์และคลาสที่ใช้คํานี้ (เช่น RestrictionsManager
) อย่างไรก็ตาม ข้อจํากัดเหล่านี้สามารถนําไปใช้กับตัวเลือกการกําหนดค่าที่หลากหลายได้ ไม่ใช่แค่ข้อจํากัดฟังก์ชันการทํางานของแอป
ภาพรวมการกำหนดค่าระยะไกล
แอปจะกำหนดตัวเลือกการกำหนดค่าที่มีการจัดการที่ผู้ดูแลระบบไอทีสามารถตั้งค่าจากระยะไกลได้ การตั้งค่าเหล่านี้เป็นการตั้งค่าที่กำหนดเองซึ่งผู้ให้บริการการกำหนดค่าที่มีการจัดการจะเปลี่ยนแปลงได้ หากแอปทำงานในโปรไฟล์งาน ผู้ดูแลระบบไอทีจะเปลี่ยนการกำหนดค่าที่มีการจัดการของแอปได้
ผู้ให้บริการการกำหนดค่าที่มีการจัดการคือแอปอื่นที่ทำงานในอุปกรณ์เดียวกัน โดยปกติแล้วผู้ดูแลระบบไอทีจะเป็นผู้ควบคุมแอปนี้ ผู้ดูแลระบบไอทีจะสื่อสารการเปลี่ยนแปลงการกำหนดค่าไปยังแอปผู้ให้บริการการกำหนดค่าที่มีการจัดการ จากนั้นแอปดังกล่าวจะเปลี่ยนการกำหนดค่าในแอปของคุณ
วิธีระบุการกำหนดค่าที่มีการจัดการจากภายนอก
- ประกาศการกำหนดค่าที่มีการจัดการในไฟล์ Manifest ของแอป ซึ่งจะช่วยให้ผู้ดูแลระบบไอทีอ่านการกำหนดค่าของแอปผ่าน Google Play API ได้
- เมื่อใดก็ตามที่แอปกลับมาทำงานอีกครั้ง ให้ใช้ออบเจ็กต์
RestrictionsManager
เพื่อตรวจสอบการกำหนดค่าที่มีการจัดการในปัจจุบัน และเปลี่ยน UI และลักษณะการทํางานของแอปให้เป็นไปตามการกําหนดค่าเหล่านั้น - ฟัง Intent ของ
ACTION_APPLICATION_RESTRICTIONS_CHANGED
เมื่อได้รับข้อความนี้ ให้ตรวจสอบRestrictionsManager
เพื่อดูการกำหนดค่าที่มีการจัดการปัจจุบัน และทําการเปลี่ยนแปลงที่จําเป็นต่อลักษณะการทํางานของแอป
กำหนดการกำหนดค่าที่มีการจัดการ
แอปของคุณรองรับการกำหนดค่าที่มีการจัดการที่คุณต้องการกำหนด คุณต้องประกาศการกำหนดค่าที่มีการจัดการของแอปในไฟล์การกำหนดค่าที่มีการจัดการ และประกาศไฟล์การกำหนดค่าในไฟล์ Manifest การสร้างไฟล์การกําหนดค่าช่วยให้แอปอื่นๆ ตรวจสอบการกําหนดค่าที่มีการจัดการที่แอปของคุณระบุได้ พาร์ทเนอร์ EMM จะอ่านการกำหนดค่าของแอปได้โดยใช้ Google Play API
หากต้องการกำหนดตัวเลือกการกำหนดค่าระยะไกลของแอป ให้ใส่องค์ประกอบต่อไปนี้ในองค์ประกอบ
<application>
ของไฟล์ Manifest
<meta-data android:name="android.content.APP_RESTRICTIONS" android:resource="@xml/app_restrictions" />
สร้างไฟล์ชื่อ app_restrictions.xml
ในไดเรกทอรี res/xml
ของแอป โครงสร้างของไฟล์ดังกล่าวอธิบายไว้ในข้อมูลอ้างอิงสำหรับ RestrictionsManager
ไฟล์มีองค์ประกอบ <restrictions>
ระดับบนสุดรายการเดียว ซึ่งมีองค์ประกอบย่อย <restriction>
รายการเดียวสําหรับตัวเลือกการกําหนดค่าทั้งหมดที่แอปมี
หมายเหตุ: อย่าสร้างไฟล์การกําหนดค่าที่มีการจัดการเวอร์ชันแปล แอปของคุณมีได้เพียงไฟล์การกำหนดค่าที่มีการจัดการไฟล์เดียวเท่านั้น เพื่อให้การกำหนดค่าสอดคล้องกันสำหรับแอปของคุณในทุกภาษา
ในสภาพแวดล้อมขององค์กร EMM มักจะใช้สคีมาการกําหนดค่าที่มีการจัดการเพื่อสร้างคอนโซลระยะไกลสําหรับผู้ดูแลระบบไอที เพื่อให้ผู้ดูแลระบบกําหนดค่าแอปพลิเคชันจากระยะไกลได้
ผู้ให้บริการการกำหนดค่าที่มีการจัดการสามารถค้นหาแอปเพื่อดูรายละเอียดเกี่ยวกับการกำหนดค่าที่ใช้ได้ของแอป รวมถึงข้อความคำอธิบาย ผู้ให้บริการการกำหนดค่าและผู้ดูแลระบบไอทีสามารถเปลี่ยนการกำหนดค่าที่มีการจัดการของแอปได้ทุกเมื่อ แม้ว่าแอปจะไม่ทํางานอยู่ก็ตาม
ตัวอย่างเช่น สมมติว่าแอปของคุณกำหนดค่าจากระยะไกลให้อนุญาตหรือห้ามไม่ให้ดาวน์โหลดข้อมูลผ่านการเชื่อมต่อมือถือได้ แอปของคุณอาจมีองค์ประกอบ <restriction>
ดังนี้
<?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android="http://schemas.android.com/apk/res/android"> <restriction android:key="downloadOnCellular" android:title="@string/download_on_cell_title" android:restrictionType="bool" android:description="@string/download_on_cell_description" android:defaultValue="true" /> </restrictions>
คุณใช้แอตทริบิวต์ android:key
ของแต่ละการกําหนดค่าเพื่ออ่านค่าจากแพ็กเกจการกําหนดค่าที่มีการจัดการ ด้วยเหตุนี้ การกำหนดค่าแต่ละรายการจึงต้องมีสตริงคีย์ที่ไม่ซ้ำกัน และสตริงต้องไม่ได้รับการแปล โดยต้องระบุด้วยสตริงลิเทอรัล
หมายเหตุ: ในแอปเวอร์ชันที่ใช้งานจริง android:title
และ android:description
ควรดึงมาจากไฟล์ทรัพยากรที่แปลแล้ว ตามที่อธิบายไว้ในการแปลด้วยทรัพยากร
แอปจะกำหนดข้อจำกัดโดยใช้กลุ่มภายใน bundle_array
ตัวอย่างเช่น แอปที่มีตัวเลือกการเชื่อมต่อ VPN หลายรายการอาจกำหนดการกำหนดค่าเซิร์ฟเวอร์ VPN แต่ละรายการใน bundle
โดยมีกลุ่มหลายกลุ่มรวมกันเป็นอาร์เรย์กลุ่ม
<?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android="http://schemas.android.com/apk/res/android" > <restriction android:key="vpn_configuration_list" android:restrictionType="bundle_array"> <restriction android:key="vpn_configuration" android:restrictionType="bundle"> <restriction android:key="vpn_server" android:restrictionType="string"/> <restriction android:key="vpn_username" android:restrictionType="string"/> <restriction android:key="vpn_password" android:restrictionType="string"/> </restriction> </restriction> </restrictions>
ประเภทที่รองรับสำหรับองค์ประกอบ android:restrictionType
แสดงอยู่ในตารางที่ 1 และอยู่ในเอกสารอ้างอิงสำหรับ RestrictionsManager
และ RestrictionEntry
ตารางที่ 1 ประเภทและการใช้งานรายการข้อจำกัด
ประเภท | android:restrictionType | การใช้งานทั่วไป |
---|---|---|
TYPE_BOOLEAN
|
"bool" |
ค่าบูลีน ได้แก่ จริงหรือเท็จ |
TYPE_STRING
|
"string" |
ค่าสตริง เช่น ชื่อ |
TYPE_INTEGER
|
"integer" |
จํานวนเต็มที่มีค่าตั้งแต่ MIN_VALUE ถึง MAX_VALUE
|
TYPE_CHOICE
|
"choice" |
ค่าสตริงที่เลือกจาก android:entryValues ซึ่งมักจะแสดงเป็นรายการแบบเลือกรายการเดียว
|
TYPE_MULTI_SELECT
|
"multi-select" |
อาร์เรย์สตริงที่มีค่าที่เลือกจาก android:entryValues
ใช้เพื่อแสดงรายการแบบเลือกได้หลายรายการที่เลือกรายการได้มากกว่า 1 รายการ เช่น สำหรับเลือกภาพยนตร์/รายการทีวีที่เฉพาะเจาะจงเพื่อเพิ่มลงในรายการที่อนุญาต
|
TYPE_NULL
|
"hidden" |
ประเภทข้อจำกัดที่ซ่อนอยู่ ใช้ประเภทนี้กับข้อมูลที่จำเป็นต้องโอน แต่ไม่ควรแสดงต่อผู้ใช้ใน UI จัดเก็บค่าสตริงเดียว |
TYPE_BUNDLE_ARRAY
|
"bundle_array" |
ใช้สำหรับจัดเก็บอาร์เรย์ของข้อจำกัด
bundles พร้อมใช้งานใน Android 6.0 (API ระดับ 23)
|
หมายเหตุ: android:entryValues
เป็นรูปแบบที่เครื่องอ่านได้และไม่สามารถแปล ใช้ android:entries
เพื่อแสดงค่าที่มนุษย์อ่านได้ซึ่งแปลได้
แต่ละรายการต้องมีดัชนีที่สอดคล้องกันใน android:entryValues
ตรวจสอบการกำหนดค่าที่มีการจัดการ
แอปของคุณจะไม่ได้รับการแจ้งเตือนโดยอัตโนมัติเมื่อแอปอื่นๆ เปลี่ยนการตั้งค่าการกําหนดค่า แต่คุณต้องตรวจสอบการกำหนดค่าที่มีการจัดการเมื่อแอปเริ่มทำงานหรือกลับมาทำงานต่อ และคอยฟังความตั้งใจของระบบเพื่อดูว่าการกำหนดค่ามีการเปลี่ยนแปลงขณะที่แอปทำงานอยู่หรือไม่
หากต้องการดูการตั้งค่าการกําหนดค่าปัจจุบัน แอปของคุณจะใช้ออบเจ็กต์ RestrictionsManager
แอปของคุณควรตรวจสอบการกำหนดค่าที่มีการจัดการปัจจุบันในเวลาต่อไปนี้
- เมื่อแอปเริ่มทำงานหรือกลับมาทำงานต่อในเมธอด
onResume()
- เมื่อแอปได้รับการแจ้งเตือนการเปลี่ยนแปลงการกำหนดค่า ตามที่อธิบายไว้ในฟังการเปลี่ยนแปลงการกำหนดค่าที่มีการจัดการ
หากต้องการรับออบเจ็กต์ RestrictionsManager
ให้รับกิจกรรมปัจจุบันด้วย getActivity()
จากนั้นเรียกใช้เมธอด Activity.getSystemService()
ของกิจกรรมนั้น
Kotlin
var myRestrictionsMgr = activity?.getSystemService(Context.RESTRICTIONS_SERVICE) as RestrictionsManager
Java
RestrictionsManager myRestrictionsMgr = (RestrictionsManager) getActivity() .getSystemService(Context.RESTRICTIONS_SERVICE);
เมื่อคุณมี RestrictionsManager
แล้ว คุณสามารถรับการตั้งค่าการกําหนดค่าปัจจุบันได้โดยเรียกใช้เมธอด getApplicationRestrictions()
ดังนี้
Kotlin
var appRestrictions: Bundle = myRestrictionsMgr.applicationRestrictions
Java
Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();
หมายเหตุ: คุณยังเรียกข้อมูลการกําหนดค่าปัจจุบันด้วย UserManager
ได้ด้วยเพื่อความสะดวก โดยเรียกใช้ UserManager.getApplicationRestrictions()
วิธีนี้ทํางานเหมือนกับ RestrictionsManager.getApplicationRestrictions()
ทุกประการ
วิธี getApplicationRestrictions()
ต้องมีการอ่านจากพื้นที่เก็บข้อมูล จึงควรใช้อย่างประหยัด อย่าเรียกใช้เมธอดนี้ทุกครั้งที่ต้องการทราบการกําหนดค่าปัจจุบัน แต่คุณควรเรียกใช้เพียงครั้งเดียวเมื่อแอปเริ่มทำงานหรือกลับมาทำงานต่อ และแคช Bundle การกำหนดค่าที่มีการจัดการที่ดึงข้อมูลมา จากนั้นฟัง Intent ACTION_APPLICATION_RESTRICTIONS_CHANGED
เพื่อดูว่าการกำหนดค่ามีการเปลี่ยนแปลงขณะที่แอปทำงานอยู่หรือไม่ ตามที่อธิบายไว้ในฟังการเปลี่ยนแปลงการกำหนดค่าที่มีการจัดการ
การอ่านและใช้การกำหนดค่าที่มีการจัดการ
เมธอด getApplicationRestrictions()
จะแสดงผล Bundle
ที่มีคู่คีย์-ค่าสําหรับการกําหนดค่าแต่ละรายการที่ตั้งไว้ ค่าทั้งหมดเป็นประเภท Boolean
, int
, String
และ String[]
เมื่อคุณมีการกำหนดค่าที่มีการจัดการ Bundle
แล้ว คุณสามารถตรวจสอบการตั้งค่าการกำหนดค่าปัจจุบันด้วยเมธอด Bundle
มาตรฐานสำหรับประเภทข้อมูลเหล่านั้น เช่น getBoolean()
หรือ getString()
หมายเหตุ: การกำหนดค่าที่มีการจัดการ Bundle
จะมี 1 รายการสําหรับการกําหนดค่าทุกรายการที่ผู้ให้บริการการกําหนดค่าที่มีการจัดการตั้งค่าไว้อย่างชัดเจน อย่างไรก็ตาม คุณไม่สามารถคาดเดาได้ว่าจะมีการกำหนดค่าอยู่ในแพ็กเกจเพียงเพราะคุณกำหนดค่าเริ่มต้นไว้ในไฟล์ XML ของการกำหนดค่าที่มีการจัดการ
ขึ้นอยู่กับแอปของคุณที่จะดำเนินการตามความเหมาะสมตามการตั้งค่าการกำหนดค่าที่มีการจัดการในปัจจุบัน ตัวอย่างเช่น หากแอปมีการกําหนดค่าที่ระบุว่าสามารถดาวน์โหลดข้อมูลผ่านการเชื่อมต่อมือถือได้หรือไม่ และคุณพบว่ามีการกําหนดค่าเป็น false
คุณจะต้องปิดใช้การดาวน์โหลดข้อมูล ยกเว้นในกรณีที่อุปกรณ์มีการเชื่อมต่อ Wi-Fi ดังที่แสดงในโค้ดตัวอย่างต่อไปนี้
Kotlin
val appCanUseCellular: Boolean = if (appRestrictions.containsKey("downloadOnCellular")) { appRestrictions.getBoolean("downloadOnCellular") } else { // cellularDefault is a boolean using the restriction's default value cellularDefault } if (!appCanUseCellular) { // ...turn off app's cellular-download functionality // ...show appropriate notices to user }
Java
boolean appCanUseCellular; if (appRestrictions.containsKey("downloadOnCellular")) { appCanUseCellular = appRestrictions.getBoolean("downloadOnCellular"); } else { // cellularDefault is a boolean using the restriction's default value appCanUseCellular = cellularDefault; } if (!appCanUseCellular) { // ...turn off app's cellular-download functionality // ...show appropriate notices to user }
หากต้องการใช้ข้อจํากัดที่ฝังอยู่หลายรายการ ให้อ่านรายการข้อจํากัด bundle_array
เป็นการรวบรวมออบเจ็กต์ Parcelable
และแคสต์เป็น Bundle
ในตัวอย่างนี้ ระบบจะแยกวิเคราะห์ข้อมูลการกําหนดค่าของ VPN แต่ละรายการและใช้เพื่อสร้างรายการตัวเลือกการเชื่อมต่อเซิร์ฟเวอร์ ดังนี้
Kotlin
// VpnConfig is a sample class used store config data, not defined val vpnConfigs = mutableListOf<VpnConfig>() val parcelables: Array<out Parcelable>? = appRestrictions.getParcelableArray("vpn_configuration_list") if (parcelables?.isNotEmpty() == true) { // iterate parcelables and cast as bundle parcelables.map { it as Bundle }.forEach { vpnConfigBundle -> // parse bundle data and store in VpnConfig array vpnConfigs.add(VpnConfig() .setServer(vpnConfigBundle.getString("vpn_server")) .setUsername(vpnConfigBundle.getString("vpn_username")) .setPassword(vpnConfigBundle.getString("vpn_password"))) } } if (vpnConfigs.isNotEmpty()) { // ...choose a VPN configuration or prompt user to select from list }
Java
// VpnConfig is a sample class used store config data, not defined List<VpnConfig> vpnConfigs = new ArrayList<>(); Parcelable[] parcelables = appRestrictions.getParcelableArray("vpn_configuration_list"); if (parcelables != null && parcelables.length > 0) { // iterate parcelables and cast as bundle for (int i = 0; i < parcelables.length; i++) { Bundle vpnConfigBundle = (Bundle) parcelables[i]; // parse bundle data and store in VpnConfig array vpnConfigs.add(new VpnConfig() .setServer(vpnConfigBundle.getString("vpn_server")) .setUsername(vpnConfigBundle.getString("vpn_username")) .setPassword(vpnConfigBundle.getString("vpn_password"))); } } if (!vpnConfigs.isEmpty()) { // ...choose a VPN configuration or prompt user to select from list }
ฟังการเปลี่ยนแปลงการกำหนดค่าที่มีการจัดการ
เมื่อใดก็ตามที่มีการเปลี่ยนแปลงการกำหนดค่าที่มีการจัดการของแอป ระบบจะเรียกใช้ Intent ACTION_APPLICATION_RESTRICTIONS_CHANGED
แอปของคุณต้องคอยฟัง Intent นี้เพื่อให้คุณเปลี่ยนลักษณะการทํางานของแอปได้เมื่อการตั้งค่าการกําหนดค่าเปลี่ยนแปลง
หมายเหตุ: ระบบจะส่ง Intent ACTION_APPLICATION_RESTRICTIONS_CHANGED
ไปยัง Listener ที่ลงทะเบียนแบบไดนามิกเท่านั้น ไม่ใช่ Listener ที่ประกาศไว้ในไฟล์ Manifest ของแอป
โค้ดต่อไปนี้แสดงวิธีลงทะเบียน Broadcast Receiver แบบไดนามิกสําหรับ Intent นี้
Kotlin
val restrictionsFilter = IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED) val restrictionsReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { // Get the current configuration bundle val appRestrictions = myRestrictionsMgr.applicationRestrictions // Check current configuration settings, change your app's UI and // functionality as necessary. } } registerReceiver(restrictionsReceiver, restrictionsFilter)
Java
IntentFilter restrictionsFilter = new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED); BroadcastReceiver restrictionsReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Get the current configuration bundle Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions(); // Check current configuration settings, change your app's UI and // functionality as necessary. } }; registerReceiver(restrictionsReceiver, restrictionsFilter);
หมายเหตุ: โดยปกติแล้ว แอปไม่จำเป็นต้องได้รับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงการกำหนดค่าเมื่อหยุดชั่วคราว แต่คุณควรยกเลิกการลงทะเบียนตัวรับการออกอากาศเมื่อแอปหยุดชั่วคราว เมื่อแอปกลับมาทำงานอีกครั้ง ให้ตรวจสอบการกำหนดค่าที่มีการจัดการปัจจุบันก่อน (ตามที่ได้อธิบายไว้ในตรวจสอบการกำหนดค่าที่มีการจัดการ) จากนั้นลงทะเบียนตัวรับการออกอากาศเพื่อให้แน่ใจว่าคุณจะได้รับแจ้งเกี่ยวกับการเปลี่ยนแปลงการกำหนดค่าที่เกิดขึ้นขณะที่แอปทำงานอยู่
ส่งความคิดเห็นเกี่ยวกับการกำหนดค่าที่มีการจัดการไปยัง EMM
หลังจากใช้การเปลี่ยนแปลงการกำหนดค่าที่มีการจัดการกับแอปแล้ว แนวทางปฏิบัติแนะนำคือการแจ้งสถานะการเปลี่ยนแปลงให้ EMM ทราบ Android รองรับฟีเจอร์ที่เรียกว่าสถานะแอปที่มีคีย์ ซึ่งคุณใช้เพื่อส่งความคิดเห็นได้ทุกครั้งที่แอปพยายามใช้การเปลี่ยนแปลงการกำหนดค่าที่มีการจัดการ ความคิดเห็นนี้อาจใช้เป็นการยืนยันว่าแอปของคุณตั้งค่าการกำหนดค่าที่มีการจัดการสำเร็จ หรืออาจมีข้อความแสดงข้อผิดพลาดหากแอปใช้การเปลี่ยนแปลงที่ระบุไม่สำเร็จ
ผู้ให้บริการ EMM สามารถเรียกข้อมูลความคิดเห็นนี้และแสดงในคอนโซลเพื่อให้ผู้ดูแลระบบไอทีดูได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ได้ที่ส่งความคิดเห็นเกี่ยวกับแอปไปยัง EMM รวมถึงดูคู่มือโดยละเอียดเกี่ยวกับวิธีเพิ่มการรองรับความคิดเห็นในแอป
ตัวอย่างโค้ดเพิ่มเติม
ตัวอย่าง ManagedConfigurations แสดงการใช้งาน API ที่ครอบคลุมในหน้านี้เพิ่มเติม
การเพิ่มแอปในรายการที่อนุญาต/รายการที่บล็อกในโปรไฟล์ส่วนตัว
แอปสโตร์ของบุคคลที่สามอาจแสดงความสนใจในการใช้การกำหนดค่าที่มีการจัดการเพื่อให้มีวิธีที่น่าเชื่อถือในการใช้รายการที่บล็อกหรือรายการที่อนุญาตของแอปกับทั้งโปรไฟล์ส่วนตัวและฟีเจอร์พื้นที่ส่วนตัวสำหรับผู้บริโภค ซึ่งเป็นพื้นที่ส่วนตัวเพิ่มเติมสำหรับผู้ใช้ในการเก็บแอปที่มีความละเอียดอ่อน หากคุณพัฒนาแอปสโตร์สำหรับการใช้งานขององค์กรและต้องการใช้ฟีเจอร์นี้ ให้ส่ง แบบฟอร์มนี้เพื่อแสดงความสนใจและเลือกสนใจในรายการที่อนุญาตของแอปสโตร์ของบุคคลที่สามเป็นเหตุผลในการตอบกลับในแบบฟอร์ม