从 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