Skip to main content

Documentation Index

Fetch the complete documentation index at: https://www.cometchat.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

// Subscribe to presence during init
let appSettings = AppSettings.AppSettingsBuilder()
    .subscribePresenceForAllUsers()  // or .subscribePresenceForFriends() / .subscribePresenceForRoles(_:)
    .setRegion(region: "us")
    .build()

// Listen for presence changes via CometChatUserDelegate
func onUserOnline(user: User) { }
func onUserOffline(user: User) { }

// Stop listening
CometChat.userdelegate = nil
Track whether users are online or offline in real-time.

Real-time Presence

Configure presence subscription in AppSettings during SDK initialization. The AppSettingsBuilder provides three subscription options:
MethodDescription
subscribePresenceForAllUsers()Receive presence updates for all users
subscribePresenceForRoles(_:)Receive presence updates only for users with specified roles
subscribePresenceForFriends()Receive presence updates only for friends
If none of these methods are called, no presence events will be delivered.
You must configure presence subscription in AppSettings during CometChat.init() before any presence events will be delivered. See Setup SDK for details.

Presence Subscription

// Subscribe to ALL Users
let appSettings = AppSettings.AppSettingsBuilder()
    .subscribePresenceForAllUsers()
    .setRegion(region: "us")
    .build()

CometChat.init(appId: APP_ID, appSettings: appSettings, onSuccess: { success in
    print("CometChat initialized with presence for all users")
}, onError: { error in
    print("Error: \(error.errorDescription)")
})

Subscribe to Friends Only

let appSettings = AppSettings.AppSettingsBuilder()
    .subscribePresenceForFriends()
    .setRegion(region: "us")
    .build()

Subscribe to Specific Roles

let appSettings = AppSettings.AppSettingsBuilder()
    .subscribePresenceForRoles(roles: ["admin", "moderator"])
    .setRegion(region: "us")
    .build()

CometChatUserDelegate

Register a CometChatUserDelegate to receive real-time presence events:
class ViewController: UIViewController, CometChatUserDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        CometChat.userdelegate = self
    }
    
    // Called when a user comes online
    func onUserOnline(user: User) {
        print("\(user.name ?? "") is now online")
    }
    
    // Called when a user goes offline
    func onUserOffline(user: User) {
        print("\(user.name ?? "") is now offline")
    }
}
MethodParameterDescription
onUserOnline(user:)UserCalled when a subscribed user comes online
onUserOffline(user:)UserCalled when a subscribed user goes offline
Always remove your delegate when the view is dismissed to prevent memory leaks and duplicate event handling.
CometChat.userdelegate = nil

User List Presence

When fetching users via UsersRequest, each User object includes presence fields:
FieldDescription
status.online or .offline
lastActiveAtTimestamp of last activity (useful for “Last seen” display)

Next Steps

Retrieve Users

Fetch user lists with filtering and pagination.

User Management

Create and update users programmatically.

Connection Status

Monitor SDK connection to CometChat servers.

All Real-time Listeners

Overview of all available real-time listeners.