Начиная с Android 12, Android поддерживает конфигурацию прав на услуги TS.43 — спецификацию GSMA, которая определяет этап проверки прав на активацию таких услуг, как Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), On-Device Service Activation (ODSA) сопутствующих устройств eSIM (связанных с запрашивающим устройством) и информацию о тарифном плане.
Для поддержки этой спецификации Android предоставляет функцию предоставления прав на услуги IMS, которая позволяет поставщику услуг информировать мобильные устройства о состоянии сетевых услуг IP Multimedia Subsystem (IMS). Эта функция предоставления прав позволяет устройству запрашивать сервер предоставления прав оператора, как определено в спецификации GSMA TS.43, для статуса предоставления прав IMS с использованием аутентификации EAP-AKA, не требуя от пользователей ручного ввода каких-либо учетных данных.
Операторы с серверами IMS entitlement могут использовать функцию IMS service entitlement для предоставления услуг. Внедрение функции обеспечивает следующие преимущества:
- Снижает затраты на тестирование и сертификацию для операторов, поскольку эту функцию предоставления прав можно использовать для нескольких продуктов и OEM-производителей.
- Снижает затраты на разработку для производителей устройств за счет стандартного приложения для Android.
- Позволяет производителям устройств и операторам связи предоставлять код для функции, поскольку функция имеет открытый исходный код.
- Обеспечивает управление адресами экстренной связи для североамериканских операторов.
Архитектура
На следующем рисунке описана архитектура и поведение функции предоставления прав на услуги IMS.
Рисунок 1. Архитектура функции предоставления прав TS.43
Как показано на рисунке 1, архитектура функции предоставления прав на услуги IMS включает следующие компоненты:
-
service_entitlement
Статическая библиотека API сервиса TS.43 : эта библиотека реализует спецификацию TS.43, взаимодействует с сервером прав оператора и предоставляет API-интерфейсы, ориентированные на приложения, для каждого варианта использования TS.43. Клиентское приложение
ImsServiceEntitlement
: это приложение использует API сервиса TS.43. Приложение реализует элементы пользовательского интерфейса, включая веб-представления, для отображения портала услуг оператора, чтобы пользователи могли активировать услуги, и взаимодействует с другими компонентами Android для управления пользовательским опытом от начала до конца.Дополнительную информацию о настройке Android для работы с сервером прав оператора на базе TS.43 см. в приложении ImsServiceEntitlement .
Пронумерованные линии на рисунке 1 показывают, как компоненты функции предоставления прав на услуги IMS взаимодействуют друг с другом. Ниже описывается каждый из шагов, как помечено:
(1) Клиентское приложение вызывает API службы TS.43 для инициирования запроса на предоставление услуги.
(2) API сервиса TS.43 отправляет HTTP-запрос на сервер полномочий оператора для инициирования вызова EAP-AKA.
(3) API сервиса TS.43 вызывает API телефонии (например, getIccAuthentication
) для завершения запроса-ответа EAP-AKA.
(4) Служба TS.43 получает данные о правах на обслуживание или конфигурации от сервера прав оператора после проверки ответа EAP-AKA.
(5) Служба TS.43 возвращает клиентскому приложению данные о правах на услугу или ее конфигурации.
(6) Клиентское приложение обрабатывает данные и при необходимости отображает портал услуг оператора, чтобы пользователь мог завершить активацию услуги.
Интеграция
В этом разделе описывается процесс интеграции библиотеки service_entitlement
и приложения ImsServiceEntitlement
.
Поскольку зависимость от API Android 12 отсутствует, библиотеку service_entitlement
и приложение ImsServiceEntitlement
можно перенести на более старые платформы Android.
библиотека service_entitlement
Поскольку библиотека service_entitlement
статически связана с ImsServiceEntitlement app
, для интеграции библиотеки в приложение ImsServiceEntitlement
не требуется никаких дополнительных шагов.
Библиотека service_entitlement
может быть интегрирована с вашими собственными приложениями для вариантов использования TS.43, таких как тарифный план и ODSA. Библиотеку также можно интегрировать в приложение для вариантов использования не-TS.43 entitlement на основе протокола EAP-AKA.
Ниже описаны API, которые следует использовать в таких случаях:
- Приложение TS.43, использующее протокол HTTP TS.43, реализованный в библиотеке: использование API в классе
ServiceEntitlement
- Приложение, не поддерживающее TS.43, использующее протокол EAP-AKA, реализованный в библиотеке: используйте API, представленные в классе
EapAkaHelper
Приложение ImsServiceEntitlement
По умолчанию Android включает приложение ImsServiceEntitlement
, установленное в разделе продукта как привилегированное приложение. Для настройки приложения используйте следующие ключи CarrierConfig:
Ключ | Ценить |
---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING | URL сервера полномочий оператора. Префикс https:// должен быть включен. |
KEY_FCM_SENDER_ID_STRING | Идентификатор отправителя FCM оператора. Не устанавливайте это значение, если оператор не требует FCM. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL | Установите значение true если оператор требует, чтобы для регистрации пользователей в службе VoWiFi был пользовательский интерфейс веб-портала. Например, согласие с условиями или ввод адреса для экстренной связи.Этого обычно требуют перевозчики в Северной Америке. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING | Установите значение com.android.imsserviceentitlement/.WfcActivationActivity , если KEY_SHOW_VOWIFI_WEBVIEW_BOOL имеет true . |
KEY_IMS_PROVISIONING_BOOL | Установите значение true , если оператор требует предоставления услуг IMS (VoLTE/VoWiFi/SMSoIP) в фоновом режиме.Этого требуют некоторые европейские перевозчики. |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL | Установите значение true , если KEY_IMS_PROVISIONING_BOOL имеет true . |
HTTP-трафик на сервер полномочий оператора и веб-портал проходит через сеть по умолчанию, например, через мобильную сеть передачи данных по умолчанию или Wi-Fi.
Партнеры GMS: Следующие операторы поддерживаются приложением TS.43 в Android 12 в соответствии со спецификацией TS.43 v5.0:
- США: CSpire, US Cellular, Cellcom
- Франция: Оранжевый
Дополнительный системный пользовательский интерфейс для предоставления IMS
В этом разделе описывается, как OEM-производители могут поддерживать дополнительные элементы пользовательского интерфейса системы, связанные с предоставлением услуг IMS (например, при отображении уведомления о предоставлении VoWiFi).
Приложение ImsServiceEntitlement
устанавливает состояние предоставления VoWiFi в платформу с помощью API системы ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value)
. Этот API также используется для VoLTE (с KEY_VOLTE_PROVISIONING_STATUS
) и SMSoIP (с KEY_SMS_OVER_IP_ENABLED
).
Затем системный пользовательский интерфейс может считывать состояние подготовки с помощью 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