iOS Configuration
LovinaChatConfig
The LovinaChatConfig struct holds all configuration options for the chat widget.
let config = LovinaChatConfig(
websiteToken: "your-website-token",
baseUrl: "https://chat-prod.ailovina.com",
locale: "en",
colorScheme: "auto",
user: nil,
displayMode: "fullscreen",
theme: nil,
branding: nil,
texts: nil,
features: nil
)
Fields
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
websiteToken | String | -- | Yes | Your Lovina website token for this agent. Obtained from the Lovina dashboard -- each agent has its own token. |
baseUrl | String | -- | Yes | Base URL of your Lovina instance (e.g., https://chat-prod.ailovina.com). |
locale | String | "id" | No | Widget locale code. Supported values include "id", "en", "ar". |
colorScheme | String | "auto" | No | Dark mode preference for the widget. Accepts "light", "dark", or "auto" (follows system theme). |
user | LovinaChatUser? | nil | No | Pre-identified user to associate with the conversation. See below. |
theme | LovinaThemeConfig? | nil | No | Theme color and layout overrides. Only primaryColor is required in practice -- see Theming. Colors are hex Strings, not UIColor. |
branding | LovinaBrandingConfig? | nil | No | White-label branding overrides (logo, brand name, "powered by" footer). |
texts | [String: Any]? | nil | No | UI string overrides, keyed by translation key. |
features | LovinaFeatureFlags? | nil | No | Feature-flag overrides. |
displayMode | String | "fullscreen" | No | Widget display mode. Accepts "popup", "sidebar", or "fullscreen". |
hideKeyboardAccessoryBar | Bool | true | No | Suppress WebKit's keyboard form-assistant bar while the chat widget's WebView is focused. Scoped to this widget's WKWebView instance only. |
Theming
Only LovinaThemeConfig.primaryColor is required in practice -- every other color is auto-generated by the widget to meet WCAG AA contrast. Colors are hex strings (e.g. "#6366F1"), not UIColor:
LovinaChatConfig(
websiteToken: "your-website-token",
baseUrl: "https://chat-prod.ailovina.com",
theme: LovinaThemeConfig(
primaryColor: "#6366F1",
fontFamily: "Inter, sans-serif",
bubbleRadius: 16
),
branding: LovinaBrandingConfig(
brandName: "Acme Support",
poweredBy: false
)
)
LovinaChatUser
The LovinaChatUser struct represents a pre-identified user.
| Parameter | Type | Required | Description |
|---|---|---|---|
identifier | String | Yes | Unique user ID in your system. |
name | String? | No | Display name. |
email | String? | No | Email address. |
phoneNumber | String? | No | Phone number (E.164 format recommended). |
identifierHash | String? | No | HMAC hash for identity verification. Generate server-side. |
customAttributes | [String: Any]? | No | Arbitrary key-value metadata attached to the contact. |
Example: Full Configuration
import LovinaChatSDK
let config = LovinaChatConfig(
websiteToken: "ws-tok-abc123",
baseUrl: "https://chat-prod.ailovina.com",
locale: "en",
colorScheme: "dark",
user: LovinaChatUser(
identifier: "user-12345",
name: "Jane Doe",
email: "jane@example.com",
identifierHash: "hmac-sha256-hash",
phoneNumber: "+6281234567890",
customAttributes: [
"plan": "premium",
"signup_date": "2025-01-15"
]
),
displayMode: "fullscreen",
theme: LovinaThemeConfig(
primaryColor: "#6366F1"
),
branding: LovinaBrandingConfig(
brandName: "Acme Support"
)
)