IMS 단일 등록

Android 12에서는 MMTEL 및 RCS 기능을 제공하기 위한 단일 등록 모델이 지원됩니다. 이 모델에서는 기기가 기기의 ImsService에 의해 제공되는 단일 IMS 등록을 통해 모든 IMS 기능을 관리하고 일부 이동통신사가 도입한 요구 사항을 준수할 수 있습니다. 하나의 기기에서 여러 IMS 등록이 관리되는 이중 등록 모델과 비교했을 때, 단일 등록은 이동통신사 네트워크의 트래픽을 줄여 주고 안정성을 향상해 줍니다.

Android 12는 AOSP 전화통신 스택이 ImsService에서 제공하는 MMTEL 기능과 사용자가 선택한 RCS 메시지 앱에서 제공하는 RCS 기능을 모두 관리할 수 있도록 하는 API 세트가 있는 아키텍처를 통해 이 단일 등록 모델을 지원합니다. IMS 단일 등록을 지원하려면 기기 제조업체와 SoC 공급업체가 이러한 API를 구현하여 사용자가 선택한 RCS 메시지 앱에서 RCS 기능을 사용 설정해야 합니다.

그림 1은 IMS 단일 등록 모델을 사용하는 경우 기기의 IMS 스택을 보여줍니다. 모든 IMS 애플리케이션은 단일 IMS 등록을 통해 MMTEL 기능과 RCS 기능에서 기기의 기본 ImsService를 사용합니다. 여기에는 프로비저닝, SIP 메시지 전달, RCS 사용자 기능 교환이 포함됩니다.

단일 등록 모드 아키텍처

그림 1. 단일 등록 모델 아키텍처

Android 11 이하에서는 MMTEL 기능과 RCS 기능을 제공하기 위해 이중 등록 모델만 지원합니다. MMTEL은 기기의 ImsService에 의해 제공되고, RCS 기능은 오버더톱으로 구현되어 자체 IMS 스택과 이동통신사 네트워크로의 연결을 독립적으로 관리합니다.

그림 2는 이중 등록 모델의 아키텍처를 보여줍니다. 이 모델에서는 각 앱이 이동통신사 네트워크에 연결하는 작업과 MMTEL 기능 및 RCS 기능을 위해 IMS 등록을 설정하는 작업을 담당합니다. 기기의 ImsService는 MMTEL을 구현하고, 기기의 IMS 데이터 연결을 사용하여 이동통신사 네트워크에 연결하며, 다른 RCS 앱과 독립적으로 작동합니다.

이중 등록 모드 아키텍처

그림 2. 이중 등록 모델 아키텍처

IMS 단일 등록 API

IMS 단일 등록이 필요한 이동통신사를 이용하는 기기는 IMS 단일 등록 API를 지원하고 Android 기능 PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION을 정의해야 합니다. 그림 3은 IMS 단일 등록을 지원하는 API를 보여줍니다.

IMS 단일 등록을 지원하는 API 노출 영역

그림 3. IMS 단일 등록을 지원하는 개략적인 API 노출 영역

AOSP 전화통신 스택의 일부로 IMS 단일 등록을 지원하는 Android 기기는 다음 표에 나와 있는 모든 AOSP API를 지원해야 합니다.

API 노출 영역 RCS 애플리케이션 API 공급업체 IMS API 설명
RCS 프로비저닝 ProvisioningManager ImsConfigImplBase 이동통신사가 독점 이동통신사 권한 메커니즘을 사용하는 경우 OEM 또는 이동통신사가 RCS 프로비저닝 상태를 업데이트하는 앱을 제공할 수 있습니다. ImsService는 독점 메커니즘을 사용하지 않는 이동통신사 프로비저닝을 위해 표준 AutoConfigurationServer(ACS)도 지원해야 합니다.
SIP 메시지 전달 SipDelegateManager SipTransportImplBase RCS 애플리케이션이 먼저 기기 ImsService에 특정 RCS 기능 태그를 연결한 다음 RCS 기능 태그와 관련된 SIP 메시지 및 IMS 등록 업데이트를 주고받을 수 있습니다.
전용 베어러 알림 ConnectivityManager DataCallResponse 앱이 특정 로컬 포트와 연결된 소켓에서 QoS 알림을 수신 대기할 수 있습니다.
GBA 인증 bootstrapAuthenticationRequest GbaService RCS 앱이 네트워크를 인증하고 파일 전송과 같은 RCS 기능에 사용되는 키에 액세스할 수 있습니다.
RCS 사용자 기능 교환 ImsRcsManager RcsCapabilityExchangeImplBase RCS 사용자 기능 교환을 위해 MMTEL 및 RCS 기능이 네트워크에 하나의 항목으로 게시될 수 있도록 AOSP에 MMTEL 및 RCS 기능을 공급업체 ImsService로 전송하는 기능을 제공합니다. 또한 하나 이상의 연락처의 RCS 기능에 관심 있는 다른 앱이 네트워크에 RCS 기능을 쿼리할 수 있도록 합니다.

보안 및 권한

이동통신사 네트워크와 사용자 데이터에 안전하게 액세스할 수 있도록 Android 12에 다음 권한이 추가되었습니다.

android.permission.PERFORM_IMS_SINGLE_REGISTRATION 권한은 RCS 기능이 있는 메시지 앱에서 정의해야 합니다. 이 권한이 부여되려면 다음 조건을 충족해야 합니다.

  • 앱이 권한 있는 애플리케이션으로 설치되어야 합니다. 즉, 앱이 기기에 사전 설치되어 있으며 독점 권한에 액세스할 수 있어야 합니다
  • 앱이 RoleManager를 사용하여 사용자의 기본 SMS 역할로 설정되어야 합니다.

이 두 조건이 모두 충족되지 않으면 앱에 android.permission.PERFORM_IMS_SINGLE_REGISTRATION 권한이 부여되지 않습니다. 즉, 타사 앱은 기기에서 이동통신사 인증이 요구되므로 RCS 단일 등록 API에 액세스할 수 없습니다.

READ_CONTACTS 권한을 갖는 앱에 android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE 권한이 부여되면 앱이 RcsUceAdapter를 사용하여 전화번호의 RCS 기능을 요청할 수 있습니다. 이 권한이 부여되려면 다음 조건을 충족해야 합니다.

  • 앱이 권한 있는 애플리케이션으로 설치되어야 합니다. 즉, 앱이 기기에 사전 설치되어 있으며 독점 권한에 액세스할 수 있어야 합니다
  • 앱이 다음 RoleManager 역할 중 하나로 정의되어야 합니다.

    • 기본 메시지 앱: 사용자가 설정합니다.
    • 기본 다이얼러 앱: 사용자가 설정합니다.
    • 기본 연락처 앱: Android 12에 추가된 역할로, OEM이 기기 오버레이 값 config_systemContacts를 통해 패키지 이름을 정의할 수 있도록 합니다. 이 값은 기기의 연락처 앱에 대응해야 합니다. 그러면 앱에 연락처 역할이 부여됩니다.

데이터 트래픽을 설정하고 관리하기 위해 ConnectivityManager를 사용하여 IMS APN에 액세스하려면 앱이 android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS 권한도 요청해야 합니다.

예 및 소스

Android는 AOSP에서 테스트 및 개발용으로 기본적인 RCS 메시지 지원을 갖춘 테스트 메시지 앱을 구현하는 앱을 제공합니다. 이 앱은 testapps/TestRcsApp에서 찾을 수 있습니다. 이 앱이 기기에 설치되면 사용자의 기본 메시지 앱으로 설정할 수 있으며 IMS 단일 등록 API에 액세스하는 데 필요한 권한을 갖습니다.

Android는 RCS를 위한 샘플 ImsService 샘플 구현도 제공합니다. 소스 코드는 /testapps/ImsTestService에 있습니다.

구현

구현에 관한 자세한 내용은 Android의 IMS 단일 등록을 참고하세요.

유효성 검사

IMS 단일 등록의 구현을 검증하려면 다음 단계를 따르세요.

  • CtsTelephonyTestCases CTS 테스트 모음을 통과하는지 확인합니다.
  • TestRcsApp을 설치하고 실행하여 통합 중에 기본적인 단일 등록 테스트 사례를 실행합니다.
  • 이동통신사의 IMS 단일 등록 테스트 사례 인증을 통과합니다.