iOS SDK (Swift)
Official iOS SDK for embedding chat in iOS and macOS apps.
Requirements
Section titled “Requirements”- iOS 14.0+ / macOS 12.0+
- Swift 5.5+
- Xcode 13.0+
Installation
Section titled “Installation”Swift Package Manager
Section titled “Swift Package Manager”Add to your Package.swift:
dependencies: [ .package(url: "https://github.com/Uchara-AI/sdk-ios.git", from: "1.0.0")]Or in Xcode:
- File → Add Packages…
- Enter
https://github.com/Uchara-AI/sdk-ios.git - Select version
1.0.0or later
Visitor SDK
Section titled “Visitor SDK”import UcharaSDK
class ChatViewController: UIViewController { let visitor = VisitorSDK(config: VisitorConfig( apiURL: "https://api.uchara.com", widgetToken: "wgt_your_token_here" ))
override func viewDidLoad() { super.viewDidLoad()
// Initialize session visitor.initialize { result in switch result { case .success(let session): print("Session initialized: \(session.contactId)") self.loadConversation() case .failure(let error): print("Error: \(error.localizedDescription)") } }
// Listen for real-time events visitor.onEvent = { event in switch event { case .messageNew(let message): print("New message: \(message.content ?? "")") case .typing(let senderType, _, _): print("\(senderType) is typing…") default: break } } }
func loadConversation() { visitor.getActiveConversation { result in switch result { case .success(let conv): if let conv = conv { self.loadMessages(conversationId: conv.id) } else { self.startNewConversation() } case .failure(let error): print("Error: \(error)") } } }
func startNewConversation() { visitor.startConversation(message: "Hello!") { result in if case .success(let conv) = result { print("Conversation started: \(conv.id)") } } }
func sendMessage(_ text: String) { guard let convId = visitor.currentConversationId else { return } visitor.sendMessage(conversationId: convId, content: text) { result in if case .success(let message) = result { print("Message sent: \(message.id)") } } }}async/await (iOS 15+)
Section titled “async/await (iOS 15+)”@available(iOS 15.0, *)func setupChat() async { do { let session = try await visitor.initialize() print("Session: \(session.contactId)")
if let conv = try await visitor.getActiveConversation() { let messages = try await visitor.getMessages(conversationId: conv.id) print("Loaded \(messages.count) messages") } } catch { print("Error: \(error)") }}