• UIKit
  • SDK
  • 서버 API
Chat/
SDK/
React Native/
메시지/
SDK
  • Run Demo
  • SDK 통합
  • 초기화
  • 로그인 및 로그아웃
  • 메시지
    • 메시지 개요
    • 메시지 보내기
    • 메시지 받기
    • 과거 메시지
    • 메시지 전달
    • 메시지 수정
    • 메시지 삽입
    • 메시지 삭제
    • 메시지 비우기
    • 메시지 철회
    • 온라인 메시지
    • 읽음 확인
    • 메시지 조회
    • 그룹 @ 메시지
    • 지향적 그룹 메시지
    • 알림 음소거
    • 메시지 확장
  • 그룹
    • 개요
    • 그룹 관리
    • 그룹 정보
    • 그룹 멤버 관리
    • 그룹 멤버 정보
    • 그룹 속성 사용자 정의
    • 커뮤니티 관리
  • 사용자
    • 사용자 정보
    • 친구 관리
    • 친구 목록
    • 블록리스트
  • 오프라인 푸시
    • 오프라인 푸시
  • 국부 검색
    • 메시지 검색
    • 친구 검색
    • 그룹 검색
    • 그룹 멤버 검색
  • 시그널링
    • 시그널링 관리
  • Changelog
  • Guideline for Beginners
  • 콘솔 안내
    • 애플리케이션 생성 및 업그레이드
    • 기본 구성
    • 기능 구성
    • 계정 관리
    • 그룹 관리
    • 콜백 구성
  • 제품 소개
    • 메시지 관리
      • 1대1 메시지
      • 메시지 저장
      • 오프라인 푸시
      • 그룹 메시지
      • 메시지 포맷
    • 계정 시스템
      • 로그인 인증
      • 온라인 상태 관리
    • 그룹 관련
      • 그룹 시스템
      • 그룹 관리
    • 사용자 정보 및 관계망
      • 정보 관리
      • 관계망 관리
  • 구매 가이드
    • 과금 개요
    • 가격
  • 에러코드
이 페이지는 현재 영어로만 제공되며 한국어 버전은 곧 제공될 예정입니다. 기다려 주셔서 감사드립니다.

메시지 확장

Overview

Message extension allows you to configure keys and values for messages to implement polling, group notes, survey and other types of messages.
For polling, create a custom message using the createCustomMessage API (details), where data stores the polling title and options. And store the user ID of the voter and selected option(s) in the key and value of the message extension, respectively. With the selected options of users, we can calculate the polling percentage in real time.
For group notices, create a custom message for group notification using the createCustomMessage API, where data stores the title of the group notice, and then store the user ID and the corresponding info in the key and value of the message extension, respectively.
For survey, create a custom message using the createCustomMessage API, where data stores the title and options of the survey, and then store the user ID and the corresponding info in the key and value of the message extension, respectively.
Note:
To use this feature, you need to purchase the Ultimate edition.
You need to enable this feature via Chat console > Feature Configuration > Login and Message > Set message extension.
This feature is not available for communities and audio/video groups.

Setting message extension

Call the setMessageExtensions API (details) to set the message extension. If an extension already exists, modify its value info. Otherwise, add new ones.
The request parameters of the setMessageExtensions API are detailed as follows:
Attribute
Definition
Description
message
Message object
Three message conditions to meet:
Set isSupportMessageExtension (Flutter) to `YES` before message sending.
The message is sent successfully.
The message is not a message of a community/audio-video group.
extensions
Extensions
Modify the `value` info of an existing extension, or add new extensions.

Note:
1. The key and value of an extension can contain up to 100 B and 1 KB, respectively. You can set up to 20 extensions each time and 300 extensions for a message.
1. If multiple users set or delete the key of the same extension simultaneously, only the first user can operate successfully, and other users will receive the error code 23001 and the latest extension info in the setting response packet, who can set it again if necessary.
2. We recommend setting unique keys of extensions by different users to avoid conflicts in most cases. For example, the userID can be set as the key of the extension in polling, group notices and survey.
Sample code:
// Setting message extension
V2TimValueCallback<V2TimMessageExtensionResult[]>
setMessageExtensionsRes = await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.setMessageExtensions(msgID: '', // ID of the message for extension setting
extensions: []); // Message extension field
if (setMessageExtensionsRes.code == 0) {
// Set message extensions successfully
}

Getting message extensions

Call the getMessageExtensions API (details) to get the message extension list.
Note:
If the network is unavailable, the SDK will return the message extension list cached locally.
Sample code:
// Get message extensions
V2TimValueCallback < V2TimMessageExtension[] > getMessageExtensionsRes =
await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.getMessageExtensions(
msgID: '', // ID of the message whose extension information is to be obtained
);
if (getMessageExtensionsRes.code == 0) {
// Got message extensions successfully
getMessageExtensionsRes.data?.forEach((element) {
element.extensionKey; // Key of the extension field modified
element.extensionValue; // Value of the extension field modified
});
}

Deleting message extensions

Call the deleteMessageExtensions API (details) to delete message extensions. If the value of the keys field is set to null, all message extensions will be cleared.
Sample code:
// Delete message extensions
V2TimValueCallback<V2TimMessageExtensionResult[]>
deleteMessageExtensionsRes = await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.deleteMessageExtensions(msgID: '', // ID of the message for extension deletion
keys: []); // List of keys of the extension fields to be deleted
if (deleteMessageExtensionsRes.code == 0) {
// Deleted message extensions successfully
deleteMessageExtensionsRes.data?.forEach((element) {
element.extension; // Message extension information
element.resultCode; // Operation result code
element.resultInfo; // Result description
});
}

Updating message extensions

If you have added an event listener for advanced messages by calling addAdvancedMsgListener, you will receive the onRecvMessageExtensionsChanged callback (details) when message extensions are added or updated, and the onRecvMessageExtensionsDeleted callback (details) when message extensions are deleted.
Sample code:
// Create a message listener
V2TimAdvancedMsgListener listener = V2TimAdvancedMsgListener(
onRecvMessageExtensionsChanged:
(String msgID, V2TimMessageExtension[] extensions) {
// msgID: ID of the message modified
// extensions: List of extension fields modified
},
onRecvMessageExtensionsDeleted: (msgID, extensionKeys) {
// msgID: ID of the message whose extension information is deleted
// extensionKeys: List of keys whose extension information is deleted
},
);
// Add an event listener for advanced messages
TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.addAdvancedMsgListener(listener: listener);