Встраивание окна мобильного чата в Android-приложение для
LiveChat: 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.
Все, что вам нужно сделать, это создать, прикрепить и инициализировать окно чата. Что-то в духе:
public void startFullScreenChat () {
if ( fullScreenChatWindow == null ) {
fullScreenChatWindow = ChatWindowUtils . createAndAttachChatWindowInstance ( getActivity ());
fullScreenChatWindow . setEventsListener ( this );
fullScreenChatWindow . init ( configuration );
}
fullScreenChatWindow . showChatWindow ();
}
Если вам нравится контролировать место и размер ChatWindowView, вы можете добавить его в свое приложение, включив представление в XML.
< 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, если пользователь нажмет кнопку «Назад». Вы можете использовать нашу функцию onBackPressed(), которая скрывает представление, если оно видимо, и возвращает true. В вашей активности/фрагменте добавьте следующее:
@ Override
public boolean onBackPressed () {
return fullScreenChatWindow != null && fullScreenChatWindow . onBackPressed ();
}
Этот слушатель дает вам возможность:
Чтобы предоставить вашим пользователям возможность отправлять файлы, вам необходимо настроить ее через supportFileSharing
в ChatWindowView
. Если операционная система не может обработать намерение выбрать файлы, вы можете обработать его с помощью обратного вызова onFilePickerActivityNotFound
в ChatWindowEventsListener
.
Вы можете отключить поведение виджета чата по умолчанию, когда пользователь выбирает ссылку, реализовав метод handleUri
из ChatWindowEventsListener.
@ Override
public boolean handleUri ( Uri uri ) {
// Handle uri here...
return true ; // Return true to disable default behavior.
}
Возможно, вы захотите настроить взаимодействие с пользователем при возникновении ошибок, таких как проблемы с подключением к Интернету. Возвращая true
в методе обратного вызова onError
вы берете на себя ответственность за обработку ошибок, поступающих из окна чата.
Имейте в виду, что окно чата после загрузки может решать проблемы с подключением, периодически пытаясь переподключиться. Этот случай можно обнаружить, реализовав следующее условие в методе обратного вызова 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
прикреплен во время процесса выхода из системы, вам также потребуется перезагрузить его, вызвав chatWindow.reload()
после кода ClearSession. См. FullScreenWindowActivityExample.java.
Если вам не нужно получать уведомления, когда пользователь получает новое сообщение в скрытом ChatWindow, вы можете использовать ChatWindowActivity
или ChatWindowFragment
Чтобы открыть окно чата в новом Activity, вам необходимо объявить 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 ();
Также возможно автоматически войти в окно чата, указав имя и адрес электронной почты посетителя во фрагменте и отключив опрос перед чатом.
Вы можете изменить или локализовать сообщения об ошибках, определив свои собственные строковые ресурсы со следующими идентификаторами.
< 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
в вашем AndroidManifest.xml.Для интеграции SnapCall требуются разрешения АУДИО и ВИДЕО. Чтобы разрешить вашим пользователям использовать интеграцию 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
.