IMS 服務授權

從 Android 12 開始,Android 包括對TS.43 Service Entitlement Configuration的支持,這是一種 GSMA 規範,它定義了用於激活服務的權利驗證步驟,包括 Voice-over-Wi-Fi (VoWiFi)、Voice-over-LTE (VoLTE) 、SMS over IP (SMSoIP)、eSIM 配套設備(與請求設備相關聯)的設備上服務激活 (ODSA) 和數據計劃信息。

為了支持該規範,Android 提供了 IMS 服務授權功能,允許服務提供商通知移動設備 IP 多媒體子系統 (IMS) 網絡服務的狀態。此授權功能允許設備使用EAP-AKA 身份驗證向 GSMA TS.43 規範定義的運營商授權服務器查詢 IMS 授權狀態,而無需用戶手動輸入任何憑據。

擁有 IMS 授權服務器的運營商可以使用 IMS 服務授權特性來提供服務。採用該功能可帶來以下好處:

  • 降低運營商的測試和認證成本,因為此權利功能可用於多個產品和 OEM。
  • 通過標準的 Android 應用程序減少設備製造商的開發開銷。
  • 允許設備製造商和運營商為該功能貢獻代碼,因為該功能是開源的。
  • 為北美運營商提供緊急地址管理。

建築學

下圖描述了 IMS 服務授權功能的體系結構和行為。

TS.43 授權功能

圖 1. TS.43 授權特性架構

如圖 1 所示,IMS 服務授權功能的架構包括以下組件:

  • service_entitlement TS.43 服務 API 靜態庫該庫實現 TS.43 規範,與運營商的授權服務器交互,並為每個 TS.43 用例公開面向應用程序的 API。
  • ImsServiceEntitlement客戶端應用程序:此應用程序使用 TS.43 服務 API。該應用程序實現了 UI 元素,包括用於呈現運營商的服務門戶以供用戶激活服務的 web 視圖,並與其他 Android 組件交互以管理端到端的用戶體驗。

    有關如何配置 Android 以使用運營商基於 TS.43 的授權服務器的更多信息,請參閱ImsServiceEntitlement 應用程序

圖 1 中的編號行顯示了 IMS 服務授權功能的組件如何相互通信。以下描述了標記為的每個步驟:

(1)客戶端應用調用TS.43服務API發起服務授權請求。

(2) TS.43服務API向運營商授權服務器發送HTTP請求,發起EAP-AKA質詢。

(3) TS.43 服務 API 調用電話 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。該庫還可以集成到基於 EAP-AKA 協議的非 TS.43 授權用例的應用程序中。

以下描述了用於此類用例的 API:

  • 使用庫中實現的 TS.43 HTTP 協議的 TS.43 應用程序:使用ServiceEntitlement類中的 API
  • 使用庫中實現的 EAP-AKA 協議的非 TS.43 應用程序:使用EapAkaHelper類中公開的 API

ImsServiceEntitlement 應用程序

默認情況下,Android 包括安裝在產品分區中的ImsServiceEntitlement應用程序作為特權應用程序。要配置應用程序,請使用以下 CarrierConfig 鍵:

鑰匙價值
KEY_ENTITLEMENT_SERVER_URL_STRING運營商的授權服務器 URL。必須包含https://前綴。
KEY_FCM_SENDER_ID_STRING承運人的 FCM 發件人 ID。

如果運營商不要求 FCM,請勿設置此值。
KEY_SHOW_VOWIFI_WEBVIEW_BOOL如果運營商需要 Web 門戶 UI 供用戶註冊 VoWiFi 服務,則設置為true 。例如,同意條款和條件或輸入緊急地址。

這通常是北美運營商所要求的。
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
如果KEY_SHOW_VOWIFI_WEBVIEW_BOOLtrue ,則設置為com.android.imsserviceentitlement/.WfcActivationActivity
KEY_IMS_PROVISIONING_BOOL如果運營商需要在後台對 IMS (VoLTE/VoWiFi/SMSoIP) 服務進行網絡配置,則設置為true

這是某些歐洲運營商所要求的。
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL如果KEY_IMS_PROVISIONING_BOOLtrue ,則設置為true

到運營商授權服務器和 Web 門戶的 HTTP 流量通過默認網絡,例如默認移動數據或 Wi-Fi。

GMS 合作夥伴: Android 12 中的 TS.43 授權應用支持以下運營商,遵循 TS.43 v5.0 規範:

  • 美國:CSpire、US Cellular、Cellcom
  • 法國:橙色

用於 IMS 供應的附加系統 UI

本節介紹 OEM 如何支持與 IMS 服務供應相關的其他系統 UI 元素(例如,在供應 VoWiFi 時顯示通知時)。

ImsServiceEntitlement應用程序使用ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value)系統 API 將 VoWiFi 供應狀態設置到平台中。此 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 開始,運營商配置覆蓋命令是內置的,可通過 root 權限使用。

以下命令是如何覆蓋運營商配置密鑰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