В Android 12 представлена поддержка единой модели регистрации для предоставления функций MMTEL и RCS. Эта модель позволяет устройствам управлять всеми функциями IMS с помощью единой регистрации IMS, предоставляемой ImsService устройства, и соответствовать требованиям, введенным некоторыми операторами связи. По сравнению с моделью двойной регистрации, когда несколько регистраций IMS управляются на одном устройстве, единая регистрация снижает трафик в сети оператора и повышает надежность.
Android 12 поддерживает эту единую модель регистрации с помощью архитектуры с набором API-интерфейсов, которые позволяют стеку телефонии AOSP управлять как функциями MMTEL, предоставляемыми ImsService
, так и функциями RCS, предоставляемыми выбранным пользователем приложением обмена сообщениями RCS. Для поддержки единой регистрации IMS производители устройств и поставщики SoC должны реализовать эти API, чтобы активировать функции RCS в выбранном пользователем приложении обмена сообщениями RCS.
На рис. 1 показан стек IMS устройства при использовании модели одиночной регистрации IMS. Все приложения IMS используют ImsService устройства по умолчанию для функций MMTEL и RCS по одной регистрации IMS. Это включает подготовку, пересылку сообщений SIP и обмен пользовательскими возможностями RCS.
Рис. 1. Архитектура модели единой регистрации
Android 11 и более ранние версии поддерживают только модель двойной регистрации для предоставления функций MMTEL и RCS, где MMTEL предоставляется ImsService устройства, а функции RCS реализуются поверх и управляют собственным стеком IMS и подключением к сети оператора независимо.
Рисунок 2 иллюстрирует архитектуру модели двойной регистрации. В этой модели каждое приложение отвечает за подключение к сети оператора и установку регистрации IMS для функций MMTEL и RCS. ImsService устройства реализует MMTEL, использует подключение данных IMS устройства к сети оператора и работает независимо от других приложений RCS.
Рисунок 2. Архитектура модели двойной регистрации
API единой регистрации IMS
Устройства, работающие с операторами связи, для которых требуется единая регистрация IMS, должны поддерживать API единой регистрации IMS и определять функцию Android PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION
. На рис. 3 показаны API, поддерживающие единую регистрацию IMS.
Рис. 3. Поверхности API высокого уровня, поддерживающие единую регистрацию IMS
Устройства Android, поддерживающие единую регистрацию IMS как часть стека телефонии AOSP, должны поддерживать все API-интерфейсы AOSP, описанные в следующей таблице.
Площадь поверхности API | API-интерфейсы приложений RCS | API поставщика IMS | Описание |
---|---|---|---|
Подготовка RCS | ProvisioningManager | Имсконфигимплбасе | Позволяет OEM-производителю или оператору связи предоставлять приложение для обновления статуса подготовки RCS, если оператор использует проприетарный механизм предоставления прав операторам связи. ImsService также должен поддерживать стандартный сервер AutoConfigurationServer (ACS) для предоставления услуг операторам связи, не использующим проприетарный механизм. |
Переадресация SIP-сообщений | SipDelegateManager | SipTransportImplBase | Позволяет приложению RCS сначала связывать определенные теги функций RCS с ImsService устройства, а затем отправлять и получать сообщения SIP и обновления регистрации IMS, связанные с этими тегами функций RCS. |
Уведомления о выделенном носителе | ConnectivityManager | DataCallResponse | Позволяет приложению прослушивать уведомления QoS в сокете, связанном с определенным локальным портом. |
GBA-аутентификация | бутстрапаутентикатионрекуест | GbaService | Позволяет приложению RCS аутентифицироваться с помощью сети и ключей доступа, используемых для функций RCS, таких как передача файлов. |
Обмен пользовательскими возможностями RCS | ImsRcsManager | RcsCapabilityExchangeImplBase | Предоставляет AOSP возможность отправлять свои возможности MMTEL и RCS поставщику ImsService, чтобы их можно было опубликовать под одним объектом в сети для обмена пользовательскими возможностями RCS. Также позволяет другим приложениям, заинтересованным в возможностях RCS одного или нескольких контактов, запрашивать в сети возможности RCS контактов. |
Безопасность и разрешения
Android 12 вводит следующие разрешения для обеспечения безопасного доступа к сети оператора и данным пользователя:
-
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
-
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
Разрешение android.permission.PERFORM_IMS_SINGLE_REGISTRATION
должно быть определено приложением обмена сообщениями с функциями RCS. Чтобы это разрешение было предоставлено, должно выполняться следующее:
- Приложение должно быть установлено как привилегированное приложение, то есть оно предварительно установлено на устройстве и имеет доступ к привилегированным разрешениям.
- Приложение должно быть установлено как роль SMS пользователя по умолчанию с помощью
RoleManager
Если оба эти условия не выполняются, приложению будет отказано в доступе к разрешению android.permission.PERFORM_IMS_SINGLE_REGISTRATION
. Это означает, что сторонним приложениям не разрешен доступ к API единой регистрации RCS, поскольку они требуют сертификации оператора связи на устройстве.
Разрешение android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
, предоставленное приложению, которое также имеет разрешение READ_CONTACTS, позволяет приложению запрашивать возможности RCS телефонных номеров с помощью RcsUceAdapter
. Чтобы это разрешение было предоставлено, должно выполняться следующее:
- Приложение должно быть установлено как привилегированное приложение, то есть оно предварительно установлено на устройстве и имеет доступ к привилегированным разрешениям.
Приложение должно быть определено как одна из следующих ролей
RoleManager
:- Приложение для обмена сообщениями по умолчанию: устанавливается пользователем.
- Приложение для набора номера по умолчанию: устанавливается пользователем.
- Приложение контактов по умолчанию: роль, представленная в Android 12, которая позволяет OEM-производителю определять имя пакета через значение наложения устройства
config_systemContacts
, которое должно соответствовать приложению контактов устройства. Затем этому приложению назначается роль контактов.
Чтобы получить доступ к IMS APN с помощью ConnectivityManager
для настройки и управления трафиком данных, приложения также должны запрашивать разрешение android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
.
Примеры и источник
Android предоставляет приложение в AOSP, которое реализует тестовое приложение для обмена сообщениями с базовой поддержкой обмена сообщениями RCS для целей тестирования и разработки. Вы можете найти приложение по адресу testapps/TestRcsApp
. Когда приложение установлено на устройстве, его можно установить в качестве приложения для обмена сообщениями пользователя по умолчанию, и оно будет иметь разрешения, необходимые для доступа к API единой регистрации IMS.
Android также предоставляет образец реализации ImsService для RCS. Исходный код находится в /testapps/ImsTestService
.
Реализация
Для получения дополнительных сведений о реализации загрузите единую регистрацию IMS в Android .
Проверка
Чтобы проверить реализацию единой регистрации IMS, выполните следующие действия.
- Убедитесь, что набор тестов CtsTelephonyTestCases CTS пройден.
- Установите и запустите TestRcsApp , чтобы запускать базовые тестовые случаи с одиночной регистрацией во время интеграции.
- Пройдите сертификацию перевозчика для тестовых случаев одиночной регистрации IMS.