IMS サービスの利用資格

Android 12 以降では、Android で TS.43 Service Entitlement Configuration に対応しています。これは、Voice-over-Wi-Fi(VoWiFi)、Voice-over-LTE(VoLTE)、SMS over IP(SMSoIP)、要求元デバイスに関連付けられた eSIM コンパニオン デバイスの On-Device Service Activation(ODSA)、データプラン情報などのサービスを有効化する利用資格検証手順を定義する GSMA 仕様です。

Android には、この仕様に対応するため、サービス プロバイダがモバイル デバイスに IP マルチメディア サブシステム(IMS)ネットワーク サービスのステータスを通知できる IMS サービス利用資格機能が用意されています。この利用資格機能を使用すると、デバイスは、GSMA TS.43 仕様で定義されているとおり、EAP-AKA 認証を使用して IMS 利用資格の状態を携帯通信会社の利用資格サーバーに照会できます。このとき、ユーザーが認証情報を手動で入力する必要はありません。

IMS 利用資格サーバーがある携帯通信会社は、サービス プロビジョニングに IMS サービス利用資格機能を使用できます。この機能を採用すると、以下のようなメリットが得られます。

  • 複数の製品と OEM で使用できるため、携帯通信会社のテストと認定の費用が削減されます。
  • 標準の Android アプリを使用するため、デバイス メーカーの開発オーバーヘッドが削減されます。
  • オープンソースであるため、デバイス メーカーと携帯通信会社がコードに貢献できます。
  • 北米の携帯通信会社に緊急連絡先の管理を提供できます。

アーキテクチャ

次の図は、IMS サービス利用資格機能のアーキテクチャと動作を示すものです。

TS.43 利用資格機能

図 1. TS.43 利用資格機能のアーキテクチャ

図 1 のとおり、IMS サービス利用資格機能のアーキテクチャには、以下のコンポーネントが含まれています。

  • service_entitlement TS.43 Service API 静的ライブラリ: TS.43 仕様を実装し、携帯通信会社の利用資格サーバーとやり取りして、TS.43 の各ユースケースに対してアプリ向けの API を公開します。
  • ImsServiceEntitlement クライアント アプリ: TS.43 Service API を使用します。ユーザーがサービスを有効にするための携帯通信会社のサービス ポータルをレンダリングする WebView などの UI 要素を実装し、ユーザー エクスペリエンスをエンドツーエンドで管理するために他の Android コンポーネントとやり取りします。

    携帯通信会社の TS.43 ベースの利用資格サーバーと連携するように Android を構成する方法について詳しくは、ImsServiceEntitlement アプリをご覧ください。

図 1 の番号が振られた線は、IMS サービス利用資格機能のコンポーネント間のやり取りを示しています。以下に、各ステップを番号順に説明します。

(1)クライアント アプリが、TS.43 Service API を呼び出してサービス資格情報リクエストを開始します。

(2)TS.43 Service API は、携帯通信会社の利用資格サーバーに HTTP リクエストを送信して EAP-AKA チャレンジを開始します。

(3)TS.43 Service API は、テレフォニー API(getIccAuthentication など)を呼び出して、EAP-AKA チャレンジ / レスポンスを完了します。

(4)TS.43 サービスは、EAP-AKA レスポンスが検証された後、携帯通信会社の利用資格サーバーからサービス利用資格または設定データを受け取ります。

(5)TS.43 サービスはクライアント アプリにサービス利用資格または設定データを返します。

(6)クライアント アプリは、データを処理し、必要に応じて、ユーザーがサービスの有効化を完了させる携帯通信会社のサービス ポータルをレンダリングします。

統合

ここでは、service_entitlement ライブラリと ImsServiceEntitlement アプリを統合する手順を説明します。

Android 12 API の依存関係がないため、service_entitlement ライブラリと ImsServiceEntitlement アプリは古い Android プラットフォームにバックポートできます。

service_entitlement ライブラリ

service_entitlement ライブラリは ImsServiceEntitlement app に静的にリンクされているため、ライブラリを ImsServiceEntitlement アプリに統合するのに必要な追加手順はありません。

service_entitlement ライブラリは、データプランや ODSA などの TS.43 のユースケースに使用するために独自のアプリと統合できます。また、EAP-AKA プロトコルに基づく TS.43 資格情報以外のユースケースでも、アプリにライブラリを統合できます。

こうしたユースケースに使用する API は以下のとおりです。

  • このライブラリに実装されている TS.43 HTTP プロトコルを使用する TS.43 アプリ: ServiceEntitlement クラスの API を使用します。
  • このライブラリに実装されている EAP-AKA プロトコルを使用する TS.43 以外のアプリ: EapAkaHelper クラスで公開される API を使用します。

ImsServiceEntitlement アプリ

Android では、デフォルトで ImsServiceEntitlement アプリが特権アプリとしてプロダクト パーティションにインストールされています。このアプリを設定するには、以下の CarrierConfig キーを使用します。

キー
KEY_ENTITLEMENT_SERVER_URL_STRING 携帯通信会社の利用資格サーバーの URL。https:// プレフィックスが必要です。
KEY_FCM_SENDER_ID_STRING 携帯通信会社の FCM 送信者 ID。

携帯通信会社で FCM が必要とされない場合、この値を設定しないでください。
KEY_SHOW_VOWIFI_WEBVIEW_BOOL 携帯通信会社で VoWiFi サービスの登録にウェブポータル UI が必要となる場合は、true に設定します。たとえば、利用規約への同意や緊急連絡先の入力などです。

これは通常、北米の携帯通信会社で必要になります。
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
KEY_SHOW_VOWIFI_WEBVIEW_BOOLtrue の場合は、com.android.imsserviceentitlement/.WfcActivationActivity に設定します。
KEY_IMS_PROVISIONING_BOOL 携帯通信会社で、バックグラウンドでの IMS(VoLTE / VoWiFi / SMSoIP)サービスのネットワーク プロビジョニングが必要とされる場合は、true に設定します。

欧州の一部の携帯通信会社では必須です。
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL KEY_IMS_PROVISIONING_BOOLtrue の場合、true に設定します。

携帯通信会社の利用資格サーバーとウェブポータルへの HTTP トラフィックは、デフォルトのネットワーク(デフォルトのモバイルデータや Wi-Fi など)を経由します。

GMS パートナー: 以下の携帯通信会社は、TS.43 v5.0 仕様に従って Android 12 の TS.43 資格情報アプリでサポートされています。

  • 米国: CSpire、US Cellular、Cellcom
  • フランス: Orange

IMS プロビジョニング用の追加のシステム UI

ここでは、OEM が IMS サービスのプロビジョニングに関連する追加のシステム UI 要素をサポートする方法について説明します(VoWiFi をプロビジョニングする際に通知を表示する場合など)。

ImsServiceEntitlement アプリが ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value) システム API を使って VoWiFi のプロビジョニング状態をプラットフォームに設定します。この API は、VoLTE(KEY_VOLTE_PROVISIONING_STATUS を使用)と SMSoIP(KEY_SMS_OVER_IP_ENABLED を使用)にも使用されます。

すると、システム UI で、getProvisioningIntValue を使用するか、コールバックを登録してプロビジョニング状態の変化を registerProvisioningChangedCallback を通じて監視することにより、プロビジョニング状態を読み取ることができるようになります。

テストのための設定のオーバーライド

テストのために ImsServiceEntitlement アプリの動作を一時的に変更するには、以下の手順を使用します。携帯通信会社の設定をオーバーライドする方法については、携帯通信会社の設定のオーバーライドをご覧ください。

VoWiFi の登録手順をスキップする

VoWiFi の登録手順をスキップして、VoWiFi を直接有効にできるようにするには、携帯通信会社の設定 KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING をオーバーライドし、値を空の文字列に設定します。

IMS プロビジョニングをスキップする

IMS プロビジョニングをスキップして IMS サービスを利用可能にし、ユーザーがネットワーク プロビジョニングなしで IMS サービスを有効にできるようにするには、携帯通信会社の設定 KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL をオーバーライドして、値を false に設定します。

利用資格サーバーの URL の変更

利用資格サーバーの URL を変更するには、携帯通信会社の設定 KEY_ENTITLEMENT_SERVER_URL_STRING をオーバーライドし、値を新しい URL 文字列に設定します。https:// プレフィックスが必要です。

携帯通信会社の設定のオーバーライド

Android 11 以降では、携帯通信会社の設定をオーバーライドするコマンドが組み込まれており、root 権限で使用できます。

次のコマンドは、携帯通信会社の設定のキー carrier_volte_provisioning_required_bool をオーバーライドして、値を false に設定する方法の例です。コマンドを複数回実行すると、複数の設定をオーバーライドできます。

adb root
adb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false

オーバーライドをすべて取り消すには、次のコマンドを使用します。

adb shell cmd phone cc clear-values

詳しい情報は次のコマンドで表示されます。

adb shell cmd phone cc