Единая регистрация IMS

В 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.

API-поверхности, поддерживающие единую регистрацию IMS

Рисунок 3. Высокоуровневые API-поверхности, поддерживающие единую регистрацию IMS

Устройства Android, поддерживающие единую регистрацию IMS как часть стека телефонии AOSP, должны поддерживать все API AOSP, описанные в следующей таблице.

Площадь поверхности API API-интерфейсы приложений RCS API-интерфейсы IMS поставщиков Описание
RCS-обеспечение Менеджер по обеспечению ImsConfigImplBase Позволяет OEM-производителю или оператору связи предоставлять приложение для обновления статуса подготовки RCS, если оператор связи использует собственный механизм предоставления прав. Служба ImsService также должна поддерживать стандартный сервер автоконфигурации (ACS) для подготовки операторов связи, не использующих собственный механизм.
Пересылка сообщений SIP SipDelegateManager SipTransportImplBase Позволяет приложению RCS сначала связывать определенные теги функций RCS с устройством ImsService , а затем отправлять и получать сообщения SIP и обновления регистрации IMS, связанные с этими тегами функций RCS.
Уведомления для выделенных носителей ConnectivityManager 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 должно быть определено приложением обмена сообщениями с функциями 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, выполните следующие действия:

  • Убедитесь, что тестовый набор CTS CtsTelephonyTestCases успешно пройден.
  • Установите и запустите TestRcsApp для выполнения базовых тестовых случаев одиночной регистрации во время интеграции.
  • Пройти сертификацию оператора для тестовых случаев единой регистрации IMS.