기본 정보 | 기타 정보 |
아이디, 성별, 생년월일, 등급, 역할, 휴대폰 번호 등 | 게임에 필요한 기타 정보 |
아이템 | IM | 비즈니스 백그라운드 |
저장 용량 | 자동 스케일링 지원 | 제한되고 확장하기 어려운 용량 |
사용자 프로필 | 필드의 길이와 이름에 대한 제한이 있는 표준 및 사용자 정의 필드 제공 | 사용자 정의 가능, 더 유연함 |
프로필 읽기/쓰기 | 사용하기 쉬운 서비스 API 및 가이드라인 제공 | 자체 개발 필요 |
API | API 호출 빈도: 초당 200회 이하 | 필요에 따라 API 호출 및 기타 기능 개발 가능 |
보안성 | 원격 재해 복구 및 교차 리전 배포 지원 | 자체 유지 보수 필요 |
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`을 호출하여 리스너를 제거합니다. 이 단계는 선택 사항이며 필요에 따라 수행할 수 있습니다.
API | 특성 | 응용 시나리오 |
지정된 계정으로 메시지를 보냅니다. 수신자에게 표시되는 발신자는 관리자가 아니라 관리자가 지정한 계정입니다. | 특정 사용자에게 메시지 전송(예: 사용자에게 게임 보상 메시지 전송) | |
일대일 메시지는 한 번에 최대 500명의 사용자에게 보낼 수 있으며 최대 통화 빈도는 초당 200회입니다. | 수신자 그룹을 만들지 않고도 특정 사용자에게 메시지를 보낼 수 있습니다. 받는 사람이 많으면 메시지를 일괄적으로 보내야 합니다. | |
그룹에 일반 메시지를 보낼 때 모든 수신자를 동일한 그룹에 추가해야 합니다. | 다수의 사용자에게 일반 메시지 전송(community 그룹당 사용자 최대 10만명) | |
App의 모든 사용자에게 메시지를 푸시합니다. 메시지 전송을 위한 사용자 태그 및 속성을 지정할 수 있습니다. | App의 모든 사용자 또는 캠페인 이메일과 같은 특정 특성 속성을 가진 다수의 사용자에게 메시지를 푸시합니다. |
{"GroupId": "@TGS#2C5SZEAEF","Random": 8912345, // 임의의 숫자입니다. 두 메시지의 임의의 숫자가 5분 이내에 동일하면 동일한 메시지로 간주됩니다."MsgBody": [ // element 배열로 구성된 메시지 본문입니다. 자세한 내용은 필드 설명을 참고하십시오.{"MsgType": "TIMTextElem", // 텍스트"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMCustomElem", // 사용자 지정"MsgContent": {"Data": "message","Desc": "notification","Ext": "url","Sound":"dingdong.aiff"}}],}
MsgBody
(메시지 본문)는 메시지 배열입니다. 보낼 텍스트 및 사용자 지정 메시지를 추가할 수 있습니다.C2C 메시지 기록 저장
과 그룹 메시지 기록 저장
으로 구성됩니다. 그룹 채팅에는 최소 두 명의 사용자가 필요하므로 관리자가 지정한 계정과 저장을 위해 이메일을 받는 사용자를 포함하는 그룹을 만들 수 있습니다.// 일대일 메시지 기록 풀링// 첫 번째 풀링에 대해 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, // 120초(2분) 동안 오프라인 저장"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hi, beauty"}}]}
MsgLifeTime
(단위: 초)을 구성하여 오프라인 저장 기간을 지정합니다. 최대 기간은 604800s(7일)입니다. 기본값은 0이며 메시지가 오프라인으로 저장되지 않음을 나타냅니다.MsgLifeTime
을 설정하여 메시지의 오프라인 저장 기간(최대 7일)을 지정할 수 있습니다. MsgLifeTime
이 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}]}
사용자가 그룹을 탈퇴한 후 콜백
을 통해 누군가가 그룹 채팅에서 탈퇴했음을 그룹의 다른 플레이어에게 알릴 수 있으며, 네트워크 문제로 인해 게임을 탈퇴한 플레이어에게 메시지를 보낼 수도 있습니다. 다음은 After a User Leaves a Group의 요청 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 필드를 사용하여 가져올 정보를 필터링할 수 있습니다. 다음은 샘플 요청 URL입니다.https://console.tim.qq.com/v4/group_open_http_svc/get_group_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupIdList": [ // 쿼리에 지정된 그룹 ID 목록(필수)"@TGS#1NVTZEAE4","@TGS#1CXTZEAET"]}
그룹 구성원 프로필 가져오기
API를 호출하여 그룹 구성원의 세부 정보(사용자 지정 필드 포함)를 가져올 수 있습니다. 다음은 샘플 요청 URL입니다.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
는 그룹 구성원의 사용자 지정 필드 정보를 나타냅니다.그룹 구성원 프로필 가져오기
API를 호출하여 팀 내 다른 구성원의 역할 및 상태와 같은 자세한 정보를 얻을 수 있습니다.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, // 임의의 숫자. 두 메시지의 임의의 숫자가 5분 이내에 동일하면 동일한 메시지로 간주됩니다."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) | 회의 그룹을 사용하면 사용자가 자유롭게 참여하고 나갈 수 있으며 그룹에 참여하기 전에 전송된 기록 메시지를 볼 수 있습니다. 회의 그룹은 음성/화상 회의 및 온라인 교육과 같은 TRTC(Tencent Real-Time Communication)를 통합하는 시나리오에 이상적입니다. 이 그룹 유형은 이전 버전의 ChatRoom과 동일합니다. |
오디오-비디오 그룹(AVChatRoom) | 오디오-비디오 그룹은 사용자가 자유롭게 가입 및 탈퇴할 수 있고, 회원 수에 제한이 없으며, 메시지 기록을 저장하지 않습니다. 오디오-비디오 그룹은 Cloud Streaming Services(CSS)와 함께 사용하여 화면 댓글 채팅 시나리오를 지원할 수 있습니다. |
커뮤니티 그룹(Community) | 커뮤니티 그룹은 사용자가 자유롭게 가입 및 탈퇴할 수 있으며 최대 10만명의 회원을 지원하고 메시지 기록을 저장합니다. 그룹에 가입하려면 사용자는 그룹 ID를 검색하고 신청서를 보내야 하며, 신청서는 관리자의 승인을 받지 않아도 그룹에 가입할 수 있습니다. |
유형 | 솔루션 | 특성 |
채널 및 라이브 게임 로비 | 커뮤니티 그룹(Community) | 커뮤니티 그룹은 다수의 사용자를 지원하며 사용자가 승인 없이 자유롭게 가입 및 탈퇴할 수 있도록 합니다. |
친구 | 1:1 채팅+권한 제어(친구끼리만 메시지보내기) | 친구끼리만 서로에게 메시지를 보낼 수 있습니다. |
비공개 메시지 | 1:1 채팅+권한 제어(App 내 임의의 2명의 사용자가 서로 1:1 메시지를 보낼 수 있도록 허용) | 두 명의 낯선 사람이 서로에게 메시지를 보낼 수 있습니다. |
팀업 | 공개 그룹(Public) 및 회의 그룹(Meeting) | 게임 내 팀원만 그룹 채팅에 입장할 수 있습니다. 오디오-비디오 채팅이 지원됩니다. |
오디오-비디오 그룹 | 오디오-비디오 그룹(AVChatRoom) | 그룹 구성원 수에는 제한이 없으며 사용자는 언제든지 오디오-비디오 그룹에 가입하거나 탈퇴할 수 있습니다. |
문제 해결에 도움이 되었나요?