IMS單一註冊

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

Android 12 透過具有一組 API 的架構支援這種單一註冊模型,這些 API 允許 AOSP 電話堆疊管理ImsService提供的 MMTEL 功能和使用者選擇的 RCS 訊息應用程式提供的 RCS 功能。為了支援 IMS 單一註冊,設備製造商和 SoC 供應商必須實作這些 API,以在使用者選擇的 RCS 訊息應用程式中啟用 RCS 功能。

圖 1 說明了使用 IMS 單一註冊模型時設備的 IMS 堆疊。所有 IMS 應用程式都透過單一 IMS 註冊使用裝置的預設 ImsService for 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 還必須支援標準自動設定伺服器 (ACS),以便為不使用專有機制的營運商進行設定。
SIP訊息轉發SipDelegateManager SipTransportImplBase允許 RCS 應用程式先將特定 RCS 功能標記與裝置ImsService關聯,然後傳送和接收與這些 RCS 功能標記相關的 SIP 訊息和 IMS 註冊更新。
專用承載通知連線管理器數據呼叫回應允許應用程式偵聽與特定本機連接埠關聯的套接字上的 QoS 通知。
GBA認證引導驗證請求GBA服務允許 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,因為它們需要裝置上的營運商認證。

當授予同時具有 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 單一註冊測試用例的運營商認證。