Android 12 では、MMTEL 機能と RCS 機能を提供するための単一登録モデルのサポートが導入されました。このモデルを使用すると、デバイスは、デバイスの ImsService によって提供される IMS 単一登録を通じてすべての IMS 機能を管理するとともに、一部の携帯通信会社によって導入された要件を満たすことができます。単一のデバイスで複数の IMS 登録を管理するデュアル登録モデルと比較すると、単一登録モデルでは携帯通信会社のネットワークのトラフィックが減少し、信頼性が向上します。
Android 12 は、AOSP テレフォニー スタックが ImsService
によって提供される MMTEL 機能と、ユーザーが選択する RCS メッセージ アプリによって提供される RCS 機能の両方を管理できるようにする API のセットを含むアーキテクチャを通じて、この単一登録モデルをサポートします。デバイス メーカーと SoC ベンダーが IMS 単一登録をサポートするには、これらの API を実装して、ユーザーが選択する RCS メッセージ アプリの RCS 機能を有効にする必要があります。
図 1 は、IMS 単一登録モデルを使用する場合のデバイスの IMS スタックを示しています。IMS 単一登録を使用する場合、すべての IMS アプリは、MMTEL 機能と RCS 機能に向けたデバイスのデフォルトの ImsService を使用します。これには、プロビジョニング、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 デバイスは、次の表に記載されている AOSP API をすべてサポートする必要があります。
API サーフェス領域 | RCS アプリ API | ベンダー IMS API | 説明 |
---|---|---|---|
RCS プロビジョニング | ProvisioningManager | ImsConfigImplBase | 携帯通信会社が独自の携帯通信会社利用資格メカニズムを使用している場合、OEM または携帯通信会社が RCS プロビジョニングのステータスを更新するアプリを提供できるようにします。ImsService は、独自メカニズムを使用しない携帯通信会社のプロビジョニング用に、標準の AutoConfigurationServer(ACS)もサポートする必要があります。 |
SIP メッセージ転送 | SipDelegateManager | SipTransportImplBase | RCS アプリが最初に特定の RCS 機能タグをデバイスの ImsService に関連付け、その後 SIP メッセージと、RCS 機能タグに関連付けられた IMS 登録の更新を送受信できるようにします。 |
専用のベアラー通知 | ConnectivityManager | DataCallResponse | 特定のローカルポートに関連付けられたソケットでアプリが QoS 通知をリッスンできるようにします。 |
GBA 認証 | bootstrapAuthenticationRequest | GbaService | ファイル転送などの RCS 機能で使用されるネットワークとアクセスキーを RCS アプリが認証できるようにします。 |
RCS ユーザー機能交換 | ImsRcsManager | RcsCapabilityExchangeImplBase | MMTEL 機能と RCS 機能をベンダーの ImsService に送信し、RCS ユーザー機能交換のためにそれらを単一のエンティティでネットワークに公開できるようにする機能を AOSP に提供します。また、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
で IMS APN にアクセスしてデータ トラフィックを設定および管理する場合、アプリは android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
権限もリクエストする必要があります。
サンプルとソース
Android は、テストと開発の目的で基本的な RCS メッセージ機能をサポートするテスト メッセージ アプリを実装したアプリを AOSP で提供しています。このアプリは testapps/TestRcsApp
にあります。このアプリをデバイスにインストールすると、ユーザーのデフォルト メッセージ アプリとして設定できます。そうすれば、IMS 単一登録 API にアクセスするために必要な権限が付与されます。
Android は、RCS 用の ImsService のサンプル実装も提供しています。ソースコードは /testapps/ImsTestService
にあります。
実装
実装の詳細を参照するには、Android における IMS 単一登録をダウンロードしてください。
検証
IMS 単一登録の実装を検証するには、次の手順を実施します。
- CtsTelephonyTestCases CTS テストスイートに合格することを確認します。
- 統合時に基本的な単一登録テストケースを実行するには、TestRcsApp をインストールして実行します。
- IMS 単一登録のテストケースに対する携帯通信会社の認証に合格することを確認します。