| name | cometchat-android-v6-builder-settings |
| description | CometChat Android UIKit v6 UIKitSettings configuration — all builder options for SDK init, presence, calling, and host overrides |
| license | MIT |
| compatibility | Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-core-android:6.x |
| metadata | {"author":"CometChat","version":"3.0.0","tags":"cometchat, android, settings, builder, configuration, calling"} |
Ground truth: com.cometchat:chatuikit-{compose,kotlin}-android:6.x (+ calls-sdk-android:5.x) — resolved AAR (javap) + ui-kit/android/v6. Official docs: https://www.cometchat.com/docs/ui-kit/android/v6/overview · Docs MCP: claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
Companion skills: cometchat-android-v6-core (init/login), cometchat-android-v6-push (FCM/VoIP)
Purpose
Detailed reference for UIKitSettings.UIKitSettingsBuilder — all configuration options for initializing the CometChat SDK, including presence subscriptions, calling features, and host overrides.
Use this skill when
- Configuring presence subscription types (all users, roles, friends)
- Enabling calling features and configuring
CallSettingsBuilder
- Overriding admin or client host URLs
- Controlling socket connection behavior
- Understanding the full
UIKitSettingsBuilder API
Do not use this skill when
- Just doing basic init/login (use
cometchat-android-v6-core for quick setup)
- Working with UI components or theming
1. UIKitSettingsBuilder — Complete API
import com.cometchat.uikit.core.UIKitSettings
val settings = UIKitSettings.UIKitSettingsBuilder()
.setAppId("APP_ID")
.setRegion("us")
.setAuthKey("AUTH_KEY")
.subscribePresenceForAllUsers()
.subscribePresenceForRoles(listOf("admin"))
.subscribePresenceForFriends()
.setRoles(listOf("admin"))
.setAutoEstablishSocketConnection(true)
.setEnableCalling(true)
.setCallSettingsBuilder(sessionSettingsBuilder)
.overrideAdminHost("https://custom-admin.example.com")
.overrideClientHost("https://custom-client.example.com")
.build()
2. Presence Subscription Types
Only one subscription type is active at a time. The last one set wins.
| Method | Subscription Type | Use Case |
|---|
| (none) | "NONE" | No presence updates (default) |
subscribePresenceForAllUsers() | "ALL_USERS" | Small apps where you want all online statuses |
subscribePresenceForRoles(roles) | "ROLES" | Subscribe to specific user roles |
subscribePresenceForFriends() | "FRIENDS" | Social apps with friend lists |
3. Calling Configuration
When setEnableCalling(true) is set, CometChatUIKit.init() automatically initializes the CometChatCalls SDK after the Chat SDK succeeds:
val settings = UIKitSettings.UIKitSettingsBuilder()
.setAppId("APP_ID")
.setRegion("us")
.setAuthKey("AUTH_KEY")
.setEnableCalling(true)
.build()
For custom call settings:
import com.cometchat.calls.core.CometChatCalls
val sessionSettingsBuilder = CometChatCalls.SessionSettingsBuilder()
val settings = UIKitSettings.UIKitSettingsBuilder()
.setAppId("APP_ID")
.setRegion("us")
.setAuthKey("AUTH_KEY")
.setEnableCalling(true)
.setCallSettingsBuilder(sessionSettingsBuilder)
.build()
After init, retrieve the stored builder:
val builder: CometChatCalls.SessionSettingsBuilder? = CometChatUIKit.getSessionSettingsBuilder()
4. Checking Initialization State
CometChatUIKit.isSDKInitialized()
CometChatUIKit.isCallsSDKInitialized()
5. Application-Level Init Pattern
From master-app-jetpack, the recommended pattern separates SDK init from Calls SDK init:
class MyApplication : Application() {
fun onSDKInitialized() {
addCallListener()
}
}
Hard rules
- NEVER set both
subscribePresenceForAllUsers() and subscribePresenceForRoles() — only the last one takes effect
- NEVER use
setAuthKey() in production — use loginWithAuthToken() instead
setEnableCalling(true) requires the CometChatCalls SDK dependency in your Gradle file
- If CometChatCalls init fails, the Chat SDK still reports success — check
isCallsSDKInitialized() separately
overrideAdminHost() and overrideClientHost() are for on-premise deployments only — do not use with cloud-hosted CometChat