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