Android アプリケーションにモバイル チャット ウィンドウを埋め込む
ライブチャット: https://developers.livechat.com/docs/getting-started/installing-livechat/android-widget/
プロジェクトをビルドに組み込むには:
ステップ 1. JitPack リポジトリをビルド ファイルに追加します。リポジトリの最後にあるルート build.gradle に追加します。
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
ステップ 2. 依存関係を追加する
dependencies {
implementation 'com.github.livechat:chat-window-android:v2.4.3'
}
アプリケーションにはインターネットを使用するための許可が必要です。 AndroidManifest.xmlに次の行を追加します。
< uses-permission android : name = " android.permission.INTERNET " />
このライブラリを使用するにはいくつかの方法があります。すべての機能を使用できるようにするには、アクティビティにビューを追加する静的メソッドを使用するか、xml の埋め込みビューとして、チャット ウィンドウをビューとして追加することをお勧めします。 ChatWindowView が初期化されている限り、新しいメッセージが到着するとイベントを取得します。
まず、チャットウィンドウを設定する必要があります
ChatWindowConfiguration.java コンストラクターを使用するだけです。ライセンス番号は必須であることに注意してください。
configuration = new ChatWindowConfiguration (
"your_licence_number" ,
"group_id" , // optional
"Visitor name" , // optional
"[email protected]" , // optional
customParamsMap // optional
);
new ChatWindowConfiguration.Builder()
使用することもできます。
ChatWindow の推奨される使用方法は 2 つあります。
必要なのは、チャット ウィンドウを作成、アタッチ、初期化することだけです。次の行の何か:
public void startFullScreenChat () {
if ( fullScreenChatWindow == null ) {
fullScreenChatWindow = ChatWindowUtils . createAndAttachChatWindowInstance ( getActivity ());
fullScreenChatWindow . setEventsListener ( this );
fullScreenChatWindow . init ( configuration );
}
fullScreenChatWindow . showChatWindow ();
}
ChatWindowView の場所とサイズを制御したい場合は、XML でビューを含めることによって、ChatWindowView をアプリに追加するとよいでしょう。
< com .livechatinc.inappchat.ChatWindowViewImpl
android : id = " @+id/embedded_chat_window "
android : layout_width = " match_parent "
android : layout_height = " 400dp " />
またはビューを直接インフレートする
ChatWindowViewImpl chatWindowView = new ChatWindowViewImpl ( MainActivity . this );
次に、全画面ウィンドウのアプローチと同様に ChatWindow を初期化します。
public void startEmmbeddedChat ( View view ) {
emmbeddedChatWindow . setEventsListener ( this );
emmbeddedChatWindow . init ( configuration );
// ...
emmbeddedChatWindow . showChatWindow ();
}
ユースケースによっては、ユーザーが戻るボタンを押した場合に ChatWindow を非表示にすることができます。ビューが表示されている場合は非表示にし、true を返す onBackPressed() 関数を使用できます。アクティビティ/フラグメントに以下を追加します。
@ Override
public boolean onBackPressed () {
return fullScreenChatWindow != null && fullScreenChatWindow . onBackPressed ();
}
このリスナーにより、次のことが可能になります。
ユーザーにファイルを送信できるようにするには、 ChatWindowView
のsupportFileSharing
を通じて設定する必要があります。オペレーティング システムがファイルを選択するインテントを処理できない場合は、 ChatWindowEventsListener
のonFilePickerActivityNotFound
コールバックを介して処理できます。
ChatWindowEventsListener からhandleUri
メソッドを実装することで、ユーザーがリンクを選択したときのチャット ウィジェットのデフォルトの動作を無効にできます。
@ Override
public boolean handleUri ( Uri uri ) {
// Handle uri here...
return true ; // Return true to disable default behavior.
}
インターネット接続の問題など、エラーが発生したときのユーザー エクスペリエンスをカスタマイズしたい場合があります。 onError
コールバック メソッドでtrue
返すことにより、チャット ウィンドウから発生するエラーを処理する責任を負います。
チャット ウィンドウは、ロードされると、散発的に再接続を試行することで接続の問題に対処できることに注意してください。このケースは、onError コールバック メソッドに次の条件を実装することで検出できます。
@ Override
public boolean onError ( ChatWindowErrorType errorType , int errorCode , String errorDescription ) {
if ( errorType == ChatWindowErrorType . WebViewClient && errorCode == - 2 && chatWindow . isChatLoaded ()) {
//Chat window can handle reconnection. You might want to delegate this to chat window
return false ;
} else {
reloadChatBtn . setVisibility ( View . VISIBLE );
}
Toast . makeText ( getActivity (), errorDescription , Toast . LENGTH_SHORT ). show ();
return true ;
}
ユーザーがアプリからサインアウトした後、チャット セッションをクリアしたい場合があります。これを行うには、アプリ内の任意の場所からChatWindowUtils.clearSession()
の静的メソッドを呼び出します。ログアウト フローの過程でChatWindowView
がアタッチされている場合は、clearSession コードの後にchatWindow.reload()
を呼び出して再ロードする必要もあります。 FullScreenWindowActivityExample.java を参照してください。
ユーザーが非表示の ChatWindow で新しいメッセージを受信したときに通知を受け取る必要がない場合は、 ChatWindowActivity
またはChatWindowFragment
を使用するとよいでしょう。
新しいアクティビティでチャット ウィンドウを開くには、マニフェストでChatWindowActivity
宣言する必要があります。 AndroidManifest.xml
の<application></application>
タグの間に次の行を追加します。
< activity
android : name = " com.livechatinc.inappchat.ChatWindowActivity "
android : configChanges = " orientation|screenSize "
android : exported = " false "
/>
最後に、アプリケーションのチャット ウィンドウを開きたい場所 (ボタン リスナーなど) に次のコードを追加します。コンテキスト (アクティビティまたはアプリケーション オブジェクト) と LiveChat ライセンス番号を指定する必要があります。
Intent intent = new Intent ( context , com . livechatinc . inappchat . ChatWindowActivity . class );
Bundle config = new ChatWindowConfiguration . Builder ()
. setLicenceNumber ( "<your_license_number>" )
. build ();
intent . putExtra ( ChatWindowConfiguration . KEY_CHAT_WINDOW_CONFIG , windowConfig );
startActivity ( intent );
訪問者の名前とメールアドレスを入力し、チャット前のアンケートを無効にすることで、チャット ウィンドウに自動的にログインすることもできます。
新しいフラグメントでチャット ウィンドウを開くには、アプリケーションのチャット ウィンドウを開きたい場所 (ボタン リスナーなど) に次のコードを追加する必要があります。 LiveChat ライセンス番号も指定する必要があります。
getSupportFragmentManager ()
. beginTransaction ()
. replace (
R . id . frame_layout ,
ChatWindowFragment . newInstance (
"your_license_number" ,
"your_group_id" , // optional
"visitor_name" , // optional
"visitor_email" , // optional
),
"chat_fragment"
)
. addToBackStack ( "chat_fragment" )
. commit ();
訪問者の名前と電子メールをフラグメントに提供し、事前チャットアンケートを無効にすることで、チャット ウィンドウに自動的にログインすることもできます。
次の ID を使用して独自の文字列リソースを定義することで、エラー メッセージを変更またはローカライズできます。
< string name = " failed_to_load_chat " >Couldn't load chat.</ string >
< string name = " cant_share_files " >File sharing is not configured for this app</ string >
< string name = " reload_chat " >Reload</ string >
バージョン 2.4.0 以降、移行の詳細は CHANGELOG.md にリストされています。
setUpWindow(configuration);
setConfiguration(configuration);
setUpListener(listener)
はsetEventsListener(listener)
に置き換えられます。ChatWindowView.clearSession()
はChatWindowUtils.clearSession(Context)
に移動されましたChatWindowView.createAndAttachChatWindowInstance(Activity)
はChatWindowUtils.createAndAttachChatWindowInstance(getActivity())
に移動されましたandroid.permission.READ_EXTERNAL_STORAGE
権限を指定する必要がなくなりました。SnapCall の統合には、AUDIO および VIDEO 権限が必要です。ユーザーが SnapCall 統合を使用できるようにするには、次のことを行う必要があります。
AndroidManifest.xml
ファイルに次の権限を追加します。 < uses-permission android : name = " android.permission.RECORD_AUDIO " />
< uses-permission android : name = " android.permission.MODIFY_AUDIO_SETTINGS " />
< uses-permission android : name = " android.permission.CAMERA " />
void onRequestAudioPermissions(String[] permissions, int requestCode)
オーバーライドしてユーザーに権限を要求します。 @ Override
public void onRequestAudioPermissions ( String [] permissions , int requestCode ) {
if ( Build . VERSION . SDK_INT >= Build . VERSION_CODES . M ) {
this . requestPermissions ( permissions , requestCode );
}
}
void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
オーバーライドして、結果をChatWindowView
に渡します if (! chatWindow . onRequestPermissionsResult ( requestCode , permissions , grantResults )) {
super . onRequestPermissionsResult ( requestCode , permissions , grantResults );
}
参考として、 FullScreenWindowActivityExample.java
を確認してください。