- Android
- iOS
- JavaScript
- Flutter
- ReactNative
API Definition
/**
* get the pinned message
* When entering a conversation, query its pinned message through the conversation information
* @param conversation conversation identifier
* @param callback result callback
*/
JIM.getInstance().getMessageManager().getTopMessage(conversation, new IMessageManager.IGetTopMessageCallback() {
@Override
public void onSuccess(Message message, UserInfo userInfo, long l) {
}
@Override
public void onError(int i) {
}
});
// How to retrieve pinned-message updates after entering a conversation
/**
* listen for pinned-message changes in a conversation
* Use this listener to receive pinned-message changes and update the message page in real time, for example by broadcasting through EventBus
* @param listener listener
*/
JIM.getInstance().getMessageManager().addListener("msg", new IMessageManager.IMessageListener() {
@Override
/**
* pinned message
* @param message message object
* @param userInfo operator
* @param b whether the message is pinned
*/
public void onMessageSetTop(Message message, UserInfo userInfo, boolean b) {
Log.d(tag, "onMessageSetTop: " + message.toString());
EventBus.getDefault().post(new MessageTopEvent(message, userInfo, b));
}
});
API Definition
/// get the pinned message
/// - Parameters:
/// - conversation: conversation identifier
/// - successBlock: success callback
/// - errorBlock: failure callback
- (void)getTopMessage:(JConversation *)conversation
success:(void (^)(JMessage *message, JUserInfo *userInfo, long long timestamp))successBlock
error:(void (^)(JErrorCode code))errorBlock;
Query pinned messages in a specified conversation. Call this API after entering a conversation page to retrieve pinned messages for the current conversation.

Parameters
| Name | Type | Required | Default | Description | Version |
|---|---|---|---|---|---|
| message | Object | Yes | Message object | 1.0.0 | |
| message.conversationType | Number | Yes | Conversation type | 1.0.0 | |
| message.conversationId | String | Yes | Conversation ID. For PRIVATE conversations, it is the recipient userId; for GROUP conversations, it is the group ID. | 1.0.0 |
Success Callback
| Name | Type | Description | Version |
|---|---|---|---|
| result | Object | 1.0.0 | |
| result.message | Object | Pinned message object | 1.0.0 |
| result.isTop | Boolean | Whether the message is pinned | 1.0.0 |
| result.operator | Object | Operator | 1.0.0 |
| result.createdTime | Number | Pin operation time | 1.0.0 |
Failure Callback
| Name | Type | Description | Version |
|---|---|---|---|
| error | Object | A status code is provided when sending fails. Check error.msg directly or see status codes. | 1.0.0 |
Code Example
let { ConversationType } = JIM;
let conversation = {
conversationType: ConversationType.GROUP,
conversationId: 'groupid1',
};
jim.getTopMessage(conversation).then((result) => {
let { message, isTop, operator, createdTime } = result;
// message => original message that was pinned or unpinned; see the Message object for details
// isTop => whether the message is pinned
// operator => operator { id: '', name: '', portrait: '' }
// createdTime => operation time
}, (error) => {
console.log(error)
});
API Definition
/// get the pinned message
/// - Parameters:
/// - conversation: conversation identifier
Future<Result<TopMessageResult>> getTopMessage(Conversation conversation) async