ChaportSDK — это iOS SDK для онлайн-чата Chaport, позволяющий клиентам интегрировать чат в свои iOS-приложения без кнопок, всплывающих окон и т.д.
SDK разработан на Swift, использует WKWebView для загрузки чата и взаимодействует с JS API Chaport через WKScriptMessageHandler и evaluateJavaScript.
Поддерживается как UIKit, так и SwiftUI (iOS 12+).
- Откройте проект в Xcode (минимум Xcode 11).
- В меню File → Swift Packages → Add Package Dependency...
- Укажите URL репозитория или локальный путь к ChaportSDK (где лежит
Package.swift
). - Выберите продукт
ChaportSDK
.
Добавьте следующую строку в ваш Podfile:
pod 'ChaportSDK'
Скопируйте папку Sources/ChaportSDK
в свой проект, а затем подключите исходники в Build Settings → Compile Sources.
Перед использованием вызовите метод configure(config:), передав объект Config:
let sessionData: [String: Any] = ["persist": true] let config = Config(appId: "your_app_id", session: sessionData, region: "ru") ChaportSDK.shared.configure(config: config)
Для запуска сессии передайте данные пользователя:
let user = UserDetails(name: "John Doe", email: "[email protected]", custom: ["age": 30]) ChaportSDK.shared.startSession(userDetails: user)
Вы можете открыть чат модально:
ChaportSDK.shared.present(from: self)
или встроить его в контейнерный view:
ChaportSDK.shared.embed(into: containerView, parentViewController: self)
Передайте токен устройства:
ChaportSDK.shared.setDeviceToken(deviceToken: "your_device_token")
Проверьте принадлежность уведомления чату:
if ChaportSDK.shared.isChaportPushNotification(notification: notificationRequest) { // обработка }
Поддерживаются следующие методы: • configure(config:) • setLanguage(languageCode:) • startSession(userDetails:) • stopSession(clearCache:) • setVisitorData(visitor:hash:) • present(from:) • embed(into:parentViewController:) • dismiss() • remove() • setDeviceToken(deviceToken:) • isChaportPushNotification(notification:) • handlePushNotification(notification:) • startBot(botId:) • canStartBot(botId:completion:) и canStartBotAsync(botId:) • openFAQ() • openFAQArticle(articleSlug:) • getUnreadMessage(completion:) и getUnreadMessageAsync() • sendMessageToWebView(message:completion:) и sendMessageToWebViewAsync(message:)
Для отслеживания событий необходимо реализовать протокол ChaportSDKDelegate:
public protocol ChaportSDKDelegate: AnyObject { func chatDidStart() func chatDidPresent() func chatDidDismiss() func chatDidFail(error: Error) func unreadMessageDidChange(unreadCount: Int, lastMessage: String?) func linkDidClick(url: URL) }
Назначьте делегата через ChaportSDK.shared.delegate.
В каталоге Example/ приведены примеры для UIKit и SwiftUI. Ознакомьтесь с файлами ViewController.swift (UIKit) и ChaportChatView.swift, ContentView.swift (SwiftUI).