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.
Note : User metadata, channel metadata, and channel metacounter can each have up to 5 key-value items. The key’s length must be no larger than 128 characters. For user metadata and channel metadata, the value must be a
String
and its length must be no larger than 190 characters. For channel metacounter, the value must be anInteger
.
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.
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.
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.
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.
You can delete a user metadata as below.
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.
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.
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.
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.
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.
You can delete a channel metadata as below.
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.
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.
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.
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.
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.
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.
You can delete a channel metacounter as below.