IMS 單一註冊

Android 12 推出單一註冊模式支援,可提供 MMTEL 和 RCS 功能。這個模型可讓裝置透過裝置 ImsService 提供的單一 IMS 註冊,管理所有 IMS 功能,並遵守部分電信業者推出的規定。相較於雙重註冊模式 (在單一裝置上管理多個 IMS 註冊),單一註冊可減少電信業者網路上的流量,並提高可靠性。

Android 12 透過架構支援這項單一註冊模式,其中包含一組 API,可讓 AOSP 電話服務堆疊管理 ImsService 提供的 MMTEL 功能,以及使用者選取的 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 介面

支援 AOSP 電話堆疊中 IMS 單一註冊功能的 Android 裝置,必須支援下表所述的所有 AOSP API。

API 表面積 RCS 應用程式 API 供應商 IMS API 說明
RCS 佈建 ProvisioningManager ImsConfigImplBase 如果電信業者使用專屬的電信業者授權機制,則允許原始設備製造商 (OEM) 或電信業者提供應用程式,以更新 RCS 佈建作業狀態。ImsService 也必須支援標準 AutoConfigurationServer (ACS),以便為不使用專屬機制的電信業者進行佈建。
SIP 訊息轉送 SipDelegateManager SipTransportImplBase 允許 RCS 應用程式先將特定 RCS 功能代碼與裝置 ImsService 建立關聯,然後傳送及接收與這些 RCS 功能代碼相關聯的 SIP 訊息和 IMS 註冊更新。
專屬的承載者通知 ConnectivityManager DataCallResponse 允許應用程式在與特定本機通訊埠相關聯的 Socket 上監聽 QoS 通知。
GBA 驗證 bootstrapAuthenticationRequest GbaService 允許 RCS 應用程式驗證網路和用於 RCS 功能 (例如檔案傳輸) 的存取金鑰。
RCS 使用者能力交換 ImsRcsManager RcsCapabilityExchangeImplBase 讓 AOSP 能夠將 MMTEL 和 RCS 功能傳送至供應商 ImsService,以便在一個實體下發布至網路,用於 RCS 使用者功能交換。也允許其他應用程式查詢網路,瞭解一或多個聯絡人的 RCS 功能。

安全性和權限

Android 12 推出下列權限,確保可安全存取電信業者的網路和使用者資料:

RCS 功能的訊息應用程式必須定義 android.permission.PERFORM_IMS_SINGLE_REGISTRATION 權限。如要授予此權限,以下條件必須成立:

  • 應用程式必須以特權應用程式形式安裝,也就是預先安裝在裝置上,且可存取特權權限
  • 應用程式必須使用 RoleManager 設為使用者的預設簡訊角色

如果不符合上述兩個條件,系統會拒絕授予應用程式 android.permission.PERFORM_IMS_SINGLE_REGISTRATION 權限。也就是說,第三方應用程式不得存取 RCS 單一註冊 API,因為這類 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 單一註冊」。

驗證

如要驗證 IMS 單一註冊功能的導入方式,請按照下列步驟操作:

  • 確認 CtsTelephonyTestCases CTS 測試套件通過。
  • 請安裝並執行 TestRcsApp,在整合期間執行基本單一註冊測試案例。
  • 通過 IMS 單一註冊測試案例的電信業者認證。