В 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 | Диспетчер обеспечения | Имсконфигимплбасе | Позволяет OEM-производителю или оператору связи предоставлять приложение для обновления статуса предоставления RCS, если оператор использует собственный механизм предоставления полномочий оператору связи. ImsService также должен поддерживать стандартный AutoConfigurationServer (ACS) для предоставления услуг операторам связи, которые не используют собственный механизм. |
Пересылка SIP-сообщений | SipDelegateManager | SipTransportImplBase | Позволяет приложению RCS сначала связать определенные теги функций RCS с ImsService устройства, а затем отправлять и получать сообщения SIP и обновления регистрации IMS, связанные с этими тегами функций RCS. |
Уведомления о выделенном носителе | Диспетчер подключений | Ответ на вызов данных | Позволяет приложению прослушивать уведомления QoS в сокете, связанном с определенным локальным портом. |
аутентификация GBA | bootstrapAuthenticationRequest | GbaService | Позволяет приложению RCS аутентифицироваться с помощью сети и ключей доступа, используемых для функций RCS, таких как передача файлов. |
Обмен возможностями пользователей RCS | ИмсРксМенеджер | Ркскапабилитиексчанжеимплбасе | Предоставляет 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
, которое должно соответствовать приложению контактов устройства. Затем этому приложению назначается роль контактов.
Чтобы получить доступ к APN IMS с помощью 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.