การให้สิทธิ์บริการ IMS

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

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

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

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

สถาปัตยกรรม

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

ฟีเจอร์การให้สิทธิ์ TS.43

รูปที่ 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 library]

เนื่องจากไลบรารี service_entitlement ลิงก์กับ ImsServiceEntitlement app แบบคงที่ คุณจึงไม่ต้องดำเนินการใดๆ เพิ่มเติมเพื่อผสานรวมไลบรารีเข้ากับแอป ImsServiceEntitlement

ไลบรารี service_entitlement สามารถผสานรวมกับแอปของคุณเองสําหรับกรณีการใช้งาน TS.43 เช่น แพ็กเกจข้อมูลและ ODSA คุณยังผสานรวมไลบรารีไว้ในแอป สำหรับ Use Case ของการให้สิทธิ์ที่ไม่ใช่ 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 ลงในแพลตฟอร์มโดยใช้ API ระบบ ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value) API นี้ยังใช้สำหรับ VoLTE (กับ KEY_VOLTE_PROVISIONING_STATUS) และ SMSoIP (กับ KEY_SMS_OVER_IP_ENABLED) อีกด้วย

UI ของระบบจะอ่านสถานะการจัดสรรได้โดยใช้ getProvisioningIntValue หรือโดยการลงทะเบียน Callback เพื่อตรวจสอบการเปลี่ยนแปลงสถานะการจัดสรรผ่าน 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