В 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 | ImsConfigImplBase | Позволяет производителю оборудования или оператору связи предоставлять приложение для обновления статуса предоставления RCS, если оператор использует собственный механизм предоставления прав доступа. ImsService также должен поддерживать стандартный AutoConfigurationServer (ACS) для предоставления прав доступа операторам связи, которые не используют собственный механизм. |
| Пересылка SIP-сообщений | SipDelegateManager | SipTransportImplBase | Позволяет приложению RCS сначала связать определенные теги функций RCS с ImsService устройства, а затем отправлять и получать SIP-сообщения и обновления регистрации IMS, связанные с этими тегами функций RCS. |
| Выделенные уведомления для носителей | Менеджер подключения | DataCallResponse | Позволяет приложению прослушивать уведомления QoS через сокет, связанный с определенным локальным портом. |
| аутентификация GBA | bootstrapAuthenticationRequest | 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, которая позволяет производителю определить имя пакета через значение параметра
config_systemContactsв настройках устройства, которое должно соответствовать приложению контактов на устройстве. Затем этому приложению присваивается роль контактов.
Для доступа к точке доступа IMS с помощью ConnectivityManager для настройки и управления трафиком данных приложениям также необходимо запросить разрешение android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS .
Примеры и источник
В Android есть приложение в AOSP, которое реализует тестовое приложение для обмена сообщениями с базовой поддержкой RCS для целей тестирования и разработки. Приложение можно найти по адресу testapps/TestRcsApp . После установки на устройство приложение можно установить в качестве приложения для обмена сообщениями по умолчанию, и оно будет иметь необходимые разрешения для доступа к API единой регистрации IMS.
В Android также есть пример реализации ImsService для RCS. Исходный код находится по адресу /testapps/ImsTestService .
Выполнение
Для получения более подробной информации о реализации загрузите приложение IMS Single Registration для Android .
Проверка
Для проверки правильности вашей реализации системы единой регистрации IMS выполните следующие действия:
- Убедитесь, что набор тестов CtsTelephonyTestCases CTS проходит успешно.
- Установите и запустите TestRcsApp , чтобы выполнить базовые тестовые случаи для одной регистрации во время интеграции.
- Пройти сертификацию перевозчика для тестовых случаев IMS с единой регистрацией.