Разрешение на использование службы IMS

Начиная с Android 12, Android включает поддержку конфигурации разрешений на услуги TS.43 , спецификации GSMA, которая определяет этап проверки прав для активации служб, включая передачу голоса по Wi-Fi (VoWiFi), передачу голоса по LTE (VoLTE). , SMS через IP (SMSoIP), активация службы на устройстве (ODSA) сопутствующих устройств eSIM (связанных с запрашивающим устройством) и информация о тарифном плане.

Для поддержки этой спецификации Android предоставляет функцию предоставления прав на услуги IMS, которая позволяет поставщику услуг информировать мобильные устройства о состоянии сетевых служб IP Multimedia Subsystem (IMS). Эта функция предоставления прав позволяет устройству запрашивать у сервера разрешений оператора связи, как определено спецификацией GSMA TS.43, статус разрешений IMS с использованием аутентификации EAP-AKA , не требуя от пользователей ввода каких-либо учетных данных вручную.

Операторы связи с серверами разрешений IMS могут использовать функцию предоставления прав на услуги IMS для предоставления услуг. Внедрение этой функции дает следующие преимущества:

  • Снижает затраты на тестирование и сертификацию для операторов связи, поскольку эту функцию разрешений можно использовать для нескольких продуктов и OEM-производителей.
  • Снижает затраты производителей устройств на разработку благодаря стандартному приложению Android.
  • Позволяет производителям устройств и операторам связи предоставлять код для этой функции, поскольку эта функция имеет открытый исходный код.
  • Обеспечивает управление адресами экстренной помощи для операторов связи в Северной Америке.

Архитектура

На следующем рисунке описаны архитектура и поведение функции предоставления прав на услуги IMS.

Функция предоставления прав TS.43

Рисунок 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, на основе протокола 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, сотовая связь США, 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