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

메시지 최상단 고정

Description

The message pinning feature allows specific messages to be fixed at the top of the list in the Chat App, maintaining their position at the top even when new messages are received. This feature helps users easily find and access messages they consider important or frequently viewed.
Note:
The message pinning feature is supported in the enhanced edition 7.9 and later.
This feature is available exclusively to premium edition customers, please purchase the Premium Edition first.
Currently, the message pinning feature is only supported for ordinary groups.

Effect

You can use this feature to achieve the following group chat message pinning effect:




Pinning Message

Calling the PinGroupMessage API (Android/iOS and macOS/Windows) can set a message to be pinned at the top.
Detailed explanation of the input parameters for the message pinning API is as follows:
Attribute
Meaning
Description
groupID
Group ID
Indicates the ID of the group chat that requires message pinning/unpinning.
message
Message object
The message must have been sent successfully.
isPinned
Pinning/Unpinning action
Specifies whether to pin or unpin group messages.
Note
1. A group chat supports up to 10 pinned messages.
2. If the number of pinned messages exceeds the limit, calling the API will result in an ERR_SVR_GROUP_PINNED_MESSAGE_COUNT_LIMIT error.
Below is the sample code:
Android
iOS and macOS
Windows
V2TIMManager.getMessageManager().pinGroupMessage(groupID, message, true, new V2TIMCallback() {
@Override
public void onSuccess() {
// Message pinning succeeded.
}
@Override
public void onError(int code, String desc) {
// Message pinning failed.
}
});
[[V2TIMManager sharedInstance] pinGroupMessage:self.groupID message:message isPinned:YES succ:^{
// Message pinning succeeded.
} fail:^(int code, NSString *desc) {
// Message pinning failed.
}];
class Callback final : public V2TIMCallback {
public:
using SuccessCallback = std::function<void()>;
using ErrorCallback = std::function<void(int, const V2TIMString &)>;
Callback() = default;
~Callback() override = default;
void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}
void OnSuccess() override {
if (success_callback_) {
success_callback_();
}
}
void OnError(int error_code, const V2TIMString & error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}
private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

auto *callback = new Callback{};
callback->SetCallback(
[=]() {
// Message pinning succeeded.
delete callback;
},
[=](int error_code, const V2TIMString & error_message) {
// Message pinning failed.
delete callback;
});
V2TIMManager::GetInstance()->GetMessageManager()->PinGroupMessage(groupID, message, true, callback);

Getting the pinned messages

Calling the GetPinnedGroupMessageList API (Android/iOS and macOS/Windows) can obtain the pinned message list.
If you need to get the pinner of a message, you can do so through the pinnerInfo field of the V2TIMMessag.
Detailed explanation of the input parameters for the message pinning API is as follows:
Attribute
Meaning
Description
groupID
Group ID
Indicates the ID of the group chat for which the pinned message list needs to be obtained.
Note
This API is used to obtain the pinned message list. If the roaming of the pinned message has expired (in 7 days for trial edition and 30 days for premium edition), it will not return any result.
Below is the sample code:
Android
iOS and macOS
Windows
V2TIMManager.getMessageManager().getPinnedGroupMessageList(groupID, new V2TIMValueCallback<List<V2TIMMessage>>() {
@Override
public void onSuccess(List<V2TIMMessage> v2TIMMessages) {
// Succeeded in obtaining the pinned message list.
}
@Override
public void onError(int code, String desc) {
// Failed to obtain the pinned message list.
}
});
[[V2TIMManager sharedInstance] getPinnedGroupMessageList:self.groupID succ:^(NSArray<V2TIMMessage *> *messageList) {
// Succeeded in obtaining the pinned message list.
} fail:^(int code, NSString *desc) {
// Failed to obtain the pinned message list.
}];

template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString & error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

auto callback = new ValueCallback<V2TIMMessageVector>{};
callback->SetCallback(
[=](const V2TIMMessageVector& messageVector) {
// Succeeded in obtaining the pinned message list.
delete callback;
},
[=](int error_code, const V2TIMString & error_message) {
// Failed to obtain the pinned message list.
delete callback;
});

V2TIMManager::GetInstance()->GetMessageManager()->GetPinnedGroupMessageList(groupID, callback);

Pinned message list change notification

If you have added an advanced message event listener by calling addAdvancedMsgListener, you will receive the onGroupMessagePinned (Android/iOS and macOS/Windows) callback when the pinned message list is updated.
Note
If the change type is unpinning, the message parameter will only contain the sender, serial number, random number, and timestamp as valid fields, without a complete message body.
Below is the sample code:
Android
iOS and macOS
Windows
V2TIMManager.getMessageManager().addAdvancedMsgListener(new V2TIMAdvancedMsgListener() {
@Override
public void onGroupMessagePinned(String groupID, V2TIMMessage message, boolean isPinned, V2TIMGroupMemberInfo opUser) {
// Receives notification of changes to the pinned message list.
}
});
[[V2TIMManager sharedInstance] addAdvancedMsgListener:self];
- (void)onGroupMessagePinned:(NSString *)groupID message:(V2TIMMessage *)message isPinned:(BOOL)isPinned opUser:(V2TIMGroupMemberInfo *)opUser {
// Receives notification of changes to the pinned message list.
}
V2TIMManager::GetInstance()->GetMessageManager()->AddAdvancedMsgListener(this);
void OnGroupMessagePinned(const V2TIMString &groupID, const V2TIMMessage &message,
bool isPinned, const V2TIMGroupMemberInfo &opUser) override {
// Receives notification of changes to the pinned message list.
}