Skip to content

Latest commit

 

History

History
693 lines (632 loc) · 26.3 KB

File metadata and controls

693 lines (632 loc) · 26.3 KB

Основные настройки JivoSDK

Примеры и описания основных настроек JivoSDK:

Основной метод для инициализации 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 Имя пользователя, используется как обращение в сообщениях
email 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.xml

strings.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().