สิทธิบริการ IMS

ตั้งแต่ Android 12 ขึ้นไป Android ได้รวมการรองรับ TS.43 Service Entitlement Configuration ซึ่งเป็นข้อกำหนด GSMA ที่กำหนดขั้นตอนการตรวจสอบสิทธิ์สำหรับการเปิดใช้งานบริการต่างๆ ซึ่งรวมถึง Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE) , SMS over IP (SMSoIP), การเปิดใช้งานบริการบนอุปกรณ์ (ODSA) ของอุปกรณ์คู่หู eSIM (ที่เกี่ยวข้องกับอุปกรณ์ที่ร้องขอ) และข้อมูลแผนข้อมูล

เพื่อสนับสนุนข้อกำหนดนี้ Android จึงมีคุณลักษณะการให้สิทธิ์บริการ IMS ที่ช่วยให้ผู้ให้บริการแจ้งอุปกรณ์เคลื่อนที่เกี่ยวกับสถานะของบริการเครือข่ายระบบย่อย IP มัลติมีเดีย (IMS) คุณสมบัติการให้สิทธิ์นี้ทำให้อุปกรณ์สามารถสืบค้นเซิร์ฟเวอร์การให้สิทธิ์ของผู้ให้บริการตามที่กำหนดโดยข้อกำหนด GSMA TS.43 สำหรับสถานะการให้สิทธิ์ IMS โดยใช้ การตรวจสอบสิทธิ์ EAP-AKA โดยไม่ต้องให้ผู้ใช้ป้อนข้อมูลประจำตัวใด ๆ ด้วยตนเอง

ผู้ให้บริการที่มีเซิร์ฟเวอร์การให้สิทธิ์ IMS สามารถใช้คุณลักษณะการให้สิทธิ์บริการ IMS สำหรับการให้บริการได้ การใช้คุณลักษณะนี้ให้ประโยชน์ดังต่อไปนี้:

  • ลดต้นทุนการทดสอบและการรับรองสำหรับผู้ให้บริการเนื่องจากคุณลักษณะการให้สิทธิ์นี้สามารถใช้กับผลิตภัณฑ์และ OEM หลายรายการได้
  • ลดค่าใช้จ่ายในการพัฒนาสำหรับผู้ผลิตอุปกรณ์ผ่านแอป Android มาตรฐาน
  • อนุญาตให้ผู้ผลิตอุปกรณ์และผู้ให้บริการสนับสนุนโค้ดสำหรับฟีเจอร์นี้เนื่องจากฟีเจอร์นี้เป็นโอเพ่นซอร์ส
  • ให้การจัดการที่อยู่ฉุกเฉินสำหรับผู้ให้บริการในอเมริกาเหนือ

สถาปัตยกรรม

รูปต่อไปนี้อธิบายสถาปัตยกรรมและลักษณะการทำงานของคุณลักษณะการให้สิทธิ์บริการ IMS

คุณสมบัติการให้สิทธิ์ TS.43

รูปที่ 1 สถาปัตยกรรมคุณลักษณะการให้สิทธิ์ TS.43

ดังแสดงในรูปที่ 1 สถาปัตยกรรมของคุณลักษณะการให้สิทธิ์บริการ IMS ประกอบด้วยส่วนประกอบต่อไปนี้:

  • service_entitlement ไลบรารีแบบคงที่ของบริการ API TS.43 : ไลบรารีนี้ใช้ข้อกำหนด TS.43 โต้ตอบกับเซิร์ฟเวอร์การให้สิทธิ์ของผู้ให้บริการ และเปิดเผย API ที่เชื่อมต่อกับแอปสำหรับกรณีการใช้งาน TS.43 แต่ละรายการ
  • แอปไคลเอ็นต์ ImsServiceEntitlement : แอปนี้ใช้ TS.43 Service API แอปใช้องค์ประกอบ UI รวมถึง webviews เพื่อแสดงผลพอร์ทัลบริการของผู้ให้บริการเพื่อให้ผู้ใช้สามารถเปิดใช้งานบริการและโต้ตอบกับส่วนประกอบ 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

เนื่องจากไม่มีการพึ่งพา Android 12 API ไลบรารี service_entitlement และแอป ImsServiceEntitlement จึงสามารถแบ็คพอร์ตไปยังแพลตฟอร์ม Android รุ่นเก่าได้

ไลบรารี service_entitlement

เนื่องจากไลบรารี service_entitlement เชื่อมโยงเข้ากับ ImsServiceEntitlement app แบบคงที่ จึงไม่จำเป็นต้องมีขั้นตอนเพิ่มเติมในการรวมไลบรารีเข้ากับแอป ImsServiceEntitlement

ไลบรารี service_entitlement สามารถผสานรวมกับแอปของคุณเองสำหรับกรณีการใช้งาน TS.43 เช่น แผนข้อมูลและ ODSA ไลบรารียังสามารถรวมเข้ากับแอปสำหรับกรณีการใช้งานที่ไม่ใช่ TS.43 ตามโปรโตคอล EAP-AKA

ข้อมูลต่อไปนี้จะอธิบาย API ที่จะใช้สำหรับกรณีการใช้งานดังกล่าว:

  • แอป TS.43 ที่ใช้โปรโตคอล TS.43 HTTP ที่นำมาใช้ในไลบรารี: ใช้ API ในคลาส ServiceEntitlement
  • แอปที่ไม่ใช่ TS.43 ที่ใช้โปรโตคอล EAP-AKA ที่ใช้งานในไลบรารี: ใช้ API ที่เปิดเผยในคลาส EapAkaHelper

แอป ImsServiceEntitlement

ตามค่าเริ่มต้น Android จะรวมแอป ImsServiceEntitlement ที่ติดตั้งไว้ในพาร์ติชันผลิตภัณฑ์เป็นแอปที่มีสิทธิ์ หากต้องการกำหนดค่าแอป ให้ใช้คีย์ CarrierConfig ต่อไปนี้:

สำคัญ ค่า
KEY_ENTITLEMENT_SERVER_URL_STRING URL เซิร์ฟเวอร์การให้สิทธิ์ของผู้ให้บริการ ต้องใส่คำนำหน้า https://
KEY_FCM_SENDER_ID_STRING ID ผู้ส่ง 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:

  • สหรัฐฯ: CSpaire, US Cellular, Cellcom
  • ฝรั่งเศส: สีส้ม

UI ระบบเพิ่มเติมสำหรับการจัดเตรียม IMS

ส่วนนี้อธิบายว่า OEM สามารถรองรับองค์ประกอบ UI ของระบบเพิ่มเติมที่เกี่ยวข้องกับการให้บริการ IMS ได้อย่างไร (เช่น เมื่อแสดงการแจ้งเตือนเมื่อมีการจัดเตรียม VoWiFi)

แอป ImsServiceEntitlement ตั้งค่าสถานะการจัดเตรียม VoWiFi ลงในแพลตฟอร์มโดยใช้ API ระบบ ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value) 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 root
adb 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