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 | Менеджер по обеспечению | ImsConfigImplBase | Позволяет OEM или оператору предоставлять приложение для обновления статуса предоставления 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, которая позволяет 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 Single Registration на Android .
Проверка
Чтобы проверить реализацию единой регистрации IMS, выполните следующие действия:
- Убедитесь, что набор тестов CtsTelephonyTestCases CTS пройден.
- Установите и запустите TestRcsApp для выполнения базовых тестовых случаев одиночной регистрации во время интеграции.
- Пройти сертификацию оператора для тестовых случаев единой регистрации IMS.