IMS 服務授權

從 Android 12 開始,Android 支援TS.43 服務權利配置,這是一種 GSMA 規範,定義了啟動服務的權利驗證步驟,包括 Wi-Fi 語音 (VoWiFi)、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庫靜態連結到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