通过设置单聊和群聊的消息接收选项,可以实现消息免打扰的功能。
IM SDK 支持三种类型的消息接收选项:
消息接收选项 | 功能描述 |
---|---|
TIM.TYPES.MSG_REMIND_ACPT_AND_NOTE | 在线时正常接收消息,离线时接收离线推送通知 |
TIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE | SDK 接收消息并通知接入侧(抛出 收到消息事件),接入侧不做提示,一般用于实现“消息免打扰” |
TIM.TYPES.MSG_REMIND_DISCARD | SDK 拒收消息 |
注意:
- 作为群成员,可设置自己所在群的消息提示类型。
- v2.16.0起,支持设置 C2C 会话的消息提示类型。
- “消息免打扰”,一般的实现是在线接收消息,离线不接收消息(在有离线推送的情况下)。
- “拒收消息”,即在线和离线都不接收消息,对端发送的消息可通过 getMessageList 获取到。
- v2.19.1 起,该接口支持设置社群话题的消息提示类型,groupID 传入 topicID 即可,如果话题所属社群设置为 TIM.TYPES.MSG_REMIND_DISCARD,则会忽略话题的设置。
- v2.21.0起,支持群会话消息和话题消息的提醒类型多终端、多实例同步。
接口
tim.setMessageRemindType(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Description |
---|---|---|
groupID | String | 群 ID 或 话题 ID |
userIDList | Array | C2C 会话对端 userID 列表,单次请求的 userID 数不得超过30 |
messageRemindType | String | 群消息提示类型。详细如下: |
返回值
Promise
对象。
示例
// 拒收群消息(通过 getMessageList 接口可拉取到其他群成员发送的消息)
let promise = tim.setMessageRemindType({ groupID: 'group1', messageRemindType: TIM.TYPES.MSG_REMIND_DISCARD });
promise.then(function(imResponse) {
// 设置成功后 SDK 会触发 TIM.EVENT.CONVERSATION_LIST_UPDATED 事件(遍历列表,并读取 Conversation.messageRemindType)
}).catch(function(imError) {
console.warn('setMessageRemindType error:', imError);
});
// 拒收群消息(通过 getMessageList 接口可拉取到其他群成员发送的消息)
let promise = tim.setMessageRemindType({ groupID: 'group1', messageRemindType: TIM.TYPES.MSG_REMIND_DISCARD });
promise.then(function(imResponse) {
// 设置成功后 SDK 会触发 TIM.EVENT.CONVERSATION_LIST_UPDATED 事件(遍历列表,并读取 Conversation.messageRemindType)
}).catch(function(imError) {
console.warn('setMessageRemindType error:', imError);
});
// 拒收群消息后,重新开启新消息提醒
let promise = tim.setMessageRemindType({ groupID: 'group1', messageRemindType: TIM.TYPES.MSG_REMIND_ACPT_AND_NOTE });
promise.then(function(imResponse) {
// 设置成功后 SDK 会触发 TIM.EVENT.CONVERSATION_LIST_UPDATED 事件(遍历列表,并读取 Conversation.messageRemindType)
}).catch(function(imError) {
console.warn('setMessageRemindType error:', imError);
});
// C2C 消息免打扰,一般的实现是在线接收消息,离线不接收消息(在有离线推送的情况下),v2.16.0起支持
let promise = tim.setMessageRemindType({ userIDList: ['user1', 'user2'], messageRemindType: TIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE });
promise.then(function(imResponse) {
// 设置成功后 SDK 会触发 TIM.EVENT.CONVERSATION_LIST_UPDATED 事件(遍历列表,并读取 Conversation.messageRemindType)
const { successUserIDList, failureUserIDList } = imResponse.data;
// 删除成功的 userIDList
successUserIDList.forEach((item) => {
const { userID } = item;
});
// 删除失败的 userIDList
failureUserIDList.forEach((item) => {
const { userID, code, message } = item;
});
}).catch(function(imError) {
console.warn('setMessageRemindType error:', imError);
});
// 群消息免打扰,一般的实现是在线接收消息,离线不接收消息(在有离线推送的情况下)
let promise = tim.setMessageRemindType({ groupID: 'group1', messageRemindType: TIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE });
promise.then(function(imResponse) {
// 设置消息免打扰成功
}).catch(function(imError) {
// 设置消息免打扰失败
console.warn('setMessageRemindType error:', imError);
});
// 社群话题消息免打扰,一般的实现是在线接收消息,离线不接收消息(在有离线推送的情况下)
let promise = tim.setMessageRemindType({ groupID: 'topicID', messageRemindType: TIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE });
promise.then(function(imResponse) {
// 设置消息免打扰成功
}).catch(function(imError) {
// 设置消息免打扰失败
console.warn('setMessageRemindType error:', imError);
});
本页内容是否解决了您的问题?