User & channel metadata
With metadata and metacounter which consist of key-value items, you can store additional information to users and channels. This page explains how to manage user metadata, channel metadata, and channel metacounter.
The key's length must be no longer than 128 characters. For user metadata and channel metadata, the value must be a String
and its length must be no longer than 190 characters. For channel metacounter, the value must be an Integer
. For user metadata, it can have up to five key-value items.
Note: By default, the Allow retrieving user list and Allow updating user metadata options are turned on which means that any user can retrieve a list of users and their metadata as well as alter other users' nicknames and their metadata within your application. This may grant access to unwanted data or operations, leading to potential security concerns. To manage your access control settings, you can turn on or off each option in Settings > Application > Security > Access control list on Sendbird Dashboard.
User metadata
You can store additional information to users such as phone number, email or a long description of a user with user metadata, which can be fetched or rendered into the UI. A user metadata is a Map<String, String>
and it can be stored into a User
object.
Create user metadata
To store a user metadata into a User
object, add key-value items after creating a Map<String, String>
, and pass it as an argument to a parameter when calling the createMetaData()
method. You can put multiple key-value items in the map.
Update user metadata
The procedure to update a user metadata is the same as creating a user metadata. Values of existing keys will be updated and values of new keys will be added.
Retrieve user metadata
You can retrieve user metadata by creating a List
of keys to retrieve and passing it as an argument to a parameter in the getMetaData()
method. A Map<String, String>
will return key-value items through the onResult()
method.
Delete user metadata
You can delete a user metadata as below.
Channel metadata
You can store additional information to channels such as background color or a long description of a channel with channel metadata, which can be fetched or rendered into the UI. A channel metadata is a Map<String, String>
and it can be stored into a Channel
object.
Create channel metadata
To store a channel metadata into a Channel
object, add key-value items after creating a Map<String, String>
, and pass it as an argument to a parameter when calling the createMetaData()
method. You can put multiple key-value items in the map.
Update channel metadata
The procedure to update a channel metadata is the same as creating a channel metadata. Values of existing keys will be updated and values of new keys will be added.
Retrieve channel metadata
You can retrieve channel metadata by creating a List
of keys to retrieve and passing it as an argument to a parameter in the getMetaData()
method. A Map<String, String>
will return key-value items through the onResult()
method.
Retrieve cached channel metadata
When Sendbird Chat SDK detects any of the create
, read
, update
, and delete
operations on the channel metadata, the SDK caches the metadata. The cached metadata is also updated whenever a channel list is fetched.
You can retrieve the cached metadata through the cachedMetaData()
method without having to query the server.
Delete channel metadata
You can delete a channel metadata as below.
Channel metacounter
You can store additional information to channels such as the tracking number of likes with channel metacounter, which can be fetched or rendered into the UI. A channel metacounter is a Map<String, Integer>
and it can be stored into a Channel
object.
Note : A channel metacounter is primarily used to track and update discrete indicators in a channel. Use channel metacounter instead of channel metadata when you need an integer with atomic increasing and decreasing operations.
Create
To store a channel metacounter into a Channel
object, add key-value items after creating a Map<String, Integer>
, and pass it as an argument to a parameter when calling the createMetaCounter()
method. You can put multiple key-value items in the map.
Update
The procedure to update a channel metacounter is the same as creating a channel metacounter. Values of existing keys will be updated and values of new keys will be added.
Increase
You can increase values in a channel metacounter by passing a Map
of keys to increase as an argument to a parameter in the increaseMetaCounters()
method. The values of corresponding keys in the metacounter will be incremented by the number you’ve specified.
Decrease
You can decrease values in a channel metacounter by passing a Map
of keys to decrease as an argument to a parameter in the decreaseMetaCounters()
method. The values of corresponding keys in the metacounter will be decremented by the number you’ve specified.
Retrieve
You can retrieve channel metacounter by creating a List
of keys to retrieve and passing it as an argument to a parameter in the getMetaCounters()
method. A Map<String, Integer>
will return through the onResult()
method with corresponding key-value items.
Delete
You can delete a channel metacounter as below.