Чат
Убедитесь, что предыдущие шаги выполнены успешно
- SDK добавлено в ваше мобильное приложение (в проекте появилась зависимость
CarrotSDK) - Ключи взяты из раздела для разработчика (не из webApi): ключи для SDK
- Инициализация выполнена успешно и приложение запустилось без ошибок
- В консоли появилась надпись “SDK init success”
Результат шага
- Чат отображается и открывается в приложении, диалоги передаются в админку.
Методы открытия чата
Метод для открытия чата
Метод для открытия чата более универсален. Его можно использовать из любого вашего кода. Как UIKit и SwiftUI так и чего-то радикально иного:
import CarrotSDK
Carrot.shared.openChat()Carrot *carrot = [Carrot shared];
[carrot openChat];Переходы из пушей и ин-аппов
При нажатии на кнопку “открыть чат” из ин-апп сообщения, или из пуша сразу же откроется чат, дополнительных настроек не требуется.
Floating button
Кнопка для открытия чата. Такая же, как на вебе:

На данный момент, кнопку можно добавить только при использовании UIKit. SwiftUI не поддерживается.
Чтобы добавить кнопку в UIKit, просто допишите следующий код в тот UIViewController, в котором хотите показать кнопку чата. Например в функцию viewDidLoad:
import CarrotSDK
override func viewDidLoad() {
Carrot.shared.showButton(in: self.view)
}Carrot *carrot = [Carrot shared];
[carrot showButtonIn: self.view];Методы для управления Floating button:
Показать плавающую кнопку
Точно такой же метод как и чуть выше
swiftimport CarrotSDK override func viewDidLoad() { Carrot.shared.showButton(in: self.view) }objective-cCarrot *carrot = [Carrot shared]; [carrot showButtonIn: self.view];Скрыть плавающую кнопку
Можно воспользоваться методом для скрытия кнопки
swiftimport CarrotSDK Carrot.shared.hideButton()objective-cCarrot *carrot = [Carrot shared]; [carrot hideButton];Установить кастомную иконку:
Существует метод для замены иконки во Floating button.
swiftimport 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, то вам могут понадобиться следующие методы:
Получить количество непрочитанных сообщений:
import CarrotSDK
Carrot.shared.getUnreadMessagesCount { count in
print("Carrot quest SDK messages count: \(count)")
}Carrot *carrot = [Carrot shared];
[
carrot
getUnreadMessagesCount:^(NSInteger count){
NSLog(@"Carrot quest SDK messages count: %ld", (long)count);
}];Получить количество непрочитанных диалогов:
import CarrotSDK
Carrot.shared.getUnreadConversationsCount { count in
print("Carrot quest SDK dialogs count: \(count)")
}Carrot *carrot = [Carrot shared];
[
carrot
getUnreadConversationsCount:^(NSInteger count){
NSLog(@"Carrot quest SDK dialogs count: %ld", (long)count);
}];Темная тема
import CarrotSDK
Carrot.shared.setTheme(.dark)
// Допустимые варианты:
// "light" - светлая тема чата в SDK
// "dark" - темная тема чата в SDK
// "fromMobile" - тема, подстраиваемая под тему устройства
// "fromWeb" - тема, такая же, как включенная в настройках админ панелиCarrot *carrot = [Carrot shared];
[carrot setTheme:ThemeDark];
// Допустимые варианты:
// "ThemeLight" - светлая тема чата в SDK
// "ThemeDark" - темная тема чата в SDK
// "ThemeFromMobile" - тема, подстраиваемая под тему устройства
// "ThemeFromWeb" - тема, такая же, как включенная в настройках админ панелиВажно! Пока что тема меняется только при полном перезапуске приложения
Отслеживание отображения UI SDK
Вы можете отследить, отображается ли сейчас какой-либо UI элемент библиотеки на экране (чат, список диалогов, попап). Колбэк вызывается каждый раз при показе или скрытии этих элементов:
import CarrotSDK
Carrot.shared.onVisibilityUIChanged { isVisible in
print("Carrot quest SDK - isVisible: \(isVisible)")
}Carrot *carrot = [Carrot shared];
[
carrot
onVisibilityUIChanged:^(BOOL isVisible){
NSLog(@"Carrot quest SDK — isVisible: %@", isVisible ? @"YES" : @"NO");
}];Если isVisible == true, значит один из экранов SDK (чат, попап и т. д.) отображается. Если false — ничего не показывается.
Примечание
Вызывать метод для отображения кнопки чата, или для открытия чата стоит только после вызова метода инициализации setup и авторизации auth (если такой имеется)