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を示しています。
図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
-
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
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単一登録テストケースのキャリア認定に合格します。