消息扩展可以为消息增加 key/value 状态标识。基于消息扩展,我们可以实现投票、接龙、问卷调查等功能。
custom_elem_data
存储投票的标题和选项,然后用消息扩展 key 存储投票用户 ID,用消息扩展 value 存储投票用户选项,有了每个用户的投票选项,我们就可以动态计算出投票选项的用户占比。custom_elem_data
存储接龙的标题,然后用消息扩展 key 存储接龙用户 ID,用消息扩展 value 存储接龙信息。custom_elem_data
存储问卷调查的标题和选项,然后用消息扩展 key 存储问卷调查的用户 ID,用消息扩展 value 存储问卷调查信息。说明:
调用 MsgSetMessageExtensions
(点击查看详情) 接口可以设置消息扩展,如果扩展 key 已经存在,则修改扩展的 value 信息,如果扩展 key 不存在,则新增扩展。
设置消息扩展接口入参详解如下:
属性 | 含义 | 说明 |
---|---|---|
message | 消息对象 | 消息需满足三个条件:
|
extensions | 扩展列表 | 如果扩展 key 已经存在,则修改扩展的 value 信息,如果扩展 key 不存在,则新增扩展。 |
说明:
- 扩展 key 最大支持 100 字节,扩展 value 最大支持 1KB,单次最多支持设置 20 个扩展,单条消息最多可设置 300 个扩展。
示例代码如下:
// 设置消息扩展
var list = new List<MessageExtension>
{
new MessageExtension
{
message_extension_key = "key",
message_extension_value = "value"
}
};
TIMResult res = TencentIMSDK.MsgSetMessageExtensions(message, list, (int code, string desc, List<MessageExtensionResult> results, string user_data)=>{
// 设置消息扩展异步结果
});
调用 MsgGetMessageExtensions
(点击查看详情) 接口获取消息扩展列表。
说明:如果没有网络,SDK 会直接返回本地缓存的消息扩展列表。
示例代码如下:
// 获取消息扩展
TIMResult res = TencentIMSDK.MsgGetMessageExtensions(message, (int code, string desc, List<MessageExtension> list, string user_data)=>{
// 获取消息扩展异步结果
});
调用 MsgDeleteMessageExtensions
(点击查看详情) 接口删除指定消息扩展,如果 keys
字段填 null
,则会清空所有消息扩展。
示例代码如下:
// 删除消息扩展
var list = new List<MessageExtension>
{
new MessageExtension
{
message_extension_key = "key",
message_extension_value = "value"
}
};
TIMResult res = TencentIMSDK.MsgDeleteMessageExtensions(message, list, (int code, string desc, List<MessageExtensionResult> results, string user_data)=>{
// 删除消息扩展异步结果
});
如果您事先调用 SetMsgExtensionsChangedCallback
添加了高级消息事件监听器,当消息扩展发生了新增或者更新,您会收到 MsgExtensionsChangedCallback
(点击查看详情) 回调。
如果您事先调用 SetMsgExtensionsDeletedCallback
添加了高级消息事件监听器,当消息扩展发生了删除,您会收到 MsgExtensionsDeletedCallback
(点击查看详情) 回调。
示例代码如下:
// 添加高级消息的事件监听器
TencentIMSDK.SetMsgExtensionsChangedCallback((string message_id, List<MessageExtension> message_extension_array, string user_data) => {
// message_extension_array 为被修改之后的消息扩展对象列表
});
TencentIMSDK.SetMsgExtensionsDeletedCallback((string message_id, List<MessageExtension> message_extension_array, string user_data) => {
// message_extension_array 为被删除之后的消息扩展对象列表
});
本页内容是否解决了您的问题?