logout
退出登录。customStatus
字段来设置自己的自定义状态。设置成功后,您可以通过 TIM.EVENT.USER_STATUS_UPDATED 事件收到自己状态变更的通知。详情请参见下文的 状态变更通知。setSelfStatus
接口时,通过将 customStatus
字段设置为空来主动清除。setSelfStatus
不需要升级到进阶版,也无需开启控制台开关。chat.setSelfStatus(options);
Name | Type | Description |
customStatus | String | 用户自定义状态 |
Promise
// 设置 customStatus 为空字符串 '',则清除自己的自定义状态let promise = chat.setSelfStatus({customStatus: 'xxx'});promise.then(function(imResponse) {console.log(imResponse.data);const { userID, statusType, customStatus } = imResponse.data;// userID - 用户 ID// statusType - 用户状态,枚举值及说明如下:// TencentCloudChat.TYPES.USER_STATUS_UNKNOWN - 未知// TencentCloudChat.TYPES.USER_STATUS_ONLINE - 在线// TencentCloudChat.TYPES.USER_STATUS_OFFLINE - 离线// TencentCloudChat.TYPES.USER_STATUS_UNLOGINED - 未登录// customStatus - 用户自定义状态}).catch(function(imError) {console.warn('setSelfStatus error:', imError); // 设置用户自己的自定义状态失败的相关信息});
chat.getUserStatus(options);
Name | Type | Description |
userIDList | Array | 待查询的用户 userID 列表,查询自己时,只需要传入自己的 userID 即可。 |
Promise
userIDList
仅包含自己的 userID,可查询自己的状态。// 查询自己的用户状态// userIDList 仅包含自己的 userID 时表示查询自己的状态let promise = chat.getUserStatus({userIDList: [`${myUserID}`]});promise.then(function(imResponse) {const { successUserList } = imResponse.data;successUserList.forEach((item) => {const { userID, statusType, customStatus } = item;// userID - 用户 ID// statusType - 用户状态,枚举值及说明如下:// TencentCloudChat.TYPES.USER_STATUS_UNKNOWN - 未知// TencentCloudChat.TYPES.USER_STATUS_ONLINE - 在线// TencentCloudChat.TYPES.USER_STATUS_OFFLINE - 离线// TencentCloudChat.TYPES.USER_STATUS_UNLOGINED - 未登录// customStatus - 用户自定义状态});}).catch(function(imError) {console.warn('getUserStatus error:', imError); // 获取用户状态失败的相关信息});
userIDList
为其他人的 userID 列表,可查询其他人的状态。// 查询其他用户的状态let promise = chat.getUserStatus({userIDList: ['user0', 'user1']});promise.then(function(imResponse) {const { successUserList, failureUserList } = imResponse.data;// 查询成功的用户列表successUserList.forEach((item) => {const { userID, statusType, customStatus } = item;// userID - 用户 ID// statusType - 用户状态,枚举值及说明如下:// TencentCloudChat.TYPES.USER_STATUS_UNKNOWN - 未知// TencentCloudChat.TYPES.USER_STATUS_ONLINE - 在线// TencentCloudChat.TYPES.USER_STATUS_OFFLINE - 离线// TencentCloudChat.TYPES.USER_STATUS_UNLOGINED - 未登录// customStatus - 用户自定义状态});// 查询失败的用户列表failureUserList.forEach((item) => {const { userID, code, message } = item;// userID - 查询失败的用户 ID// code - 查询失败的错误码// message - 查询失败的错误信息});}).catch(function(imError) {console.warn('getUserStatus error:', imError); // 获取用户状态失败的相关信息});
chat.subscribeUserStatus(options);
Name | Type | Description |
userIDList | Array | 用户 userID 列表,单次请求最多 100 个。 |
Promise
let promise = chat.subscribeUserStatus({userIDList: ['user0', 'user1']});promise.then(function(imResponse) {const { failureUserList } = imResponse.data;// 订阅失败的用户列表failureUserList.forEach((item) => {const { userID, code, message } = item;// userID - 查询失败的用户 ID// code - 查询失败的错误码// message - 查询失败的错误信息});}).catch(function(imError) {console.warn('subscribeUserStatus error:', imError); // 订阅用户状态失败的相关信息});
chat.unsubscribeUserStatus(options);
Name | Type | Description |
userIDList | Array | 用户 userID 列表,单次请求最多 100 个。当 userIDList 为空数组或者 undefined 时,取消当前所有的订阅。 |
Promise
// 取消当前部分用户的订阅let promise = chat.unsubscribeUserStatus({userIDList: ['user0', 'user1']});promise.then(function(imResponse) {const { failureUserList } = imResponse.data;// 取消订阅失败的用户列表failureUserList.forEach((item) => {const { userID, code, message } = item;// userID - 查询失败的用户 ID// code - 查询失败的错误码// message - 查询失败的错误信息});}).catch(function(imError) {console.warn('unsubscribeUserStatus error:', imError); // 取消订阅失败的相关信息});// 取消当前所有的订阅let promise = chat.unsubscribeUserStatus();promise.then(function(imResponse) {const { failureUserList } = imResponse.data;// 取消订阅失败的用户列表failureUserList.forEach((item) => {const { userID, code, message } = item;// userID - 查询失败的用户 ID// code - 查询失败的错误码// message - 查询失败的错误信息});}).catch(function(imError) {console.warn('unsubscribeUserStatus error:', imError); // 取消订阅失败的相关信息});
TIM.EVENT.USER_STATUS_UPDATED
抛出,但不同类型的用户触发该通知的方式不同。TIM.EVENT.USER_STATUS_UPDATED
事件,您可以在其中获取到自己的最新状态。TIM.EVENT.USER_STATUS_UPDATED
事件,您可以在其中获取到好友的最新状态。subscribeUserStatus
主动订阅好友的状态。当好友的状态发生变更时,SDK 会派发 TIM.EVENT.USER_STATUS_UPDATED
回调。subscribeUserStatus
主动订阅好友状态,那么当好友状态发生变更时,您将无法感知到。subscribeUserStatus
主动订阅。当该用户状态发生变更时,会触发 TIM.EVENT.USER_STATUS_UPDATED
回调,您可以在其中获取到其最新状态。/*** 收到通知的情况:* 1. 订阅过的用户发生了状态变更(包括在线状态和自定义状态),会触发该事件* 2. 在控制台打开了好友状态通知开关,即使未主动订阅,当好友状态发生变更时,也会触发该事件* 3. 同一个账号多设备登录,当其中一台设备修改了自定义状态,所有设备都会收到该事件*/let onUserStatusUpdated = function(event) {console.log(event.data);const userStatusList = event.data;userStatusList.forEach((item) => {const { userID, statusType, customStatus } = item;// userID - 用户 ID// statusType - 用户状态,枚举值及说明如下:// TencentCloudChat.TYPES.USER_STATUS_UNKNOWN - 未知// TencentCloudChat.TYPES.USER_STATUS_ONLINE - 在线// TencentCloudChat.TYPES.USER_STATUS_OFFLINE - 离线// TencentCloudChat.TYPES.USER_STATUS_UNLOGINED - 未登录// customStatus - 用户自定义状态})};chat.on(TencentCloudChat.EVENT.USER_STATUS_UPDATED, onUserStatusUpdated);
setSelfStatus
接口不限制进阶版。getUserStatus
查询自己的状态,不限制进阶版。getUserStatus
除了查询自己的状态外,均需要升级到进阶版。subscribeUserStatus
/ unsubscribeUserStatus
接口的所有能力,均需要升级到进阶版。setSelfStatus
接口不限频。getUserStatus
查询自己的状态,不限频。getUserStatus
除了查询自己的状态外,默认限制 5 秒 20 次请求,单次查询最大用户数不超过 500。subscribeUserStatus
接口,默认限制 5 秒 20 次请求,单次订阅最大用户数不超过 100。unsubscribeUserStatus
接口,默认限制 5 秒 20 次请求,单次取消订阅最大用户数不超过 100。
本页内容是否解决了您的问题?