Skip to content

Чат

Убедитесь, что предыдущие шаги выполнены успешно
  • SDK добавлено в ваше мобильное приложение (в проекте появилась зависимость CarrotSDK)
  • Ключи взяты из раздела для разработчика (не из webApi): ключи для SDK
  • Инициализация выполнена успешно и приложение запустилось без ошибок
  • В консоли появилась надпись “SDK init success”
Результат шага
  • Чат отображается и открывается в приложении, диалоги передаются в админку.

Методы открытия чата

Метод для открытия чата

Метод для открытия чата более универсален. Его можно использовать из любого вашего кода. Как UIKit и SwiftUI так и чего-то радикально иного:

swift
import CarrotSDK

Carrot.shared.openChat()
objective-c
Carrot *carrot = [Carrot shared];
[carrot openChat];

Переходы из пушей и ин-аппов

При нажатии на кнопку “открыть чат” из ин-апп сообщения, или из пуша сразу же откроется чат, дополнительных настроек не требуется.

Floating button

Кнопка для открытия чата. Такая же, как на вебе:

Чат

На данный момент, кнопку можно добавить только при использовании UIKit. SwiftUI не поддерживается.

Чтобы добавить кнопку в UIKit, просто допишите следующий код в тот UIViewController, в котором хотите показать кнопку чата. Например в функцию viewDidLoad:

swift
import CarrotSDK

override func viewDidLoad() {
Carrot.shared.showButton(in: self.view)
}
objective-c
Carrot *carrot = [Carrot shared];
[carrot showButtonIn: self.view];

Методы для управления Floating button:

  • Показать плавающую кнопку

    Точно такой же метод как и чуть выше

    swift
    import CarrotSDK
    
    override func viewDidLoad() {
    		Carrot.shared.showButton(in: self.view)
    }
    objective-c
    Carrot *carrot = [Carrot shared];
    [carrot showButtonIn: self.view];
  • Скрыть плавающую кнопку

    Можно воспользоваться методом для скрытия кнопки

    swift
    import CarrotSDK
    
    Carrot.shared.hideButton()
    objective-c
    Carrot *carrot = [Carrot shared];
    [carrot hideButton];
  • Установить кастомную иконку:

    Существует метод для замены иконки во Floating button.

    swift
    import CarrotSDK
    
    let myCustomIcon = UIImage(named: "myIcon")
    Carrot.shared.setButton(icon: myCustomIcon)
    objective-c
    #import "CarrotSDK/CarrotSDK.h"
    
    UIImage *myCustomIcon = [UIImage imageNamed:@"myIcon"];
    [[Carrot shared] setButtonWithIcon:myCustomIcon];

Методы запроса непрочитанных сообщений и диалогов

Если вы вызываете чат не через floating button, то вам могут понадобиться следующие методы:

Получить количество непрочитанных сообщений:

swift
import CarrotSDK

Carrot.shared.getUnreadMessagesCount { count in
    print("Carrot quest SDK messages count: \(count)")
}
objective-c
Carrot *carrot = [Carrot shared];
[
  carrot
  getUnreadMessagesCount:^(NSInteger count){
	NSLog(@"Carrot quest SDK messages count: %ld", (long)count);
}];

Получить количество непрочитанных диалогов:

swift
import CarrotSDK

Carrot.shared.getUnreadConversationsCount { count in
    print("Carrot quest SDK dialogs count: \(count)")
}
objective-c
Carrot *carrot = [Carrot shared];
[
  carrot
  getUnreadConversationsCount:^(NSInteger count){
	NSLog(@"Carrot quest SDK dialogs count: %ld", (long)count);
}];

Темная тема

swift
import CarrotSDK

Carrot.shared.setTheme(.dark)
// Допустимые варианты:
// "light" - светлая тема чата в SDK
// "dark" - темная тема чата в SDK
// "fromMobile" - тема, подстраиваемая под тему устройства
// "fromWeb" - тема, такая же, как включенная в настройках админ панели
objective-c
Carrot *carrot = [Carrot shared];
[carrot setTheme:ThemeDark];
// Допустимые варианты:
// "ThemeLight" - светлая тема чата в SDK
// "ThemeDark" - темная тема чата в SDK
// "ThemeFromMobile" - тема, подстраиваемая под тему устройства
// "ThemeFromWeb" - тема, такая же, как включенная в настройках админ панели

Важно! Пока что тема меняется только при полном перезапуске приложения

Отслеживание отображения UI SDK

Вы можете отследить, отображается ли сейчас какой-либо UI элемент библиотеки на экране (чат, список диалогов, попап). Колбэк вызывается каждый раз при показе или скрытии этих элементов:

swift
import CarrotSDK

Carrot.shared.onVisibilityUIChanged { isVisible in
    print("Carrot quest SDK - isVisible: \(isVisible)")
}
objective-c
Carrot *carrot = [Carrot shared];
[
  carrot
  onVisibilityUIChanged:^(BOOL isVisible){
	NSLog(@"Carrot quest SDK — isVisible: %@", isVisible ? @"YES" : @"NO");
}];

Если isVisible == true, значит один из экранов SDK (чат, попап и т. д.) отображается. Если false — ничего не показывается.

Примечание

Вызывать метод для отображения кнопки чата, или для открытия чата стоит только после вызова метода инициализации setup и авторизации auth (если такой имеется)