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 サービス利用資格機能のアーキテクチャと動作を示すものです。
図 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_BOOL が true の場合は、com.android.imsserviceentitlement/.WfcActivationActivity に設定します。 |
KEY_IMS_PROVISIONING_BOOL |
携帯通信会社で、バックグラウンドでの IMS(VoLTE / VoWiFi / SMSoIP)サービスのネットワーク プロビジョニングが必要とされる場合は、true に設定します。欧州の一部の携帯通信会社では必須です。 |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL |
KEY_IMS_PROVISIONING_BOOL が true の場合、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