IMS單一註冊

Android 12 引入了對單一註冊模型的支持,以提供 MMTEL 和 RCS 功能。此模型允許設備通過設備的 ImsService 提供的單個 IMS 註冊來管理所有 IMS 功能,並符合某些電信運營商引入的要求。與雙註冊模式在一台設備上管理多個IMS註冊相比,單註冊減少了運營商網絡的流量並提高了可靠性。

Android 12 通過具有一組 API 的架構支持這種單一註冊模型,這些 API 允許 AOSP 電話堆棧管理 ImsService 提供的ImsService功能和用戶選擇的 RCS 消息傳遞應用程序提供的 RCS 功能。為了支持 IMS 單一註冊,設備製造商和 SoC 供應商必須實施這些 API 以在用戶選擇的 RCS 消息傳遞應用程序中啟用 RCS 功能。

圖 1 說明了使用 IMS 單一註冊模型時設備的 IMS 堆棧。所有 IMS 應用程序通過單個 IMS 註冊使用設備的默認 ImsService 來實現 MMTEL 和 RCS 功能。這包括供應、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 表面

支持 IMS 單一註冊作為 AOSP 電話堆棧的一部分的 Android 設備需要支持下表中描述的所有 AOSP API。

API表面積RCS 應用程序 API供應商 IMS API描述
RCS 配置供應管理器ImsConfigImplBase如果運營商使用專有運營商授權機制,則允許 OEM 或運營商提供應用程序來更新 RCS 配置狀態。 ImsService 還必須支持標準 AutoConfigurationServer (ACS),以便為不使用專有機制的運營商進行配置。
SIP消息轉發SIPDelegateManager SipTransportImplBase允許 RCS 應用程序首先將特定的 RCS 功能標籤與設備ImsService ,然後發送和接收與這些 RCS 功能標籤關聯的 SIP 消息和 IMS 註冊更新。
專用承載通知連接管理器數據呼叫響應允許應用在與特定本地端口關聯的套接字上偵聽 QoS 通知。
GBA認證引導認證請求Gb服務允許 RCS 應用通過網絡進行身份驗證並訪問用於 RCS 功能(如文件傳輸)的密鑰。
RCS用戶能力交換ImsRcsManager RcsCapabilityExchangeImplBase使 AOSP 能夠將其 MMTEL 和 RCS 功能發送到供應商 ImsService,以便它們可以在一個實體下發佈到網絡以進行 RCS 用戶能力交換。還允許對一個或多個聯繫人的 RCS 功能感興趣的其他應用程序向網絡查詢聯繫人 RCS 功能。

安全和權限

Android 12 引入了以下權限,以確保對運營商網絡和用戶數據的安全訪問:

android.permission.PERFORM_IMS_SINGLE_REGISTRATION權限必須由具有 RCS 功能的消息傳遞應用程序定義。要授予此權限,必須滿足以下條件:

  • 該應用程序必須作為特權應用程序安裝,這意味著它已預安裝在設備上並被允許訪問特權權限
  • 必須使用RoleManager將應用設置為用戶的默認 SMS 角色

如果不滿足這兩個條件,應用程序將被拒絕訪問android.permission.PERFORM_IMS_SINGLE_REGISTRATION權限。這意味著第三方應用程序不允許訪問 RCS 單一註冊 API,因為它們需要設備上的運營商認證。

android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE權限授予同樣具有 READ_CONTACTS 權限的應用時,該權限允許應用使用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 Single Registration

驗證

要驗證 IMS 單一註冊的實施,請執行以下操作:

  • 確保CtsTelephonyTestCases CTS 測試套件通過。
  • 安裝並運行TestRcsApp以在集成期間運行基本的單一註冊測試用例。
  • IMS單一註冊測試用例通過運營商認證。