Twilio クライアント Android SDK

重要
AndroidおよびiOS用のTwilio Client SDKは廃止予定であり、Twilioの新しいProgrammable Voice SDKに置き換わります。Programmable Voice SDKはTwilio Client SDKと比べて大きく改善した安定性、向上したバックグラウンド処理、そして着信通話用の組み込み済みのプッシュ通知サポートといった多くの機能強化を提供しています。

下記のリンクのいずれかを参照して、新しいProgrammable Voice SDKを使い始めてください:
* Programmable Voice SDK for Androidクイックスタート
* Programmable Voice SDK for iOS: Objective-Cクイックスタート
* Programmable Voice SDK for iOS: Swiftクイックスタート

音声通話用のモバイルアプリケーションにTwilioを使い始めて間もない場合は、Programmable Voice SDKの使用を推奨します。 すでにTwilio Client SDKをお使いの場合は、できるだけ早期にProgrammable Voice SDKへのアップグレードを検討してください。

概要

Android アプリで電話をかけたり、受けたりしたいですか ?それならば、もう他を探す必要はありません !

Twilio クライアント Android は、固定電話や、ウェブ ブラザ、他のモバイル機器を始めとする Twilio クライアント デバイスとの音声通信を実現する Android 用の Java ライブラリです。

Android SDKのインストール

最新のクライアントSDKライブラリーをインストールするには、下記構成を build.gradle ファイルに追加してください。

allprojects {
  repositories {
     jcenter()
  }
}

dependencies {
  // The Client SDK resides on jCenter
  compile 'com.twilio:client-android:1.2.21'
}

マイクパーミッションの有効化

Android API レベル 23 以降を対象にするためには、使用しているアプリケーションがマイクへアクセスするためのランタイムパーミッションを確実にリクエストする必要があります。そのためには、次の 2 つの手順を実行します。

まず、Android マニフェストファイルに以下を追加します。

 <uses-permission android:name="android.permission.RECORD_AUDIO"/>

次に、アプリケーションコードでマイクパーミッションをリクエストします。

ActivityCompat.requestPermissions(this,
    new String[]{Manifest.permission.RECORD_AUDIO}, MIC_PERMISSION_REQUEST_CODE);
}

詳細については、公式の Android ドキュメントを参照してください。

クライアント・サービス

クライアントSDKはアプリケーションがフォアグラウンド状態ではない間に可用性を維持するため、Android Serviceを利用します。 サービスは AndroidManifest.xml 中で宣言されている必要があります。

<service android:name="com.twilio.client.TwilioClientService" 
                       android:exported="false" android:stopWithTask="true"/>

ProGuard 例外

proguard-project.txt ファイルに以下の行を追加します。

# Twilio Client
-keep class com.twilio.** { *; }

# Apache HttpClient
-dontwarn org.apache.http.**

これで、Twilioクライアント・ライブラリーがProGuardによって削除されないようになります。

アーキテクチャ

Twilio クライアント アプリには、3 つの主要な構成要素があります。

  1. Twilio クライアント Android ライブラリを使用する Android アプリ
  2. クライアント アプリにケイパビリティを許可し、TwiML を提供し、Twilio REST API 通話を行うサーバー
  3. テレフォニーを扱い、TwiML と Twilio REST API 通話を処理する Twilio のクラウド サービス

Twilio Client Android SDK Architecture

クライアント サイドのクラス

アプリから Twilio サービスに接続するためのプライマリ クラスが Deviceです。 このクラスは Twilio のサービスへの認証を整え、着信の接続を待ち受け、発信の接続を確立します。 このクラスのインスタンスは、次のセクションで説明する「ケイパビリティ トークン」を用いて作成します。

Twilio との着信または発信の接続は、 Connectionクラスのインスタンスで表現されます。

また、リスナー インターフェイスである DeviceListenerConnectionListenerを実装したオブジェクトには、ステータス コールバックを使用できます。

サーバー サイドのセキュリティ: ケイパビリティ トークン

Twilio クライアント SDK は、Android アプリから Twilio への通信を許可する際に ケイパビリティ トークン を使用します。 これらのトークンはユーザーのサーバーで生成され、着信の接続が受けられるか、発信の接続を行えるかどうかなど、アプリが使用できるケイパビリティを指定 することができます。 トークンは必ず一定時間で失効します。つまり、不正な利用を防止するため、すべてのトークンには有効期限があります。 トークンを更新する頻度は、ユーザーが決めることができます。

Twilio のケイパビリティ トークンは、JSON Web Token (JWT) 標準に基づいています。 トークンは Twilio の Helper ライブラリ で生成できます。さまざまな言語の Helper ライブラリが用意されています。

Twilio アカウントのセキュリティ保護のため、Google Play Store に登録するアプリには、ケイパビリティ トークンまたは Twilio の AuthToken を文字列で埋め込むことはお勧めしません。

クラス リファレンス

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。