基本信息 | 其他信息 |
用户名,性别,生日,等级,角色,手机号等 | 其他游戏内需要的资料 |
对比项 | IM | 业务后台 |
存储容量 | 可自动扩容/缩容 | 容量有限,增减容量较困难 |
用户资料 | 提供标配字段和自定义字段,字段的长度和命名有限制 | 可自行定义,更加灵活 |
资料读写 | 提供简单易用的服务接口和帮助指引 | 需自行开发 |
接口 | 有调用接口频率限制:最高200次/秒 | 接口调用等能力可按照自己需求自行开发 |
安全性 | 可异地容灾、多地部署 | 需自行维护 |
Key-Value
形式表示。其中Key
为String
类型,仅支持英文大小写字母、数字、下划线。Value
有以下几种类型:类型 | 说明 |
uint64_t | 整数(自定义字段不支持) |
string | 字符串,长度不得超过500字节 |
bytes | 一段 buffer,长度不得超过500字节 |
string 数组 | 字符串数组,每个字符串长度不得超过500字节,仅供好友表的 Tag_SNS_IM_Group 字段使用 |
字段名称 | 类型 | 描述 |
Tag_SNS_IM_Group | Array | 好友分组,为字符串数组 |
Tag_SNS_IM_Remark | string | 好友备注 |
Tag_SNS_IM_AddSource | string | 加好友来源 |
Tag_SNS_IM_AddWording | string | 加好友附言 |
Tag_SNS_IM_AddTime | Integer | 加好友时间戳 |
// 设置接收消息事件监听器TencentIMSDK.AddRecvNewMsgCallback((List<Message> messages, string user_data)=>{foreach(Message message in messages){foreach (Elem elem in message.message_elem_array){// 有下一个消息if (elem.elem_type == TIMElemType.kTIMElem_Text){string text = elem.text_elem_content;}}}})// 监听 `RecvNewMsgCallback`回调,在其中接受消息// 希望停止接收消息,调用 `RemoveRecvNewMsgCallback`移除舰艇。该步骤非必需,可按照业务需求调用。
方法 | 特点 | 应用场景 |
向指定账号发消息,接收方看到的发送着不是管理员,而是管理员指定的账号 | 向某个特定用户发送消息,如段位赛奖励等 | |
支持一次最多对500个用户单发消息,最高调用频率为200次/秒 | 向某些特定用户发送消息,因无需创建组使用比较灵活,但若发送用户较多则需要分批发送 | |
向群组发送普通消息,需要将用户添加到同一个组内 | 向较多用户发送消息可以系统创建群组发送普通消息,群组最大人数限制为 社交群(community) 10万人 | |
向 App 内全员推送消息,可指定用户标签和属性发送消息 | 向 App 内全员推送消息或人数非常多且有特征属性时可使用,如活动推送邮件等 |
{"GroupId": "@TGS#2C5SZEAEF","Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息"MsgBody": [ // 消息体,由一个 element 数组组成,详见字段说明{"MsgType": "TIMTextElem", // 文本"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMCustomElem", // 自定义"MsgContent": {"Data": "message","Desc": "notification","Ext": "url","Sound":"dingdong.aiff"}}],}
MsgBody
(消息体)为一个消息数组,可以将文本消息和自定义消息放入 MsgBody 中发送消息。C2C 单聊历史消息存储
和 群聊历史消息存储
。由于群聊最小人数为2人,可以将管理者指定账号与收到邮件的用户创建新的组进行存储。// 拉取单聊历史消息// 首次拉取,msg_getmsglist_param_last_msg 设置为 null// 再次拉取时,msg_getmsglist_param_last_msg 可以使用返回的消息列表中的最后一条消息var get_message_list_param = new MsgGetMsgListParam{msg_getmsglist_param_last_msg = LastMessage};TIMResult res = TencentIMSDK.MsgGetMsgList(conv_id, TIMConvType.kTIMConv_C2C, get_message_list_param, (int code, string desc, string user_data) => {// 处理回调逻辑});
// 获取全部未读数TIMResult res = TencentIMSDK.ConvGetTotalUnreadMessageCount((int code, string desc, GetTotalUnreadNumberResult unread, string user_data)=>{// 处理异步逻辑});// 未读计数变更通知TencentIMSDK.SetConvTotalUnreadMessageCountChangedCallback((int total_unread_count, string user_data)=>{// 处理回调逻辑});// 清空所有会话的未读消息数TIMResult res = TencentIMSDK.MsgMarkAllMessageAsRead((int code, string desc, string user_data)=>{// 处理异步逻辑});
全员推送
功能。示例代码如下:https://console.tim.qq.com/v4/all_member_push/im_push?usersig=xxx&identifier=admin&sdkappid=88888888&random=99999999&contenttype=json
{"From_Account": "admin","MsgRandom": 56512,"MsgLifeTime": 120, // 离线保存120s(2分钟)"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hi, beauty"}}]}
MsgLifeTime
,单位秒,最多保存7天(604800s)。默认为0,表示不离线存储。MsgLifeTime
设置消息离线保存时长(最长为7天)。若该字段为0,则表示消息只发在线用户,不离线保存。 更多内容请参见 服务端 API。https://console.tim.qq.com/v4/group_open_http_svc/create_group?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"Owner_Account": "leckie", // 群主的 UserId(选填)"Type": "Public", // 群组类型:Private/Public/ChatRoom/AVChatRoom/Community"Name": "TestGroup", // 群名称(必填)"MaxMemberCount":5 // 最大群成员数量(选填)}
https://console.tim.qq.com/v4/group_open_http_svc/add_group_member?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupId": "@TGS#2J4SZEAEL", // 要操作的群组(必填)"MemberList": [ // 一次最多添加300个成员{"Member_Account": "tommy" // 要添加的群成员ID(必填)},{"Member_Account": "jared"}]}
群组满员之后回调
感知并开始游戏。请求 URL 示例如下:https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
{"CallbackCommand": "Group.CallbackAfterGroupFull", // 回调命令"GroupId": "@TGS#2J4SZEAEL" // 群组 ID}
新成员入群之后回调
可通知其他群成员入群成功。请求 URL 示例如下:https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
{"CallbackCommand": "Group.CallbackAfterNewMemberJoin", // 回调命令"GroupId" : "@TGS#2J4SZEAEL","Type": "Public", // 群组类型"JoinType": "Apply", // 入群方式:Apply(申请入群);Invited(邀请入群)"Operator_Account": "leckie", // 操作者成员"NewMemberList": [ // 新入群成员列表{"Member_Account": "jared"},{"Member_Account": "tommy}]}
群成员离开之后回调
通知组内其他玩家有人退出群聊,也可以对因网络问题退出游戏的玩家发送消息。群成员离开之后回调 的请求 URL 示例如下:https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
{"CallbackCommand": "Group.CallbackAfterMemberExit", // 回调命"GroupId": "@TGS#2J4SZEAEL", // 群组 ID"Type": "Public", // 群组类型"ExitType": "Kicked", // 成员离开方式:Kicked-被踢;Quit-主动退群"Operator_Account": "leckie", // 操作者"ExitMemberList": [ // 离开群的成员列表{"Member_Account": "jared"},{"Member_Account": "tommy"}]}
https://console.tim.qq.com/v4/group_open_http_svc/destroy_group?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupId": "@TGS#2J4SZEAEL"}
获取群详细资料
获取。可以在请求包中设定Filter字段拉取置顶的信息。示例代码如下所示:https://console.tim.qq.com/v4/group_open_http_svc/get_group_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupIdList": [ // 群组列表(必填)"@TGS#1NVTZEAE4","@TGS#1CXTZEAET"]}
获取群成员详细资料
获取到群成员的信息。示例代码如下所示:https://console.tim.qq.com/v4/group_open_http_svc/get_group_member_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupId":"@TGS#1NVTZEAE4" // 群组 ID(必填)}
MemberNum
可获取本群组的群成员总数,AppMemberDefinedData
可获取群成员自定义字段信息。获取群成员资料
获取到队内其他成员的资料,如成员的角色、准备状态等。示例代码如下:GroupGetMemberInfoListParam param = new GroupGetMemberInfoListParam{group_get_members_info_list_param_group_id = "group_id",group_get_members_info_list_param_identifier_array = new List<string>{"user_id"}};TIMResult res = TencentIMSDK.GroupGetMemberInfoList(param, (int code, string desc, GroupGetMemberInfoListResult result, string user_data)=>{// 处理异步逻辑});
{"CallbackCommand": "Group.CallbackBeforeSendMsg", // 回调命令"GroupId": "@TGS#2J4SZEAEL", // 群组 ID"Type": "Public", // 群组类型"From_Account": "jared", // 发送者"Operator_Account":"admin", // 请求的发起者"Random": 123456, // 随机数"OnlineOnlyFlag": 1, //在线消息,为1,否则为0;直播群忽略此属性,为默认值0。"MsgBody": [ // 消息体,参见 TIMMessage 消息对象{"MsgType": "TIMTextElem", // 文本"MsgContent": {"Text": "red packet"}}],"CloudCustomData": "your cloud custom data"}
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0 // 不同的ErrorCode有不同的含义}
ErrorCode | 含义 |
0 | 允许发言,正常下发消息 |
1 | 拒绝发言,客户端返回10016 |
2 | 静默丢弃,客户端返回正常 |
{"GroupId": "@TGS#2C5SZEAEF","Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息"MsgBody": [ // 消息体,由一个 element 数组组成,详见字段说明{"MsgType": "TIMTextElem", // 文本"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMFaceElem", // 表情"MsgContent": {"Index": 6,"Data": "abc\\u0000\\u0001"}}],"CloudCustomData": "your cloud custom data","SupportMessageExtension": 0,}
CloudCustomData
定义消息自定义数据(云端保存),并将自定义消息填入MsgBody
(消息体)发送。类型 | 特点 |
频道 | 聊天人数非常多,无固定成员列表,无需申请加入群聊,可随时加入、退出。无需发送离线消息推送。 |
大厅 | 聊天人数较多,可随时加入、退出。支持历史消息查询。 |
组队 | 聊天人数较少,聊天对象可能为陌生人,游戏结束时聊天室销毁。无需发送离线消息推送。 |
好友 | 为 C2C 聊天,聊天记录保存,聊天对象存在于好友列表。 |
私信 | 为 C2C 聊天,聊天对象可能为陌生人。 |
直播群 | 聊天人数无上限,可随时加入、退出。 |
类型 | 特点 |
好友工作群(work) | 创建后仅支持已在群内的好友申请加群,无需被邀请访同意或群组审批。 |
陌生人社交群(Public) | 创建后群主可以指定群主管理员,用户搜索群ID发起群申请后,需要群主或管理员审批通过才能入群。 |
临时会议群(Meeting) | 创建后可以随意进出,且支持查看入群前消息;适合用于音视频会议场景、在线教育场景等与实时音视频产品结合的场景,同旧版本中的 ChatRoom。 |
直播群(AVChatRoom) | 创建后可以随意进出,没有群成员数量上限,但不支持历史消息存储;适合与直播产品结合,用于弹幕聊天场景。 |
社群(Community) | 创建后可以随意进出,最多支持10w人,支持历史消息存储,用户搜索群 ID 发起加群申请后,无需管理员审批即可进群。 |
类型 | 解决方案 | 特点 |
频道、大厅 | 社群(Community) | 聊天人数较多,创建后可随意进出,无需审批 |
好友 | 单聊+权限控制(只允许给好友发送消息) | 支持仅好友发送消息 |
私信 | 单聊+权限控制(App 内任意两个用户之间发送单聊消息) | 支持任意两个陌生人发送消息 |
组队 | 陌生人社交群(Public)、临时会议群(Meeting) | 只有游戏内组队人员能够进入聊天群,支持音视频聊天 |
直播群 | 直播群(AVChatRoom) | 没有群成员上线,可随时进出群 |
本页内容是否解决了您的问题?