自 Android 12 起,Android 支援 TS.43 服務授權設定,這是 GSMA 規格,定義了服務啟用授權驗證步驟,包括 Wi-Fi 通話 (VoWiFi)、LTE 通話 (VoLTE)、IP 簡訊 (SMSoIP)、eSIM 隨附裝置 (與要求裝置相關聯) 的裝置端服務啟用 (ODSA),以及數據方案資訊。
為支援這項規格,Android 提供 IMS 服務授權功能,讓服務供應商將 IP 多媒體子系統 (IMS) 網路服務的狀態告知行動裝置。這項授權功能可讓裝置使用 EAP-AKA 驗證,查詢 GSMA TS.43 規格定義的 IMS 授權狀態,不必手動輸入任何憑證。
擁有 IMS 授權伺服器的電信業者可以使用 IMS 服務授權功能,佈建服務。採用這項功能可享有下列優點:
- 這項授權功能可跨多項產品和原始設備製造商使用,因此可降低電信業者的測試和認證成本。
- 透過標準 Android 應用程式,減少裝置製造商的開發費用。
- 這項功能為開放原始碼,因此裝置製造商和電信業者可以提供程式碼。
- 為北美洲電信業者提供緊急救援地址管理服務。
建築
下圖說明 IMS 服務授權功能的架構和行為。
圖 1. TS.43 授權功能架構
如圖 1 所示,IMS 服務授權功能的架構包含下列元件:
service_entitlement
TS.43 服務 API 靜態程式庫: 這個程式庫會實作 TS.43 規格、與電信業者的授權伺服器互動,並針對每個 TS.43 用途公開應用程式專用的 API。ImsServiceEntitlement
用戶端應用程式:這個應用程式使用 TS.43 服務 API。應用程式會實作 UI 元素,包括用於算繪電信業者服務入口網站的網頁檢視區塊,供使用者啟用服務,並與其他 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) 驗證 EAP-AKA 回應後,TS.43 服務會從電信業者的授權伺服器接收服務授權或設定資料。
(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 |
電信業者的授權伺服器網址。必須加入 https:// 前置字元。 |
KEY_FCM_SENDER_ID_STRING |
電信業者的 FCM 寄件者 ID。 如果電信業者不需要 FCM,請勿設定這個值。 |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL |
如果電信業者要求使用者透過網頁入口網站 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 。 |
前往電信業者授權伺服器和網路入口的 HTTP 流量會透過預設網路傳輸,例如預設行動數據或 Wi-Fi。
GMS 合作夥伴:Android 12 的 TS.43 授權應用程式支援下列電信業者,符合 TS.43 v5.0 規格:
- 美國:CSpire、US Cellular、Cellcom
- 法國:Orange
IMS 佈建的其他系統 UI
本節說明原始設備製造商如何支援與 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
。
變更授權伺服器網址
如要變更授權伺服器網址,請覆寫電信業者設定 KEY_ENTITLEMENT_SERVER_URL_STRING
,並將值設為預期網址字串。您必須加上 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