User Management

Learn how to sync your users with CometChat.

When a user logs into your app, you need to programmatically login the user into CometChat. But before you log in the user to CometChat, you need to create the user.

Summing up-

When a user registers in your app

  1. You add the user details in your database
  2. You create a user in CometChat

When a user logs into your app

  1. You log in the user to your app
  2. You log in the user to CometChat (programmatically)

Creating a user

Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about creating a user and use the appropriate code sample based on your backend language.

However, if you wish to create users on the fly, you can use the createUser() method. This method takes a User object and the API Key as input parameters and returns the created User object if the request is successful.

let newUser : User = User(uid: "user1", name: "Kevin") // Replace with your uid and the name for the user to be created.
let apiKey = "API_KEY" // Replace with your API Key.
CometChat.createUser(user: newUser, apiKey: apiKey, onSuccess: { (User) in
      print("User created successfully. \(User.stringValue())")
  }) { (error) in
     print("The error is \(String(describing: error?.description))")
}

🚧

UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed.

Updating a user

Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the update a user section. However, this can be achieved on the fly as well using the updateUser() method. This method takes a User object and the API Key as inputs and returns the updated User object on successful execution of the request.

let updateUser : User = User(uid: "user1", name: "Kevin Fernandez") // Replace with your uid and the name for the user to be created.
let apiKey = "API_KEY" // Replace with your API Key.
CometChat.updateUser(user: newUser1, apiKey: apiKey, onSuccess: { (User) in
     print("User updated successfully. \(User.stringValue())")
 }) { (error) in
     print("The error is \(String(describing: error?.description))")
 }

Please make sure the User object provided to the updateUser() method has the UID of the user to be updated set.

Updating logged-in user

Updating a logged-in user is similar to updating a user. The only difference being this method does not require an AuthKey. This method takes a User object as input and returns the updated User object on the successful execution of the request.

let currentUser = User(uid: "superhero1", name: "Iron Man")
CometChat.updateCurrentUserDetails(user: currentUser, onSuccess: { user in
    print("Updated user object",user)                  
}, onError: { error in
    print("Update user failed with error: \(error?.errorDescription)")
})

By using the updateCurrentUserDetails() method one can only update the logged-in user irrespective of the UID passed. Also, it is not possible to update the role of a logged-in user.

Deleting a user

Deleting a user can only be achieved via the Restful APIs. For more information please check the delete a user section.

User Class

Field

Editable

Information

uid

specified on user creation. Not editable after that

Unique identifier of the user

name

Yes

Display name of the user

avatar

Yes

URL to profile picture of the user

link

Yes

URL to profile page

role

Yes

User role of the user for role-based access control

metadata

Yes

Additional information about the user as Dictionary

status

No

Status of the user. Could be either online/offline

statusMessage

Yes

Any custom status message that needs to be set for a user

lastActiveAt

No

The Unix timestamp of the time the user was last active.

hasBlockedMe

No

A boolean that determines if the user has blocked the logged in user

blockedByMe

No

A boolean that determines if the logged-in user has blocked the user

tags

Yes

A list of tags to identify specific users


Did this page help you?