IMS単一登録

Android 12では、MMTELおよびRCS機能を提供するための単一の登録モデルのサポートが導入されています。このモデルにより、デバイスは、デバイスのImsServiceによって提供される単一のIMS登録を通じてすべてのIMS機能を管理し、一部の通信事業者によって導入された要件に準拠することができます。複数のIMS登録が1つのデバイスで管理されるデュアル登録モデルと比較して、シングル登録は通信事業者のネットワーク上のトラフィックを減らし、信頼性を高めます。

Android 12は、AOSPテレフォニースタックがImsServiceによって提供されるImsService機能とユーザーが選択したRCSメッセージングアプリによって提供されるRCS機能の両方を管理できるようにする一連のAPIを備えたアーキテクチャを通じて、この単一登録モデルをサポートします。 IMS単一登録をサポートするには、デバイスメーカーとSoCベンダーがこれらのAPIを実装して、ユーザーが選択したRCSメッセージングアプリでRCS機能を有効にする必要があります。

図1は、IMS単一登録モデルを使用する場合のデバイスのIMSスタックを示しています。すべてのIMSアプリケーションは、単一のIMS登録でデバイスのデフォルトのImsServiceforMMTELおよび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デバイスは、次の表で説明するすべてのAOSPAPIをサポートする必要があります。

API表面積RCSアプリケーションAPIベンダーIMSAPI説明
RCSプロビジョニングProvisioningManager ImsConfigImplBaseキャリアが独自のキャリア資格メカニズムを使用している場合、OEMまたはキャリアがRCSプロビジョニングステータスを更新するアプリを提供できるようにします。 ImsServiceは、独自のメカニズムを使用しないキャリアのプロビジョニングのために、標準のAutoConfigurationServer(ACS)もサポートする必要があります。
SIPメッセージ転送SipDelegateManager SipTransportImplBase RCSアプリケーションが最初に特定のRCS機能タグをデバイスImsServiceに関連付け、次にそれらのRCS機能タグに関連付けられたSIPメッセージとIMS登録更新を送受信できるようにします。
専用ベアラ通知ConnectivityManager DataCallResponseアプリが特定のローカルポートに関連付けられているソケットでQoS通知をリッスンできるようにします。
GBA認証bootstrapAuthenticationRequest GbaService RCSアプリがネットワークで認証し、ファイル転送などのRCS機能に使用されるキーにアクセスできるようにします。
RCSユーザー機能交換ImsRcsManager RcsCapabilityExchangeImplBase AOSPにMMTELおよびRCS機能をベンダーImsServiceに送信する機能を提供し、RCSユーザー機能交換のために1つのエンティティの下でネットワークに公開できるようにします。また、1つ以上の連絡先の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を使用してIMSAPNにアクセスし、データトラフィックを設定および管理するには、アプリはandroid.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS権限も要求する必要があります。

例とソース

Androidは、テストおよび開発の目的で基本的なRCSメッセージングサポートを備えたテストメッセージングアプリを実装するAOSPのアプリを提供します。このアプリはtestapps/TestRcsAppにあります。アプリがデバイスにインストールされると、ユーザーのデフォルトのメッセージングアプリとして設定でき、IMS単一登録APIにアクセスするために必要なアクセス許可が付与されます。

Androidは、RCS用のImsServiceのサンプル実装も提供します。ソースコードは/testapps/ImsTestServiceにあります。

実装

実装の詳細については、 AndroidでIMSシングル登録をダウンロードしてください。

検証

IMS単一登録の実装を検証するには、以下を実行します。

  • CtsTelephonyTestCasesCTSテストスイートに合格していることを確認します。
  • TestRcsAppをインストールして実行し、統合中に基本的な単一登録テストケースを実行します。
  • IMS単一登録テストケースのキャリア認定に合格します。