ตั้งแต่ Android 12 เป็นต้นไป Android จะรองรับการกำหนดค่าสิทธิ์บริการ TS.43 ซึ่งเป็นข้อกำหนดของ GSMA ที่กำหนดขั้นตอนการยืนยันสิทธิ์สำหรับการเปิดใช้งานบริการต่างๆ รวมถึง Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), การเปิดใช้งานบริการในอุปกรณ์ (ODSA) ของอุปกรณ์เสริม eSIM (ที่เชื่อมโยงกับอุปกรณ์ที่ส่งคำขอ) และข้อมูลแพ็กเกจอินเทอร์เน็ต
Android มีฟีเจอร์สิทธิ์บริการ IMS เพื่อรองรับข้อกำหนดนี้ ซึ่งช่วยให้ผู้ให้บริการสามารถแจ้งสถานะ ของบริการเครือข่าย IP Multimedia Subsystem (IMS) ให้กับอุปกรณ์เคลื่อนที่ได้ ฟีเจอร์การให้สิทธิ์นี้ ช่วยให้อุปกรณ์ค้นหาเซิร์ฟเวอร์การให้สิทธิ์ของผู้ให้บริการได้ตามที่กำหนดไว้ใน ข้อกำหนด GSMA TS.43 สำหรับสถานะการให้สิทธิ์ IMS โดยใช้ การตรวจสอบสิทธิ์ EAP-AKA โดยไม่ต้องให้ผู้ใช้ป้อนข้อมูลเข้าสู่ระบบ ด้วยตนเอง
ผู้ให้บริการที่มีเซิร์ฟเวอร์การให้สิทธิ์ IMS สามารถใช้ฟีเจอร์การให้สิทธิ์บริการ IMS สำหรับการจัดสรรบริการ การใช้ฟีเจอร์นี้มีประโยชน์ดังต่อไปนี้
- ลดต้นทุนการทดสอบและการรับรองสำหรับผู้ให้บริการ เนื่องจากฟีเจอร์การให้สิทธิ์นี้ใช้ได้กับผลิตภัณฑ์และ OEM หลายราย
- ลดค่าใช้จ่ายในการพัฒนาสำหรับผู้ผลิตอุปกรณ์ผ่านแอป Android มาตรฐาน
- ช่วยให้ผู้ผลิตอุปกรณ์และผู้ให้บริการสามารถร่วมเขียนโค้ดสำหรับฟีเจอร์นี้ได้ เนื่องจากฟีเจอร์นี้เป็นโอเพนซอร์ส
- ให้บริการจัดการที่อยู่ฉุกเฉินสำหรับผู้ให้บริการในอเมริกาเหนือ
สถาปัตยกรรม
รูปภาพต่อไปนี้อธิบายสถาปัตยกรรมและลักษณะการทำงานของฟีเจอร์การให้สิทธิ์บริการ IMS
 
 
รูปที่ 1 สถาปัตยกรรมฟีเจอร์การให้สิทธิ์ TS.43
ดังที่แสดงในรูปที่ 1 สถาปัตยกรรมของฟีเจอร์สิทธิ์ของบริการ IMS ประกอบด้วยคอมโพเนนต์ต่อไปนี้
- service_entitlementไลบรารีแบบคงที่ของ TS.43 Service API: ไลบรารีนี้ ใช้ข้อกำหนด TS.43 โต้ตอบกับเซิร์ฟเวอร์การให้สิทธิ์ของ ผู้ให้บริการ และแสดง API ที่แอปใช้สำหรับกรณีการใช้งาน TS.43 แต่ละกรณี
- ImsServiceEntitlementแอปไคลเอ็นต์: แอปนี้ใช้ TS.43 Service API แอปจะใช้คอมโพเนนต์ UI ซึ่งรวมถึง WebView สำหรับ การแสดงผลพอร์ทัลบริการของผู้ให้บริการเพื่อให้ผู้ใช้เปิดใช้งานบริการ และ โต้ตอบกับคอมโพเนนต์ Android อื่นๆ เพื่อจัดการประสบการณ์ของผู้ใช้ตั้งแต่ต้นจนจบ- ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดค่า Android ให้ทำงานกับเซิร์ฟเวอร์การให้สิทธิ์ตาม TS.43 ของผู้ให้บริการได้ที่แอป ImsServiceEntitlement 
บรรทัดที่มีหมายเลขในรูปที่ 1 แสดงวิธีที่คอมโพเนนต์ของฟีเจอร์สิทธิ์บริการ IMS สื่อสารกัน ต่อไปนี้เป็นคำอธิบายแต่ละขั้นตอนตามป้ายกำกับ
(1) แอปไคลเอ็นต์เรียกใช้ API บริการ TS.43 เพื่อเริ่มคำขอสิทธิ์ ของบริการ
(2) API บริการ TS.43 จะส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์การให้สิทธิ์ของผู้ให้บริการเพื่อเริ่มการท้าทาย EAP-AKA
(3) API บริการ TS.43 จะเรียกใช้ API โทรศัพท์ (เช่น
    getIccAuthentication) เพื่อดำเนินการท้าทาย-ตอบกลับ EAP-AKA ให้เสร็จสมบูรณ์
(4) บริการ TS.43 จะรับสิทธิ์ของบริการหรือข้อมูลการกำหนดค่า จากเซิร์ฟเวอร์สิทธิ์ของผู้ให้บริการหลังจากที่ระบบยืนยันการตอบกลับ EAP-AKA แล้ว
(5) บริการ TS.43 จะแสดงข้อมูลการให้สิทธิ์หรือการกำหนดค่าของบริการ ไปยังแอปไคลเอ็นต์
(6) แอปไคลเอ็นต์จัดการข้อมูลและแสดงผลพอร์ทัลบริการของผู้ให้บริการ (ไม่บังคับ) เพื่อให้ผู้ใช้เปิดใช้งานบริการให้เสร็จสมบูรณ์
การรวมระบบ
ส่วนนี้อธิบายขั้นตอนการผสานรวมservice_entitlement
ไลบรารีและแอป ImsServiceEntitlement
เนื่องจากไม่มีทรัพยากร Dependency ของ Android 12 API จึงสามารถย้อนพอร์ตservice_entitlementไลบรารีและImsServiceEntitlementแอปไปยังแพลตฟอร์ม Android
 ที่ต่ำกว่าได้
ไลบรารี service_entitlement
เนื่องจากมีการลิงก์service_entitlementไลบรารีแบบคงที่เข้ากับแอป
ImsServiceEntitlement จึงไม่จำเป็นต้องมีขั้นตอนเพิ่มเติมในการผสานรวม
ไลบรารีเข้ากับแอป ImsServiceEntitlement
คุณสามารถผสานรวมservice_entitlementไลบรารีกับแอปของคุณเองสำหรับ
กรณีการใช้งาน TS.43 เช่น แพ็กเกจอินเทอร์เน็ตและ ODSA นอกจากนี้ยังสามารถผสานรวมไลบรารี
เข้ากับแอปสำหรับกรณีการใช้งานการให้สิทธิ์ที่ไม่ใช่ TS.43 ตามโปรโตคอล EAP-AKA ได้ด้วย
ต่อไปนี้คือคำอธิบาย API ที่ใช้สำหรับกรณีการใช้งานดังกล่าว
- แอป TS.43 ที่ใช้โปรโตคอล HTTP TS.43 ซึ่งติดตั้งใช้งานในไลบรารี
ใช้ API ในคลาส ServiceEntitlement
- แอปที่ไม่ใช่ TS.43 ซึ่งใช้โปรโตคอล EAP-AKA ที่ติดตั้งใช้งานในไลบรารี: ใช้ API ที่แสดงในคลาส EapAkaHelper
แอป ImsServiceEntitlement
โดยค่าเริ่มต้น Android จะรวมแอป ImsServiceEntitlement ที่ติดตั้งใน
พาร์ติชันผลิตภัณฑ์เป็นแอปที่มีสิทธิ์พิเศษ หากต้องการกำหนดค่าแอป ให้ใช้คีย์ CarrierConfig ต่อไปนี้
| คีย์ | ค่านิยม | 
|---|---|
| KEY_ENTITLEMENT_SERVER_URL_STRING | URL ของเซิร์ฟเวอร์การให้สิทธิ์ของผู้ให้บริการ ต้องใส่คำนำหน้า https:// | 
| KEY_FCM_SENDER_ID_STRING | รหัสผู้ส่ง FCM ของผู้ให้บริการ อย่าตั้งค่านี้หากผู้ให้บริการขนส่งไม่ต้องการ FCM | 
| KEY_SHOW_VOWIFI_WEBVIEW_BOOL | ตั้งค่าเป็น trueหากผู้ให้บริการกำหนดให้ผู้ใช้ต้องใช้ UI ของเว็บพอร์ทัล
เพื่อลงชื่อสมัครใช้บริการ VoWiFi เช่น การยอมรับข้อกำหนดและ
เงื่อนไขหรือการป้อนที่อยู่สำหรับกรณีฉุกเฉินโดยปกติแล้วผู้ให้บริการในอเมริกาเหนือจะกำหนดให้ต้องมี | 
| KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING | ตั้งค่าเป็น com.android.imsserviceentitlement/.WfcActivationActivityหากKEY_SHOW_VOWIFI_WEBVIEW_BOOLเป็นtrue | 
| KEY_IMS_PROVISIONING_BOOL | ตั้งค่าเป็น trueหากผู้ให้บริการกำหนดให้มีการจัดสรรเครือข่ายของบริการ IMS
(VoLTE/VoWiFi/SMSoIP) ในเบื้องหลังผู้ให้บริการบางรายในยุโรปกำหนดให้ต้องดำเนินการนี้ | 
| KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL | ตั้งค่าเป็น trueหากKEY_IMS_PROVISIONING_BOOLเป็นtrue | 
การรับส่งข้อมูล HTTP ไปยังเซิร์ฟเวอร์การให้สิทธิ์และเว็บพอร์ทัลของผู้ให้บริการจะผ่านเครือข่ายเริ่มต้น เช่น อินเทอร์เน็ตมือถือหรือ Wi-Fi เริ่มต้น
พาร์ทเนอร์ GMS: ผู้ให้บริการต่อไปนี้รองรับแอปการให้สิทธิ์ TS.43 ใน Android 12 ตามข้อกำหนดเฉพาะ TS.43 v5.0
- สหรัฐอเมริกา: CSpire, US Cellular, Cellcom
- ฝรั่งเศส: Orange
UI ของระบบเพิ่มเติมสำหรับการจัดสรร IMS
ส่วนนี้อธิบายวิธีที่ OEM สามารถรองรับองค์ประกอบ UI ของระบบเพิ่มเติม ที่เกี่ยวข้องกับการจัดสรรบริการ IMS (เช่น เมื่อแสดงการแจ้งเตือน เมื่อมีการจัดสรร VoWiFi)
ImsServiceEntitlement แอปจะตั้งค่าสถานะการจัดสรร VoWiFi ในแพลตฟอร์มโดยใช้
ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value)
System API นอกจากนี้ API นี้ยังใช้สำหรับ VoLTE (ที่มี
KEY_VOLTE_PROVISIONING_STATUS) และ SMSoIP (ที่มี KEY_SMS_OVER_IP_ENABLED) ด้วย
จากนั้น UI ของระบบจะอ่านสถานะการจัดสรรได้โดยใช้
getProvisioningIntValue หรือโดยการลงทะเบียนการเรียกกลับเพื่อตรวจสอบการเปลี่ยนแปลงสถานะการจัดสรรผ่าน registerProvisioningChangedCallback
ลบล้างการกำหนดค่าสำหรับการทดสอบ
ใช้ขั้นตอนต่อไปนี้เพื่อเปลี่ยนImsServiceEntitlement
ลักษณะการทำงานของแอปชั่วคราวเพื่อวัตถุประสงค์ในการทดสอบ ดูรายละเอียดเกี่ยวกับวิธีกําหนดค่าของผู้ให้บริการ
ใหม่ได้ที่การกําหนดค่าของผู้ให้บริการใหม่
ข้ามขั้นตอนการลงชื่อสมัครใช้ VoWiFi
หากต้องการข้ามกระบวนการลงชื่อสมัครใช้ VoWiFi เพื่อให้เปิด VoWiFi ได้โดยตรง
ให้ลบล้างการกำหนดค่าของผู้ให้บริการ
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING แล้วตั้งค่าเป็น
สตริงว่าง
ข้ามการจัดสรร IMS
หากต้องการข้ามการจัดสรร IMS เพื่อให้บริการ IMS พร้อมใช้งานและอนุญาตให้ผู้ใช้
เปิดใช้บริการดังกล่าวโดยไม่ต้องจัดสรรเครือข่าย ให้ลบล้างการกำหนดค่าของผู้ให้บริการ
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL และตั้งค่าเป็น
false
เปลี่ยน URL ของเซิร์ฟเวอร์การให้สิทธิ์
หากต้องการเปลี่ยน URL ของเซิร์ฟเวอร์การให้สิทธิ์ ให้ลบล้างการกำหนดค่าของผู้ให้บริการ
KEY_ENTITLEMENT_SERVER_URL_STRING แล้วตั้งค่าเป็นสตริง URL ที่คาดไว้
 คุณต้องใส่คำนำหน้า https://
ลบล้างการกำหนดค่าของผู้ให้บริการ
ตั้งแต่ Android 11 เป็นต้นไป คำสั่งลบล้างการกำหนดค่าของผู้ให้บริการจะได้รับการติดตั้งมาพร้อมกับระบบและพร้อมใช้งาน โดยมีสิทธิ์ระดับรูท
คำสั่งต่อไปนี้เป็นตัวอย่างวิธีลบล้างคีย์การกำหนดค่าของผู้ให้บริการ
carrier_volte_provisioning_required_bool และตั้งค่าเป็น false คุณ
เรียกใช้คำสั่งได้หลายครั้งเพื่อลบล้างการกำหนดค่าหลายรายการ
adb rootadb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false
หากต้องการลบล้างทั้งหมด ให้ใช้คำสั่งต่อไปนี้
adb shell cmd phone cc clear-valuesหากต้องการดูข้อมูลเพิ่มเติม ให้เรียกใช้คำสั่งต่อไปนี้
adb shell cmd phone cc