Перейти к содержанию

Имплементация Webim Mobile Widget в Android-приложение

Webim Mobile Widget - это полноценный компонент просмотра чата, содержащий в себе всё необходимое. Webim Mobile Widget является обычным компонентом View ОС Android и может быть легко интегрирован в приложение как посредством XML-конфигурации, так и через код приложения. В этом компоненте все значения по умолчанию уже заданы, но могут быть переопределены в соответствии с Вашими потребностями - например, для сходства интерфейса виджета с графической темой интерфейса приложения.

Webim Mobile Widget основан на Mobile SDK, и потому его использование будет отличной альтернативой для тех, у кого недостаточно времени или знаний для использования SDK.

Ниже приведена инструкция по установке и использованию Webim Mobile Widget в ваше мобильное приложение.

Добавление библиотеки в зависимости

// kotlin dsl
dependencies {
    implementation("ru.webim.sdk:chatview:<LAST_VERSION>)
}
// groovy
dependencies {
    implementation("ru.webim.sdk:chatview:<LAST_VERSION>")
}

Настройка Webim Mobile Widget

ChatView - это обычный компонент представления, задаваемый как через код, так и через XML-макеты.

XML

<ru.webim.chatview.ui.ChatView
    android:id="@+id/chatView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:chv_account_name="https://demo.webim.ru"
    app:chv_location_name="mobile" />

Параметры chv_account_name и chv_location_name определяют ваш аккаунт Webim и используемое размещение соответственнно. Эти параметры так же могут быть изменены в коде путём спецификации сессии Webim..

Java

Внутренняя логика мобильного виджета основана на Webim Mobile SDK. Поэтому, чтобы настроить просмотр чата, передайте ему настроенную сессию, которую вы ранее использовали для работы с Webim Mobile SDK. Вам необходимо передать сессию Webim в ChatView с помощью метода ChatView#setSession. Теперь ChatView сделает всю работу за вас.

ChatView chatView = new ChatView(getContext());
chatView.setSession(session);
containerView.addView(chatView);

Сессия устанавливается следующим образом:

WebimSession session = Webim.newSessionBuilder()
    .setContext(getContext())
    .setAccountName("https://demo.webim.ru")
    .setLocation("mobile")
    ...
    .build();

Далее представление отвечает за работу с сессией, запуск, остановку и её уничтожение.

Установка представления чата программно позволяет Вам кастомизировать чат более гибко. Также допустимо использование комбинации настройки параметров в коде и XML-макетов. Объявите представление чата в разметке, найдите его в коде и установите сессию для него.

Кастомизация темы

Вы можете изменять цвета по умолчанию компонента отображения чата. Вы можете сделать это, например, создав свой собственный стиль, унаследованный от ChatViewDefaultStyle.

<style name="MyChatTheme" parent="ChatViewDefaultStyle">
    <item name="chv_bar_background">@color/white</item>
    <item name="chv_message_border">@color/message_border</item>
    ...
</style>

Затем, в макете укажите созданный Вами стиль в поле app:chv_chat_style объекта ChatView. Пример приведён ниже:

<ru.webim.chatview.ui.ChatView
    android:id="@+id/chatView"
    app:chv_chat_style="@style/MyChatTheme"
    ...
    />

Существует достаточно большое количество параметров, доступных для изменения. Они приведены ниже в таблице с указанием названия и используемого типа данных.

Style item Type
chv_primary_color integer or color
chv_secondary_color integer or color
chv_accent_color integer or color
chv_bar_background integer or color
chv_message_border integer or color
chv_text_light integer or color
chv_text_strong integer or color
chv_text_medium integer or color
chv_text_hint integer or color
chv_sent_bubble integer or color
chv_sent_text integer or color
chv_sent_link_text integer or color
chv_sent_time_text integer or color
chv_sent_edited_text integer or color
chv_sent_selected integer or color
chv_sent_divider integer or color
chv_sent_file_data integer or color
chv_received_bubble integer or color
chv_received_text integer or color
chv_received_link_text integer or color
chv_received_time_text integer or color
chv_received_edited_text integer or color
chv_received_selected integer or color
chv_received_divider integer or color
chv_received_sender_name integer or color
chv_system_bubble integer or color
chv_system_text integer or color
chv_system_link_text integer or color
chv_system_time_text integer or color
chv_buttons_background integer or color
chv_buttons_pending integer or color
chv_buttons_complete integer or color
chv_buttons_canceled integer or color
chv_message_replied integer or color
chv_prompt_syncing integer or color
chv_prompt_net_lost integer or color
chv_prompt_net_losing integer or color
chv_message_text_size dimension
chv_message_corner_radius dimension
chv_message_menu_background integer or color
chv_chat_menu_background integer or color