從 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 應用程序減少設備製造商的開發開銷。
- 允許設備製造商和運營商為該功能貢獻代碼,因為該功能是開源的。
- 為北美運營商提供緊急地址管理。
GMS 合作夥伴:
對於不支持 TS.43 規範的運營商,GMS 合作夥伴可以使用 GMS 設備上作為非捆綁應用程序提供的WFC 激活應用程序來提供 IMS 網絡服務。
如果您有與 IMS 服務授權功能相關的功能請求,請聯繫您的 Google 代表或發送電子郵件至gms-connectivity-apps@google.com 。
建築學
下圖描述了 IMS 服務授權功能的體系結構和行為。
圖 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
GMS 合作夥伴:以下是已在 Android 12 中測試 service_entitlement 庫的 TS.43 授權服務器供應商。
- 愛立信
- 慧與
- 諾基亞
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_BOOL 為true ,則設置為com.android.imsserviceentitlement/.WfcActivationActivity 。 |
KEY_IMS_PROVISIONING_BOOL | 如果運營商需要在後台對 IMS (VoLTE/VoWiFi/SMSoIP) 服務進行網絡配置,則設置為true 。這是某些歐洲運營商所要求的。 |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL | 如果KEY_IMS_PROVISIONING_BOOL 為true ,則設置為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