В Android 12 добавлена поддержка спецификации GSMA TS.43 Service Entitlement Configuration, которая определяет этап проверки прав на активацию сервисов, в том числе 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). Эта функция позволяет устройству запрашивать у сервера оператора статус прав доступа к IMS, как определено в спецификации GSMA TS.43, с помощью аутентификации EAP-AKA без необходимости вручную вводить учетные данные.
Операторы связи с серверами прав IMS могут использовать функцию прав IMS для предоставления услуг. Использование этой функции дает следующие преимущества:
- Снижает расходы операторов на тестирование и сертификацию, поскольку функцию можно использовать в нескольких продуктах и устройствах разных производителей.
- Снижает затраты на разработку для производителей устройств благодаря стандартному приложению Android.
- Позволяет производителям устройств и операторам связи добавлять код для функции, так как она имеет открытый исходный код.
- Позволяет управлять адресами для экстренных служб в североамериканских сетях.
Архитектура
На рисунке ниже показана архитектура и поведение функции предоставления прав IMS.
Рисунок 1. TS.43, архитектура функции предоставления прав
Как показано на рисунке 1, архитектура функции прав доступа к сервису IMS включает следующие компоненты:
service_entitlementСтатическая библиотека Service 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, никаких дополнительных действий для интеграции библиотеки в приложение ImsServiceEntitlement не требуется.
Библиотеку service_entitlement можно интегрировать с вашими приложениями для использования в соответствии со спецификацией TS.43, например для тарифных планов и ODSA. Библиотеку также можно интегрировать в приложение для использования прав доступа, не связанных со спецификацией TS.43, на основе протокола EAP-AKA.
Ниже описаны API, которые можно использовать в таких случаях.
- Приложение TS.43, использующее протокол TS.43 HTTP, реализованный в библиотеке:
используйте API в классе
ServiceEntitlement. - Приложение, не соответствующее спецификации TS.43, но использующее протокол EAP-AKA, реализованный в библиотеке: используйте API, представленные в классе
EapAkaHelper.
Приложение ImsServiceEntitlement
По умолчанию в Android есть приложение ImsServiceEntitlement, установленное в разделе product как привилегированное. Чтобы настроить его, используйте следующие ключи 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 |
Если KEY_IMS_PROVISIONING_BOOL имеет значение true, задайте для параметра значение true. |
HTTP-трафик на сервер авторизации и веб-портал оператора передается через сеть по умолчанию, например через мобильный интернет или Wi-Fi.
Партнеры GMS. Приложение TS.43 для проверки прав на контент в Android 12 поддерживает следующих операторов связи в соответствии со спецификацией TS.43 версии 5.0:
- США: CSpire, US Cellular, Cellcom.
- Франция: Orange
Дополнительный интерфейс системы для инициализации IMS
В этом разделе описывается, как производители оригинального оборудования могут поддерживать дополнительные элементы системного интерфейса, связанные с инициализацией сервиса 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 rootadb 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