Примеры и описания основных настроек JivoSDK:
- Jivo.init - Инициализация основных компонентов JivoSDK.
- Jivo.setData - Установка канала, JWT-токена и хоста.
- Jivo.enableLogging - Включение логирования JivoSDK.
- Jivo.setContactInfo - Отправка контактных данных посетителя.
- Jivo.setCustomData - Отправка дополнительной информации о клиенте.
- Jivo.clear - Очистка данных JivoSDK.
- Jivo.addNewMessageListener - Получения информации о непрочитанных сообщениях.
- Jivo.disableInAppNotification - Отключения in-app уведомлений.
- Jivo.addNotificationPermissionListener - Получение информации о разрешении уведомлений.
- Jivo.setConfig - Дополнительные настройки JivoSDK.
- Jivo.setLocale - Установка языка.
Основной метод для инициализации JivoSDK. После вызова метода инициализируются основные компоненты для полноценной работы JivoSDK.
Important
Инициализируйте библиотеку JivoSDK только в методе Application.onCreate(). Если в приложении есть несколько
процессов, убедитесь, что JivoSDK инициализируется только в главном процессе.
Пример:
Kotlin
class App : Application() { override fun onCreate() { super.onCreate() Jivo.init(appContext = this) } }Java
public class App extends Application { ... @Override public void onCreate() { super.onCreate(); Jivo.init(this); ... } ... }
Для установки и смены канала, сохранения истории и установки хоста подключения(дополнительная опция), необходимо использовать метод Jivo.setData().
Метод Jivo.setData() принимает следующие параметры:
| Название | Тип | Описание |
|---|---|---|
| widgetId | String | Уникальный id канала. |
| userToken | String | Необязательный параметр, JWT-токен используется для сохранения истории. |
| host | String | Необязательный параметр, можно передать пустую строку. |
Пример:
Kotlin
Jivo.setData(widgetId = "xXxXxXxXx", userToken = "your_jwt_token", host = "")Java
Jivo.setData("xXxXxXxXx", "your_jwt_token", "");
Important
Метод Jivo.setData(), необходимо вызвать до открытия чата.
После вызова Jivo.setData(), не требуется вызывать методы Jivo.clear(), Jivo.unsubscribeFromPush().
Note
Сохранение истории чата после удаления приложения или очистки данных. Для сохранения истории необходимо сгенерировать
JWT-токен. Для подписи JWT-токена, потребуется сгенерировать SECRET и передать его в Jivo. Хранить SECRET только на backend’e, иначе безопасность будет нарушена.
Сгенерированный JWT-токен нужно передать метод Jivo.setData(). Более подробную информацию JWT-токене вы можете получить на сайте https://jwt.io/introduction
Пример формирования payload:
{
"id": "123", // Уникальный идентификатор клиента, обязательным условием имя поля должно быть "id"
... // Любые параметры
}Пример формирования токена:
token = jwt.encode(payload, secret, HS256)Включение логирования JivoSDK, в классе унаследованном от класса Application, в теле переопределенного метода onCreate(),
необходимо проинициализировать Timber и добавить вызов метода Jivo.enableLogging(). Для фильтрации логов
используйте тег - JivoSDK.
Пример:
Kotlin
class App : Application() { ... override fun onCreate() { ... Timber.plant(Timber.DebugTree()) Jivo.init(this) Jivo.enableLogging() ... } ... }Java
public class App extends Application implements ReactApplication { ... @Override public void onCreate() { ... Timber.plant(new Timber.DebugTree()); Jivo.init(this); Jivo.enableLogging(); ... } ... }
Демонстрация логирования с помощью встроенного инструмента Logcat:
Устанавливает контактные данные посетителя. Данные отображаются оператору, как будто их ввел посетитель в форме контактов.
| Название | Тип | Описание |
|---|---|---|
| name | String | Имя пользователя, используется как обращение в сообщениях |
| String | Адрес электронной почты, для отправки сообщений | |
| phone | String | Номер телефона для звонков |
| description | String | Дополнительная информация по клиенту (отобразится в поле "Описание" - раздел "О клиенте") |
Пример:
Kotlin
Jivo.setContactInfo( contactInfo { name = userName.value email = userEmail.value ?: "" phone = userPhone.value ?: "" description = userDescription.value } )Java
Jivo.setContactInfo( new ContactInfo( name, email, phone, description ) );
С помощью этой функции можно передать произвольную дополнительную информацию о клиенте оператору. Информация отображается в информационной панели справа в приложении оператора. Метод может быть вызван любое число раз - если диалог с оператором уже установлен, то данные в приложении оператора будут обновлены в реальном времени. Поля выводятся в порядке их следования в массиве.
| Название | Тип | Описание |
|---|---|---|
| content | String | Содержимое поля данных. Теги экранируются |
| title | String | Заголовок, добавляемый сверху поля данных |
| link | String | URL, открываемый при клике на поле данных |
| key | String | Описание поля данных, добавляемое жирным шрифтом перед содержимым поля через двоеточие |
Пример:
Kotlin
Jivo.setCustomData( listOf( CustomData(content = "Some content", title = "Some title", link = "Some link", key = "Some key") ) )Java
List<CustomData> customDataFields=new ArrayList<>(); CustomData customData=new CustomData("Some content","Some title","Some link","Some key"); customDataFields.add(customData); Jivo.setCustomData(customDataFields);
Очистка данных JivoSDK. После вызова метода Jivo.clear() происходит очистка данных в storage, репозиториях, базы данных и
отключение рассылки пушей.
Important
Для корректной работы JivoSDK очистку данных нужно выполнять после логаута в вашем приложении.
Пример:
Kotlin
override fun logout() { ... Jivo.clear() ... }Java
@Override void logout(){ ... Jivo.clear(); ... }
Для получения информации о непрочитанных сообщениях необходимо использовать метод Jivo.addNewMessageListener(). Данный метод
принимает на вход объект типа NewMessageListener, у которого требуется реализовать метод обратного
вызова onNewMessage(hasUnread: Boolean). В параметр данного метода будет передаваться состояние о непрочитанных сообщениях. Для
корректной работы необходимо реализовать интерфейс NewMessageListener в главной Activity, Viewmodel или в Repository.
Пример:
Kotlin
class MainViewModel : ViewModel(), NewMessageListener { init { Jivo.addNewMessageListener(this) } override fun onNewMessage(hasUnread: Boolean) { ... //Some code } }Java
public class MainActivity extends AppCompatActivity implements NewMessageListener { ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... Jivo.addNewMessageListener(this); } @Override public void onNewMessage(boolean hasUnread) { ... //Some code } }
Для отключения in-app уведомлений, потребуется вызвать метод Jivo.disableInAppNotification() и передать параметр типа Boolean.
Note
Метод `Jivo.disableInAppNotification() отключает уведомления только когда приложение открыто.
Jivo.disableInAppNotification()
Получение информации о разрешении уведомлений. Для получения информации о разрешении уведомлений нужно использовать метод Jivo.addNotificationPermissionListener(). Данный метод принимает на вход объект типа NotificationPermissionListener, у которого требуется реализовать метод обратного вызова onNotificationPermissionGranted(isGranted: Boolean). В параметр данного метода будет передаваться флаг о наличии разрешения уведомлений. Для корректной работы необходимо реализовать интерфейс NotificationPermissionListener в главной Activity.
Note
Данный функционал работает на Android 13 (API level 33) и выше.
Пример:
Kotlin
class MainActivity: NotificationPermissionListener { init { Jivo.addNotificationPermissionListener(this) } override fun onNotificationPermissionGranted(isGranted: Boolean) { ... //Some code } }Java
public class MainActivity extends AppCompatActivity implements NotificationPermissionListener { ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... Jivo.addNotificationPermissionListener(this); } @Override public void onNotificationPermissionGranted(boolean isGranted) { ... //Some code } }
Дополнительные настройки JivoSDK. Чтобы добавить дополнительные настройки для JivoSDK, создайте объект класса Config.Builder с необходимыми настройками.
Important
Вызов метода Jivo.setConfig() нужно выполнять только в методе Application.onCreate() после вызова метода Jivo.init().
Пример:
Kotlin
class App : Application() { ... override fun onCreate() { super.onCreate() ... Jivo.init(appContext = this) Jivo.setConfig( Config.Builder() .setWelcomeMessage(R.string.welcome_message_placeholder) .setOfflineMessage(R.string.offline) .build() ) ... } ... }Java
public class App extends Application { ... @Override public void onCreate() { super.onCreate(); ... Jivo.init(this); Jivo.setConfig(new Config.Builder() .setWelcomeMessage(R.string.welcome_message_placeholder) .setOfflineMessage(R.string.offline) .build()); } ... }
Таблица дополнительных настроек JivoSDK:
| Название метода | Краткое описание |
|---|---|
setWelcomeMessage |
Установка текста привественного сообщения. |
setOpenNotification |
Кастомная навигация по клику на уведомление. |
setOnBackPressed |
Кастомная навигация по клику кнопки “назад”. |
setUriNotificationSound |
Установка кастомного звука push-уведомления. |
setNotificationSmallIcon |
Установка малой иконки push-уведомления. |
setNotificationTitle |
Установка заголовка push-уведомления. |
setOfflineMessage |
Оповещение об отсутствии операторов на канале. |
useRattingStringsRes |
Использование кастомных, строковых ресурсов для формы оценки |
Установка текста приветственного сообщения. В метод setWelcomeMessage() требуется передать строковый ресурс. Приветственное сообщение отображается, если отсутствуют сообщения в чате.
Пример:
Kotlin
Jivo.setConfig( Config.Builder() .setWelcomeMessage(R.string.welcome_message_placeholder) .build() )Java
Jivo.setConfig(new Config.Builder() .setWelcomeMessage(R.string.welcome_message_placeholder) .build());
Установка заголовка push-уведомления. В метод setNotificationTitle() необходимо передать строковый ресурс.
Пример:
Kotlin
Jivo.setConfig( Config.Builder() .setNotificationTitle(R.string.notification_title) .build() )Java
Jivo.setConfig(new Config.Builder() .setNotificationTitle(R.string.notification_title) .build());
Для корректного открытия чата в нужном представлении, необходимо использовать данный интерфейс. В Config была добавлена функция setOpenNotification(), в которую требуется передать лямбду, которая будет возвращать объект типа PendingIntent, тем самым в функцию PendingIntent.getActivity() вы сможете передать нужные для вас параметры.
Пример:
Kotlin
Jivo.setConfig(Config.Builder() .setOpenNotification { PendingIntent.getActivity( this, 0, Intent(this, MainActivity::class.java), if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE } else { PendingIntent.FLAG_UPDATE_CURRENT } ) } .build() )Java
Jivo.setConfig(new Config.Builder() .setOpenNotification(() -> { Intent mainIntent = new Intent(this, MainActivity.class); Intent sdkIntent = new Intent(this, SdkChatActivity.class); TaskStackBuilder builder = TaskStackBuilder.create(this).addNextIntent(mainIntent).addNextIntent(sdkIntent); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { return builder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE); } else { return builder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); } }) .build()); }
Кастомная навигация по клику кнопки “назад”.
Для обработки нажатия кнопки “назад” в конфиг была добавлена функция setOnBackPressed() в которую передается лямбда. Лямбда вызывается в контексте объекта JivoChatFragment.
Пример:
Kotlin
Jivo.setConfig(Config.Builder() .setOnBackPressed { activity?.onBackPressed() } .build() )Java
Jivo.setConfig(new Config.Builder() .setOnBackPressed(fragment -> { if (fragment != null) { FragmentActivity a = fragment.getActivity(); if (a != null) { a.finish(); } } return Unit.INSTANCE; }) .build()); }
Установка кастомного звука push-уведомления. В метод setUriNotificationSound() требуется передать объект типа Uri, содержащий адрес звукового ресурса.
Пример:
Kotlin
Jivo.setConfig( Config.Builder() .setUriNotificationSound(getUriNotificationSound(applicationContext)) .build() ) fun getUriNotificationSound(applicationContext: Context): Uri = Uri.parse("${ContentResolver.SCHEME_ANDROID_RESOURCE}://${applicationContext.packageName}/${R.raw.jivo_tip}")Java
Jivo.setConfig( Config.Builder() .setUriNotificationSound(getUriNotificationSound(applicationContext)) .build() ) private Uri getUriNotificationSound(Context appContext) { return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + this.getPackageName() + "/" + R.raw.jivo_tip); }
Установка малой иконки push-уведомления. В метод setNotificationSmallIcon() требуется передать ресурс изображения.
Пример:
Kotlin
Jivo.setConfig( Config.Builder() .setNotificationSmallIcon(R.drawable.ic_your_notification_small) .build() )Java
Jivo.setConfig(new Config.Builder() .setNotificationSmallIcon(R.drawable.ic_your_notification_small) .build());
Установка цвета иконки push-уведомления. В метод setNotificationColorIcon() требуется передать цветовой ресурс.
Пример:
Kotlin
Jivo.setConfig( Config.Builder() .setNotificationColorIcon(R.color.your_notification_color_icon) .build() )Java
Jivo.setConfig(new Config.Builder() .setNotificationColorIcon(R.color.your_notification_color_icon) .build());
Установка текста оповещения об отсутствии операторов на канале. В метод setOfflineMessage(), требуется передать строковый ресурс. Оповещение об отсутствии операторов на канале, отображается в случае отсутствия операторов на канале.
Пример:
Kotlin
Jivo.setConfig( Config.Builder() .setOfflineMessage(R.string.offline) .build() )Java
Jivo.setConfig(new Config.Builder() .setOfflineMessage(R.string.offline) .build());
Использование кастомных, строковых ресурсов для формы оценки. Для этого потребуется добавить в строковые ресурсы ващего приложения ключи и вызвать включить использование кастомных строковых ресурсов для формы оценки useRattingStringsRes().
Пример:
Kotlin
Jivo.setConfig( Config.Builder() .useRattingStringsRes() .build() )Java
Jivo.setConfig(new Config.Builder() .useRattingStringsRes() .build());
Расположение strings.xml в проекте
YourProject/ src/ Activity.java res/ values/ strings.xmlstrings.xml
<?xml version="1.0" encoding="UTF-8"?> <resources> ... <string name="rate_form.description">Насколько вы удовлетворены ответами в чате?</string> <string name="rate_form.finish_description_bad">Мы стремимся делать лучший сервис для вас, будем работать над ошибками. Спасибо за вашу оценку!</string> <string name="rate_form.finish_description_good">Рады, что вам понравилось :)</string> </resources>
Для установки языка, необходимо использовать метод Jivo.setLocale().
