addAdvancedMsgListener의 프로토콜에 콜백이 정의되어 있는 V2TimAdvancedMsgListener API를 사용하여 모든 유형의 메시지(텍스트, 사용자 지정 및 리치 미디어 메시지)를 수신합니다.addAdvancedMsgListener (상세 보기) API를 호출하여 고급 메시지 리스너를 추가합니다. App에서 적시에 메시지를 수신할 수 있도록 (예: 채팅 페이지가 초기화된 후) API를 일찍 호출하는 것이 좋습니다.import { TencentImSDKPlugin } from 'react-native-tim-js';TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener({onRecvC2CReadReceipt: ( receiptList) {},// C2C 메시지 읽기 알림(수신자가 markC2CMessageAsRead를 호출하면 알림이 수신됨)onRecvMessageModified: ( message) {},// 메시지 내용이 수정됨onRecvMessageReadReceipts: ( receiptList) {},// 메시지 수신 확인 알림(수신 확인이 지원되는 경우 수신자가 sendMessageReadReceipts를 호출할 때 알림 수신)onRecvMessageRevoked: ( messageid) {},// 메시지 회수 알림 수신onRecvNewMessage: ( message) {},// 새 메시지 수신onSendMessageProgress: ( message, progress) {},// 메시지 업로드 진행 이벤트});
import { TencentImSDKPlugin } from 'react-native-tim-js';// listener 생성const listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {},onSendMessageProgress: (message, progress) {},};// listener 등록TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener);// listener 제거TencentImSDKPlugin.v2TIMManager.getMessageManager().removeAdvancedMsgListener(listener);
addAdvancedMsgListener를 호출하십시오.onRecvNewMessage (상세 보기) 콜백을 수신합니다.removeAdvancedMsgListener를 호출하여 리스너를 제거하십시오. 이 단계는 선택 사항이며 필요에 따라 수행할 수 있습니다.import { TencentImSDKPlugin, MessageElemType} from 'react-native-tim-js';const listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_TEXT){const text = message.textElem.text;}},onSendMessageProgress: (message, progress) {},};TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener);
addAdvancedMsgListener를 호출하십시오.onRecvNewMessage (상세 보기) 콜백을 수신합니다.removeAdvancedMsgListener를 호출하여 리스너를 제거하십시오. 이 단계는 선택 사항이며 필요에 따라 수행할 수 있습니다.import { TencentImSDKPlugin, MessageElemType} from 'react-native-tim-js';const listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_CUSTOM){const text = message.textElem.text;const data = message.customElem.data;const desc = message.customElem.desc;const ext = message.customElem.extension;}},onSendMessageProgress: (message, progress) {},};TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener);
addAdvancedMsgListener API를 호출하여 고급 메시지 리스너를 설정합니다.onRecvNewMessage (상세 보기) 콜백을 수신하여 V2TimMessage 메시지를 가져옵니다.removeAdvancedMsgListener를 호출하여 리스너를 제거하십시오. 이 단계는 선택 사항이며 필요에 따라 수행할 수 있습니다.import { TencentImSDKPlugin, MessageElemType} from 'react-native-tim-js';const listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_IMAGE){const path = message.imageElem.path; // 이미지 업로드 경로. 이 필드는 경험을 최적화하기 위해 미리 화면에 이미지를 표시하는 데 사용할 수 있는 메시지 발신자에게만 적용됩니다.message.imageElem.imageList.map(item => { // 대형 이미지, 원본 이미지 및 썸네일 트래버스// 이미지 속성 구문 분석const height = item.height;const localUrl = item.localUrl;const size = item.size;const type = item.type; // 대형 이미지, 썸네일, 원본 이미지const url = item.url;const uuid = item.uuid;const width = item.width;})}TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 3, 0, false);},onSendMessageProgress: (message, progress) {},};TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener: listener);
if (message.elemType == MessageElemType.V2TIM_ELEM_TYPE_VIDEO) {// 썸네일, 재생 주소, 너비 및 높이, 크기와 같은 비디오 메시지 속성을 구문 분석합니다.message.videoElem.UUID;message.videoElem.duration;message.videoElem.localSnapshotUrl;message.videoElem.localVideoUrl;message.videoElem.snapshotHeight;message.videoElem.snapshotPath;// ...TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 5, 0, true);}
if (message.elemType == MessageElemType.V2TIM_ELEM_TYPE_SOUND) {// 음성 메시지의 재생 주소, 로컬 주소, 크기 및 기간을 구문 분석합니다.message.soundElem.UUID;message.soundElem.dataSize;message.soundElem.duration;message.soundElem.localUrl;message.soundElem.url;// ...TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 4, 0, true);}
if (message.elemType == MessageElemType.V2TIM_ELEM_TYPE_FILE) {// 파일 메시지의 파일 이름, 크기, url 및 기타 정보를 구문 분석합니다message.fileElem.UUID;message.fileElem.fileName;message.fileElem.fileSize;message.fileElem.localUrl;message.fileElem.path;message.fileElem.url;TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 6, 0, true);}
locationElem에서 직접 위도 및 경도 정보를 구문 분석할 수 있습니다.
다음 예시 코드는 V2TimMessage에서 지리적 위치 콘텐츠를 구문 분석하는 방법을 보여줍니다.if (message.elemType == MessageElemType.V2TIM_ELEM_TYPE_LOCATION) {// 위도, 경도, 설명과 같은 지리적 위치 정보를 구문 분석합니다message.locationElem.desc;message.locationElem.latitude;message.locationElem.longitude;}
index 및 data의 콘텐츠가 사용자에 의해 사용자 지정되는 faceElem (상세 보기)을 참고하십시오.if (message.elemType == MessageElemType.V2TIM_ELEM_TYPE_FACE) {message.faceElem.data;message.faceElem.index;}
V2TIMGroupTipsElem의 모든 필드를 구문 분석합니다.V2TIM_GROUP_TIPS_TYPE_GROUP_INFO_CHANGE는 유형에서 구문 분석되어 그룹 프로필 변경 알림임을 나타냅니다.
수신자는 opMember에서 운영자 정보를 얻을 수 있고 groupChangeInfoList에서 새 그룹 이름을 얻을 수 있습니다.
이 시점에서 수신자는 ‘운영자’와 ‘새 그룹 이름’을 병합하여 ‘alice가 그룹 이름을 group123으로 이름을 바꿨습니다’와 같은 그룹 팁을 만들 수 있습니다.if (message.elemType == MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS) {message.groupTipsElem.groupID; // 그룹message.groupTipsElem.type; // 그룹 Tips 유형message.groupTipsElem.opMember; // 운영자 프로필message.groupTipsElem.memberList; // 운영 중인 사용자 프로필message.groupTipsElem.groupChangeInfoList; // 그룹 정보 변경 내역message.groupTipsElem.memberChangeInfoList; // 그룹 구성원 변경 정보message.groupTipsElem.memberCount; // 현재 온라인 그룹 구성원 수}
if (message.textElem.nextElem != null) {// 다음 요소가 있습니다.}
피드백