• UIKit
  • SDK
  • 서버 API
Chat/
SDK/
Android/
메시지/
SDK
  • Chat SDK 설치
  • Chat SDK 초기화
  • 로그인 및 로그아웃
  • 메시지
    • 개요
    • 메시지 보내기
    • 메시지 받기
    • 메시지 검색
    • 메시지 전달
    • 메시지 수정
    • 삽입 메시지
    • 메시지 삭제
    • 과거 메시지 비우기
    • 메시지 철회
    • 온라인 메시지 보내기
    • 메시지 읽음 확인
    • 메시지 조회
    • 알림
    • 지향적 그룹 메시지
    • 알림 차단
    • Key-Value 확장
    • 반응
    • 번역
    • 메시지 최상단 고정
  • 대화
    • 개요
    • 대화 목록
    • 대화 획득
    • 읽지 않은 메시지 수
    • 대화 최상단 고정
    • 대화 삭제
    • 초안
    • 마크
    • 대화 그룹
  • 그룹
    • 개요
    • 그룹 관리
    • 정보
    • 멤버 관리
    • 멤버 정보
    • 속성
    • 카운터
  • 커뮤니티 및 화제
    • 커뮤니티 관리
    • 권한 그룹
  • 사용자
    • 사용자 정보
    • 사용자 상태
    • 친구 관리
    • 친구 그룹화
    • 블록리스트
    • Follow
  • 국부 검색
    • 메시지 검색
    • 친구 검색
    • 그룹 검색
    • 그룹 멤버 검색
  • 시그널링
  • 인터페이스 참고 문서
    • Java
  • Guideline for Beginners
  • 콘솔 안내
    • 애플리케이션 생성 및 업그레이드
    • 기본 구성
    • 기능 구성
    • 계정 관리
    • 그룹 관리
    • 콜백 구성
  • 제품 소개
    • 메시지 관리
      • 1대1 메시지
      • 메시지 저장
      • 오프라인 푸시
      • 그룹 메시지
      • 메시지 포맷
    • 계정 시스템
      • 로그인 인증
      • 온라인 상태 관리
    • 그룹 관련
      • 그룹 시스템
      • 그룹 관리
    • 사용자 정보 및 관계망
      • 정보 관리
      • 관계망 관리
  • 구매 가이드
    • 과금 개요
    • 가격
  • 에러코드
이 페이지는 현재 영어로만 제공되며 한국어 버전은 곧 제공될 예정입니다. 기다려 주셔서 감사드립니다.

메시지 수정

Feature Description

This feature enables any participant in a conversation to modify a successfully sent message in the conversation. The message will be synced to all the participants in the conversation once modified successfully.
Note:
This feature is supported only by the Enhanced edition on v6.2 or later.

Effect

You can use this API to change the cloudCustomData of a message, implementing features such as message reply and message quote as shown below:




API Description

Modifying a Message

A conversation participant can call modifyMessage (Android / iOS and macOSWindows) to modify a sent message in the conversation. The SDK allows any conversation participant to modify a message in the conversation. You can add more restrictions at the business layer, for example, only allowing the message sender to modify the message.
Currently, the following information of a message can be modified:
cloudCustomData (Android / iOS and macOSWindows)
V2TIMTextElem (Android / iOS and macOSWindows)
V2TIMCustomElem (Android / iOS and macOSWindows)
V2TIMLocationElem (Android / iOS and macOSWindows)
V2TIMFaceElem (Android / iOS and macOSWindows)
Sample code:
Android
iOS and macOS
Windows
// The original message object in the conversation is `originMessage`.
// Modify the `cloudCustomData` information of the message object
originMessage.setCloudCustomData("modify_cloud_custom_data".getBytes());
// If the message is a text message, modify the text message content
if (V2TIMMessage.V2TIM_ELEM_TYPE_TEXT == originMessage.getElemType()) {
originMessage.getTextElem().setText("modify_text");
}
V2TIMManager.getMessageManager().modifyMessage(originMessage, new V2TIMCompleteCallback<V2TIMMessage>() {
@Override
public void onComplete(int code, String desc, V2TIMMessage message) {
// After the message is modified, `message` is the modified message object.
}
});
// Original message object in the conversation
V2TIMMessage *originMessage;
// Modify the `cloudCustomData` information of the message object
originMessage.cloudCustomData = [@"modify_cloud_custom_data" dataUsingEncoding:NSUTF8StringEncoding];
// If the message is a text message, modify the text message content
if (V2TIM_ELEM_TYPE_TEXT == originMessage.elemType) {
originMessage.textElem.text = @"modify_text";
}
[[V2TIMManager sharedInstance] modifyMessage:originMessage completion:^(int code, NSString *desc, V2TIMMessage *msg) {
// After the message is modified, `msg` is the modified message object.
}];
template <class T>
class CompleteCallback final : public V2TIMCompleteCallback<T> {
public:
using InternalCompleteCallback =
std::function<void(int, const V2TIMString&, const T&)>;

CompleteCallback() = default;
~CompleteCallback() override = default;

void SetCallback(InternalCompleteCallback complete_callback) { complete_callback_ = std::move(complete_callback); }

void OnComplete(int error_code, const V2TIMString& error_message, const T& value) override {
if (complete_callback_) {
complete_callback_(error_code, error_message, value);
}
}

private:
InternalCompleteCallback complete_callback_;
};

// V2TIMMessage originMessage;
std::string str = u8"modify_cloud_custom_data";
// Modify the `cloudCustomData` information of the message object
originMessage.cloudCustomData = {reinterpret_cast<const uint8_t*>(str.data()), str.size()};
if (originMessage.elemList.Size() == 1) {
V2TIMElem* elem = originMessage.elemList[0];
if (elem->elemType == V2TIMElemType::V2TIM_ELEM_TYPE_TEXT) {
// If the message is a text message, modify the text message content
auto textElem = static_cast<V2TIMTextElem*>(elem);
textElem->text = "modify_text";
}
}

auto callback = new CompleteCallback<V2TIMMessage>{};
callback->SetCallback([=](int error_code, const V2TIMString& error_message, const V2TIMMessage& message) {
// After the message is modified, `message` is the modified message object.
delete callback;
});

V2TIMManager::GetInstance()->GetMessageManager()->ModifyMessage(originMessage, callback);

Message Modified Notification

Conversation participants call addAdvancedMsgListener (Android / iOS and macOSWindows) to add the advanced message listener.
After a message in the conversation is modified, all the participants will receive the onRecvMessageModified callback (Android / iOS and macOSWindows), which contains the modified message object.
Sample code:
Android
iOS and macOS
Windows
V2TIMAdvancedMsgListener advancedMsgListener = new V2TIMAdvancedMsgListener() {
// Notification of the message content modification
@Override
public void onRecvMessageModified(V2TIMMessage msg) {
// `msg` is the modified message object.
}
};
// Add a message listener
V2TIMManager.getMessageManager().addAdvancedMsgListener(advancedMsgListener);
// Add a message listener
[[V2TIMManager sharedInstance] addAdvancedMsgListener:self];
/// Notification of the message content modification
- (void)onRecvMessageModified:(V2TIMMessage *)msg {
// `msg` is the modified message object.
}
class AdvancedMsgListener final : public V2TIMAdvancedMsgListener {
public:
// Notification of the message content modification
void OnRecvNewMessage(const V2TIMMessage& message) override {
// `message` is the modified message object.
}
// Other members ...
};

// Note that `advancedMsgListener` should not be released before the IM SDK is uninitialized,
// otherwise the message callback cannot be called.
AdvancedMsgListener advancedMsgListener;
V2TIMManager::GetInstance()->GetMessageManager()->AddAdvancedMsgListener(&advancedMsgListener);