No. | 라이브 룸 상태 |
1 | 시작 예정 |
2 | 라이브 중 |
3 | 일시 중지 |
4 | 종료 |
5 | 재생됨 |
No. | 특징 |
1 | 라이브 룸에 있는 사용자에게 라이브 룸 상태 변경을 실시간으로 알려야 합니다. |
2 | 라이브 룸을 처음 사용하는 사용자는 라이브 룸의 현재 상태를 확인해야 합니다. |
구현 스키마 | 장점 | 단점 |
라이브 룸 상태를 자주 가져와야 하는 경우 비즈니스 백엔드에 상태를 저장하면 IM 그룹 프로필에 상태를 저장하는 것보다 IM SDK를 호출하는 빈도가 줄어듭니다. 이 구현 스키마를 사용하면 IM SDK가 통합되지 않은 경우 라이브 룸 상태를 얻을 수 있습니다. | 비즈니스 백엔드는 라이브 룸 상태를 읽고 쓰기 위한 추가 모듈을 제공해야 합니다. 데이터는 비즈니스 백엔드와 IM 그룹 프로필 모두에서 가져오기 때문에 라이브 룸 데이터를 가져올 때 예외가 발생할 가능성이 더 큽니다. 사용자 정의 메시지를 보낼 때 손실될 수 있습니다. 많은 수의 메시지가 있는 경우 우선순위가 낮은 메시지가 먼저 삭제되어 라이브 룸 상태 표시에 영향을 줍니다. 따라서 우선순위가 높은 사용자 정의 메시지를 사용하는 것이 좋습니다. | |
라이브 룸 상태를 읽고 쓰기 위한 추가 모듈을 제공할 필요가 없습니다. 이론적으로 그룹 속성 변경에 대한 콜백은 손실되지 않습니다. 라이브 룸 데이터는 예외를 줄이는 통합 데이터 소스 역할을 하는 그룹 프로필에서 가져옵니다. | 고노출 모듈에서 그룹 프로필을 자주 가져와야 하므로 IM에 대한 부담이 커집니다. IM SDK 모듈이 통합되지 않은 경우 비즈니스 백엔드에서 IM 서버 SDK를 호출하여 그룹 프로필을 가져와야 하며 호출 수가 제한됩니다. |
// 클라이언트에서 그룹 프로필 가져오기V2TIMManager.getGroupManager().getGroupsInfo(groupIDList, new V2TIMValueCallback<List<V2TIMGroupInfoResult>>() {@Overridepublic void onSuccess(List<V2TIMGroupInfoResult> v2TIMGroupInfoResults) {// 그룹 프로필 가져오기 완료}@Overridepublic void onError(int code, String desc) {// 그룹 프로필 가져오기 실패}});// 클라이언트 그룹 프로필 수정V2TIMGroupInfo v2TIMGroupInfo = new V2TIMGroupInfo();v2TIMGroupInfo.setGroupID("수정할 그룹 ID");v2TIMGroupInfo.setFaceUrl("http://xxxx");V2TIMManager.getGroupManager().setGroupInfo(v2TIMGroupInfo, new V2TIMCallback() {@Overridepublic void onSuccess() {// 그룹 프로필 수정 완료}@Overridepublic void onError(int code, String desc) {// 그룹 프로필 수정 실패}});
[[V2TIMManager sharedInstance] getGroupsInfo:@[@"groupA"] succ:^(NSArray<V2TIMGroupInfoResult *> *groupResultList) {// 그룹 프로필 가져오기 완료} fail:^(int code, NSString *desc) {// 그룹 프로필 가져오기 실패}];V2TIMGroupInfo *info = [[V2TIMGroupInfo alloc] init];info.groupID = @"수정할 그룹 ID";info.faceURL = @"http://xxxx";[[V2TIMManager sharedInstance] setGroupInfo:info succ:^{// 그룹 프로필 수정 완료} fail:^(int code, NSString *desc) {// 그룹 프로필 수정 실패}];
// 그룹 프로필 가져오기V2TimValueCallback<List<V2TimGroupInfoResult>> groupinfos = await groupManager.getGroupsInfo(groupIDList: ['groupid1']);// 그룹 프로필 수정groupManager.setGroupInfo(info: V2TimGroupInfo.fromJson({"groupAddOpt":GroupAddOptTypeEnum.V2TIM_GROUP_ADD_AUTH// ... 기타 프로필}));// 콜백TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onGroupInfoChanged: ((groupID, changeInfos) {// 그룹 정보 변경 콜백})));
// 그룹 프로필 가져오기let promise = tim.getGroupProfile({ groupID: 'group1', groupCustomFieldFilter: ['key1','key2'] });promise.then(function(imResponse) {console.log(imResponse.data.group);}).catch(function(imError) {console.warn('getGroupProfile error:', imError); // 세부 그룹 프로필 가져오기 실패 정보});// 그룹 프로필 수정let promise = tim.updateGroupProfile({groupID: 'group1',name: 'new name', // 그룹 이름 수정introduction: 'this is introduction.', // 그룹 소개 수정// v2.6.0부터 그룹 구성원은 그룹 사용자 정의 필드 변경에 대한 그룹 팁 수신과 콘텐츠 획득, 자세한 내용은 Message.payload.newGroupProfile.groupCustomField 참고groupCustomField: [{ key: 'group_level', value: 'high'}] // 그룹 사용자 정의 필드 수정});promise.then(function(imResponse) {console.log(imResponse.data.group) // 수정 완료 후 세부 그룹 프로필}).catch(function(imError) {console.warn('updateGroupProfile error:', imError); // 그룹 프로필 수정 실패 정보});// v2.6.2부터 SDK는 모두 음소거 및 음소거 해제를 지원합니다. 현재 그룹 내 모든 구성원이 음소거 상태인 경우 그룹 팁을 전달할 수 없습니다.let promise = tim.updateGroupProfile({groupID: 'group1',muteAllMembers: true, // true: 전원 음소거, false: 전원 음소거 해제});promise.then(function(imResponse) {console.log(imResponse.data.group) // 수정 완료 후 세부 그룹 프로필}).catch(function(imError) {console.warn('updateGroupProfile error:', imError); // 그룹 프로필 수정 실패 정보});
우선순위 | 설명 |
High | 높은 우선순위 |
Normal | 중간 우선순위 |
Low | 낮은 우선순위 |
// 사용자 정의 메시지 생성V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createCustomMessage("사용자 정의 일대일 메시지".getBytes());// 메시지 우선순위를 높은 우선순위 메시지로 설정v2TIMMessage.setPriority(V2TIMMessage.V2TIM_PRIORITY_HIGH)// 메시지 발송V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, "receiver_userID", null, V2TIMMessage.V2TIM_PRIORITY_NORMAL, false, null, new V2TIMSendCallback<V2TIMMessage>() {@Overridepublic void onProgress(int progress) {// 사용자 정의 메시지에 대한 진행률은 다시 호출되지 않음}@Overridepublic void onSuccess(V2TIMMessage message) {// 사용자 정의 그룹 메시지 전송 완료}@Overridepublic void onError(int code, String desc) {// 사용자 정의 그룹 메시지 전송 실패}});
/ 텍스트 메시지 생성V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"content"];// 메시지 발송[V2TIMManager.sharedInstance sendMessage:messagereceiver:@"userID"groupID:nilpriority:V2TIM_PRIORITY_NORMALonlineUserOnly:NOofflinePushInfo:nilprogress:nilsucc:^{// 텍스트 메시지 전송 완료}fail:^(int code, NSString *desc) {// 텍스트 메시지 전송 실패}];
/ 텍스트 메시지 생성V2TimValueCallback<V2TimMsgCreateInfoResult> createTextAtMessageRes = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createTextAtMessage(text: "test",atUserList: [],);if(createTextAtMessageRes.code == 0){String id = createTextAtMessageRes.data.id;// 텍스트 메시지 발송V2TimValueCallback<V2TimMessage> sendMessageRes = await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessage(id: id, receiver: "", groupID: "groupID");if(sendMessageRes.code == 0){// 전송 완료}}
// 텍스트 메시지 발송// 1. 메시지 인스턴스 생성, 반환된 인스턴스 화면에 표시 가능let message = tim.createTextMessage({to: 'user1',conversationType: TIM.TYPES.CONV_C2C,// 그룹 채팅에 적용되는 메시지 우선순위(v2.4.2 이상에서 지원). 그룹의 메시지가 빈도 제한을 초과하면 백엔드가 우선순위가 높은 메시지를 먼저 전달합니다. 자세한 내용 참고: https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)// 지원되는 열거 값: TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(기본값), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,payload: {text: 'Hello world!'},// v2.20.0 부터 일대일 메시지에 대해 수신 확인 기능이 지원됩니다. 사용하려면 플래그십 에디션 패키지를 구입하고 메시지 작성 시 needReadReceipt를 true로 설정합니다.needReadReceipt: true// 클라우드에 저장된 사용자 정의 메시지 데이터 (수신자에게 전송되며 애플리케이션을 제거하고 다시 설치한 후에도 계속 가져올 수 있음, 이 속성은 v2.10.2 이상에서 지원)// cloudCustomData: 'your cloud custom data'});// 2. 메시지 전송let promise = tim.sendMessage(message);promise.then(function(imResponse) {// 전송 완료console.log(imResponse);}).catch(function(imError) {// 전송 실패console.warn('sendMessage error:', imError);});
{"CallbackCommand": "Group.CallbackAfterSendMsg", // 콜백 명령"GroupId": "@TGS#2J4SZEAEL", // 그룹 ID"Type": "Public", // 그룹 유형"From_Account": "jared", // 발신자"Operator_Account":"admin", // 요청 개시자"Random": 123456, // 랜덤 숫자"MsgSeq": 123, // 메시지의 시퀀스 번호"MsgTime": 1490686222, // 메시지 시간"OnlineOnlyFlag": 1, // 값은 온라인 메시지인 경우 1이고 그렇지 않은 경우 0(기본값)입니다. 오디오/비디오 그룹의 경우 값은 0입니다."MsgBody": [ // 메시지 본문, 자세한 내용은 TIMMessage 메시지 객체 참고{"MsgType": "TIMTextElem", // 텍스트"MsgContent": {"Text": "red packet"}}],"CloudCustomData": "your cloud custom data"}
{"CallbackCommand": "State.StateChange","EventTime": 1629883332497,"Info": {"Action": "Login","To_Account": "testuser316","Reason": "Register"},"KickedDevice": [{"Platform": "Windows"},{"Platform": "Android"}]}
V2TIMMessageListGetOption option = new V2TIMMessageListGetOption();option.setGetType(V2TIMMessageListGetOption.V2TIM_GET_CLOUD_OLDER_MSG); // 더 오래된 클라우드 메시지 풀링option.setGetTimeBegin(1640966400); // 2022-01-01 00:00:00부터 시작option.setGetTimePeriod(1 * 24 * 60 * 60); // 하루 전체의 메시지 풀링option.setCount(Integer.MAX_VALUE); // 시간 범위 내의 모든 메시지 반환option.setGroupID(#you group id#); // 그룹 메시지 풀링V2TIMManager.getMessageManager().getHistoryMessageList(option, new V2TIMValueCallback<List<V2TIMMessage>>() {@Overridepublic void onSuccess(List<V2TIMMessage> v2TIMMessages) {Log.i("imsdk", "success");}@Overridepublic void onError(int code, String desc) {Log.i("imsdk", "failure, code:" + code + ", desc:" + desc);}});
// 일대일 메시지 기록 풀링// 첫 번째 풀링에 대해 lastMsg를 nil로 설정// lastMsg는 두 번째 풀링에 대해 반환된 메시지 목록의 마지막 메시지일 수 있음[V2TIMManager.sharedInstance getC2CHistoryMessageList:#your user id# count:20 lastMsg:nil succ:^(NSArray<V2TIMMessage *> *msgs) {// 다음 풀링을 위해 lastMsg 기록V2TIMMessage *lastMsg = msgs.lastObject;NSLog(@"success, %@", msgs);} fail:^(int code, NSString *desc) {NSLog(@"fail, %d, %@", code, desc);}];
// 일대일 메시지 기록 풀링// 첫 번째 풀링에 대해 lastMsgID를 null로 설정// lastMsgID는 두 번째 풀링에 대해 반환된 메시지 목록의 마지막 메시지 id일 수 있음TencentImSDKPlugin.v2TIMManager.getMessageManager().getC2CHistoryMessageList(userID: "userId",count: 10,lastMsgID: null,);
// 대화가 열릴 때 처음 메시지 목록 풀링let promise = tim.getMessageList({conversationID: 'C2Ctest', count: 15});promise.then(function(imResponse) {const messageList = imResponse.data.messageList; // 메시지 리스트.const nextReqMessageID = imResponse.data.nextReqMessageID; // 이 매개변수는 다음 페이지 풀에 전달되어야 합니다.const isCompleted = imResponse.data.isCompleted; // 모든 메시지가 풀링되었는지 여부를 나타냅니다.});// 메시지 리스트를 풀 다운하여 더 많은 메시지 보기let promise = tim.getMessageList({conversationID: 'C2Ctest', nextReqMessageID, count: 15});promise.then(function(imResponse) {const messageList = imResponse.data.messageList; // 메시지 리스트.const nextReqMessageID = imResponse.data.nextReqMessageID; // 이 매개변수는 다음 페이지 풀에 전달되어야 합니다.const isCompleted = imResponse.data.isCompleted; // 모든 메시지가 풀링되었는지 여부를 나타냅니다.});
2TIMManager.getGroupManager().getGroupOnlineMemberCount("group_avchatroom", new V2TIMValueCallback<Integer>() {@Overridepublic void onSuccess(Integer integer) {// 오디오/비디오 그룹(AVChatRoom)의 온라인 구성원 수 가져오기 성공}@Overridepublic void onError(int code, String desc) {// 오디오/비디오 그룹(AVChatRoom)의 온라인 구성원 수 가져오기 실패}});
[[V2TIMManager sharedInstance] getGroupOnlineMemberCount:@"group_avchatroom" succ:^(NSInteger count) {// 오디오/비디오 그룹(AVChatRoom)의 온라인 구성원 수 가져오기 성공} fail:^(int code, NSString *desc) {// 오디오/비디오 그룹(AVChatRoom)의 온라인 구성원 수 가져오기 실패}];
groupManager.getGroupOnlineMemberCount(groupID: '');
// 오디오/비디오 그룹의 온라인 사용자 수 가져오기(v2.8.0부터 지원)let promise = tim.getGroupOnlineMemberCount('group1');promise.then(function(imResponse) {console.log(imResponse.data.memberCount);}).catch(function(imError) {console.warn('getGroupOnlineMemberCount error:', imError); // 오디오/비디오 그룹(AVChatRoom)의 온라인 구성원 수 가져오기 실패 관련 오류 정보});
// 1분 동안 그룹 구성원 userB 음소거V2TIMManager.getGroupManager().muteGroupMember("groupA", "userB", 60, new V2TIMCallback() {@Overridepublic void onSuccess() {// 그룹 구성원 음소거 성공}@Overridepublic void onError(int code, String desc) {// 그룹 구성원 음소거 실패}});// 모든 구성원 음소거V2TIMGroupInfo info = new V2TIMGroupInfo();info.setGroupID("groupA");info.setAllMuted(true);V2TIMManager.getGroupManager().setGroupInfo(info, new V2TIMCallback() {@Overridepublic void onSuccess() {// 모든 구성원 음소거 성공}@Overridepublic void onError(int code, String desc) {// 모든 구성원 음소거 실패}});V2TIMManager.getInstance().addGroupListener(new V2TIMGroupListener() {@Overridepublic void onMemberInfoChanged(String groupID, List<V2TIMGroupMemberChangeInfo> v2TIMGroupMemberChangeInfoList) {// 그룹 구성원의 음소거 수신for (V2TIMGroupMemberChangeInfo memberChangeInfo : v2TIMGroupMemberChangeInfoList) {// 음소거된 사용자의 IDString userID = memberChangeInfo.getUserID();// 음소거 지속 시간long muteTime = memberChangeInfo.getMuteTime();}}@Overridepublic void onGroupInfoChanged(String groupID, List<V2TIMGroupChangeInfo> changeInfos) {// 모든 구성원 음소거 수신for (V2TIMGroupChangeInfo groupChangeInfo : changeInfos) {if (groupChangeInfo.getType() == V2TIMGroupChangeInfo.V2TIM_GROUP_INFO_CHANGE_TYPE_SHUT_UP_ALL) {// 모든 구성원 음소거 여부boolean isMuteAll = groupChangeInfo.getBoolValue();}}}});
// 1분 동안 그룹 구성원 user1 음소거[[V2TIMManager sharedInstance] muteGroupMember:@"groupA" member:@"user1" muteTime:60 succ:^{// 그룹 구성원 음소거 성공} fail:^(int code, NSString *desc) {// 그룹 구성원 음소거 실패}];// 모든 구성원 음소거V2TIMGroupInfo *info = [[V2TIMGroupInfo alloc] init];info.groupID = @"groupA";info.allMuted = YES;[[V2TIMManager sharedInstance] muteGroupMember:@"groupA" member:@"user1" muteTime:60 succ:^{// 모든 구성원 음소거 성공} fail:^(int code, NSString *desc) {// 모든 구성원 음소거 실패}];[[V2TIMManager sharedInstance] addGroupListener:self];- (void)onMemberInfoChanged:(NSString *)groupID changeInfoList:(NSArray <V2TIMGroupMemberChangeInfo *> *)changeInfoList {// 그룹 구성원의 음소거 수신for (V2TIMGroupMemberChangeInfo *memberChangeInfo in changeInfoList) {// 음소거된 사용자의 IDNSString *userID = memberChangeInfo.userID;// 음소거 지속 시간uint32_t muteTime = memberChangeInfo.muteTime;}}- (void)onGroupInfoChanged:(NSString *)groupID changeInfoList:(NSArray <V2TIMGroupChangeInfo *> *)changeInfoList {// 모든 구성원 음소거 수신for (V2TIMGroupChangeInfo groupChangeInfo in changeInfoList) {if (groupChangeInfo.type == V2TIM_GROUP_INFO_CHANGE_TYPE_SHUT_UP_ALL) {// 모든 구성원 음소거 여부BOOL isMuteAll = groupChangeInfo.boolValue;}}}
// 10분 동안 그룹 구성원 userB 음소거groupManager.muteGroupMember(groupID: '',userID: 'userB',seconds: 10);// 모든 구성원 음소거groupManager.setGroupInfo(info: V2TimGroupInfo(isAllMuted: true,groupID: '',groupType: 'Public'));TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onMemberInfoChanged: (groupID, v2TIMGroupMemberChangeInfoList) {//그룹 구성원 정보 변경},onGroupInfoChanged: (groupID,info){// 그룹 프로필 수정}));
tim.setGroupMemberMuteTime(options);let promise = tim.setGroupMemberMuteTime({groupID: 'group1',userID: 'user1',muteTime: 600 // 10분 동안 사용자 음소거; 0으로 설정되면 사용자 음소거 해제});promise.then(function(imResponse) {console.log(imResponse.data.group) // 새 그룹 프로필console.log(imResponse.data.member); // 새 그룹 구성원 프로필}).catch(function(imError) {console.warn('setGroupMemberMuteTime error:', imError); // 음소거 실패 관련 오류 정보});// 주제 내 그룹 구성원 음소거 지속 시간 설정let promise = tim.setGroupMemberMuteTime({groupID: 'topicID',userID: 'user1',muteTime: 600 // 10분 동안 사용자 음소거; 0으로 설정되면 사용자 음소거 해제});promise.then(function(imResponse) {console.log(imResponse.data.group) // 새 그룹 프로필console.log(imResponse.data.member); // 새 그룹 구성원 프로필}).catch(function(imError) {console.warn('setGroupMemberMuteTime error:', imError); // 음소거 실패 관련 오류 정보});// v2.6.2부터 SDK는 모두 음소거 및 음소거 해제를 지원합니다. 현재 그룹 내 모든 구성원이 음소거 상태인 경우 그룹 팁을 전달할 수 없습니다.let promise = tim.updateGroupProfile({groupID: 'group1',muteAllMembers: true, // true: 전원 음소거, false: 전원 음소거 해제});promise.then(function(imResponse) {console.log(imResponse.data.group) // 수정 완료 후 세부 그룹 프로필}).catch(function(imError) {console.warn('updateGroupProfile error:', imError); // 그룹 프로필 수정 실패 정보});
List<String> userIDList = new ArrayList<>();userIDList.add("userB");V2TIMManager.getGroupManager().kickGroupMember("groupA", userIDList, "", new V2TIMValueCallback<List<V2TIMGroupMemberOperationResult>>() {@Overridepublic void onSuccess(List<V2TIMGroupMemberOperationResult> v2TIMGroupMemberOperationResults) {// 구성원 제거 성공}@Overridepublic void onError(int code, String desc) {// 구성원 제거 실패}});V2TIMManager.getInstance().addGroupListener(new V2TIMGroupListener() {@Overridepublic void onMemberKicked(String groupID, V2TIMGroupMemberInfo opUser,List<V2TIMGroupMemberInfo> memberList) {// 그룹 구성원 제거됨}});
[[V2TIMManager sharedInstance] kickGroupMember:@"groupA" memberList:@[@"user1"] reason:@"" succ:^(NSArray<V2TIMGroupMemberOperationResult *> *resultList) {// 구성원 제거 성공} fail:^(int code, NSString *desc) {// 구성원 제거 실패}];[[V2TIMManager sharedInstance] addGroupListener:self];- (void)onMemberKicked:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList {// 그룹 구성원 제거됨}
groupManager.kickGroupMember(groupID: '',memberList: []);
tim.deleteGroupMember(options);
{"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 | 자동 폐기가 활성화되고 클라이언트가 메시지를 정상적으로 반환 |
getGroupMemberList
API를 호출하여 표시할 라이브 룸의 온라인 그룹 구성원 목록을 가져올 수 있습니다. 오디오/비디오 그룹(AVChatRoom)은 구성원이 많기 때문에 전체 구성원 목록 풀링 기능은 사용할 수 없습니다. 플래그십 에디션과 그 외의 에디션은 설정이 다릅니다.getGroupMemberList
를 호출하여 최근 30명의 그룹 구성원을 풀링할 수 있습니다.getGroupMemberList
를 호출하여 최근 1,000명의 그룹 구성원을 풀링할 수 있습니다. 이 기능은 IM 콘솔에서 활성화해야 합니다. 활성화되지 않은 경우 플래그십 이외 기타 에디션에서와 같이 최근 30명의 그룹 구성원만 풀링합니다.getGroupMemberList
와 그룹 수신의 onGroupMemberEnter 및 onGroupMemberQuit 콜백을 통해 클라이언트의 온라인 그룹 구성원 목록을 유지할 수 있습니다. 단, 사용자가 라이브룸을 나간 후 다시 입장한 후에는 최근 30명의 그룹 구성원만 풀링할 수 있습니다.// filter 매개변수를 통해 그룹 소유자의 프로필을 풀링하도록 지정int role = V2TIMGroupMemberFullInfo.V2TIM_GROUP_MEMBER_FILTER_OWNER;V2TIMManager.getGroupManager().getGroupMemberList("testGroup", role, 0,new V2TIMValueCallback<V2TIMGroupMemberInfoResult>() {@Overridepublic void onError(int code, String desc) {// 메시지 가져오기 실패}@Overridepublic void onSuccess(V2TIMGroupMemberInfoResult v2TIMGroupMemberInfoResult) {// 대화 가져오기 성공}});
[[V2TIMManager sharedInstance] getGroupMemberList:@"groupA" filter:V2TIM_GROUP_MEMBER_FILTER_OWNER nextSeq:0 succ:^(uint64_t nextSeq, NSArray<V2TIMGroupMemberFullInfo *> *memberList) {// 대화 가져오기 성공} fail:^(int code, NSString *desc) {// 메시지 가져오기 실패}];
// filter 매개변수를 사용하여 그룹 소유자의 프로필만 가져오도록 지정합니다. filter를 All로 설정하여 모든 그룹 구성원의 프로필을 가져올 수도 있습니다.groupManager.getGroupMemberList(count: 10,filter: GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ADMIN,nextSeq: '0',offset: 0,groupID: "",);
tim.getGroupMemberList(options);
Message.nick
, Message.avatar
필드가 비어 있는 경우 UI에 닉네임과 프로필 사진을 표시하려면 어떻게 해야 하나요?
문제 해결에 도움이 되었나요?