用户状态订阅

更新时间: 2024/09/18 11:18:59

网易云信即时通讯 SDK(NetEase IM SDK,以下简称 NIM SDK)提供订阅用户状态功能,支持订阅/取消订阅用户状态,发布自定义的用户状态,查询用户状态订阅关系等。

用户的状态包括在线状态和自定义状态。

本文介绍用户状态订阅相关的 API。

支持平台

Android iOS Windows/macOS Web/uni-app/小程序
✔️️ ✔️️ ✔️️ ✔️️

API 概览

用户状态订阅监听

Android/iOS/Windows/macOS
API 说明 起始版本
addSubscribeListener 注册用户状态订阅相关监听器 v10.4.0
removeSubscribeListener 移除用户状态订阅相关监听器 v10.4.0
Web/uni-app/小程序
API 说明 起始版本
on("EventName") 注册用户状态订阅相关监听 v10.4.0
off("EventName") 取消用户状态订阅相关监听 v10.4.0

用户状态订阅操作

API 说明 起始版本
subscribeUserStatus 订阅用户状态 v10.4.0
unsubscribeUserStatus 取消订阅用户状态 v10.4.0
publishCustomUserStatus 发布用户自定义状态 v10.4.0
queryUserStatusSubscriptions 查询用户状态订阅关系 v10.4.0

接口类

V2NIMSubscriptionService 类提供用户状态订阅相关接口,包括注册用户状态订阅监听,获取、订阅用户状态,发布自定义状态等接口。

addSubscribeListener

接口描述

注册用户状态订阅监听器。

注册成功后,当事件发生时,SDK 会返回对应的回调。

  • 建议在初始化后调用该方法。

  • 全局只需注册一次。

  • 该方法为同步。

参数说明

Android
Javavoid addSubscribeListener(V2NIMSubscribeListener listener);
参数名称 类型 是否必填 说明
listener V2NIMSubscribeListener 用户状态订阅相关监听器
iOS
Objective-C- (void)addSubscribeListener:(id<V2NIMSubscribeListener>)listener;
参数名称 类型 是否必填 说明
listener V2NIMSubscribeListener 用户状态订阅相关监听器
Windows/macOS
C++virtual void addSubscribeListener(const V2NIMSubscribeListener& listener) = 0;
参数名称 类型 是否必填 说明
listener V2NIMSubscribeListener 用户状态订阅相关监听器

示例代码

Android
JavaV2NIMSubscribeListener listener = new V2NIMSubscribeListener() {
  @Override
  public void onUserStatusChanged(List<V2NIMUserStatus> userStatusList) {
   //用户状态变更
  }
};
NIMClient.getService(V2NIMSubscriptionService.class).addSubscribeListener(listener);
iOS
Objective-C[NIMSDK.sharedSDK.v2SubscriptionService addSubscribeListener:self];
Windows/macOS
C++V2NIMSubscribeListener listener;
listener.onUserStatusChanged = [](nstd::vector<V2NIMUserStatusEvent> events) {
    // handle user status changed event
};
subscriptionService.addSubscribeListener(listener);

返回参数

无。

removeSubscribeListener

接口描述

移除用户状态订阅相关监听器。

该方法为同步。

参数说明

Android
Javavoid removeSubscribeListener(V2NIMSubscribeListener listener);
参数名称 类型 是否必填 说明
listener V2NIMSubscribeListener 用户状态订阅相关监听器
iOS
Objective-C- (void)removeSubscribeListener:(id<V2NIMSubscribeListener>)listener;
参数名称 类型 是否必填 说明
listener V2NIMSubscribeListener 用户状态订阅相关监听器
Windows/macOS
C++virtual void removeSubscribeListener(const V2NIMSubscribeListener& listener) = 0;
参数名称 类型 是否必填 说明
listener V2NIMSubscribeListener 用户状态订阅相关监听器

示例代码

Android
JavaNIMClient.getService(V2NIMSubscriptionService.class).removeSubscribeListener(listener);
iOS
Objective-C[NIMSDK.sharedSDK.v2SubscriptionService removeSubscribeListener:self];
Windows/macOS
C++subscriptionService.removeSubscribeListener(listener);

返回参数

无。

on("EventName")

接口描述

注册用户状态订阅相关监听。

注册成功后,当事件发生时,SDK 会返回对应的回调。

  • 建议在初始化后调用该方法。

  • 全局只需注册一次。

  • 该方法为同步。

参数说明

Web/uni-app/小程序
TypeScriptinterface V2NIMSubscriptionService extends EventEmitter3<V2NIMSubscribeListener> {
  /**
   * 继承自 eventEmitter3 的监听事件方法
   */
  on<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
  /**
   * 继承自 eventEmitter3 的监听事件方法
   */
  once<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
}
参数名称 类型 是否必填 说明
eventName V2NIMSubscribeListener 事件名称:onUserStatusChanged:其他用户的用户状态变更回调,包括在线状态和自定义状态。同账号发布状态时,多端也会同步收到回调。
fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。

示例代码

Web/uni-app/小程序
TypeScriptnim.V2NIMSubscriptionService.on("onUserStatusChanged", function (userStatusList: Array<V2NIMUserStatus>) {})

返回参数

无。

off("EventName")

接口描述

取消注册用户状态订阅相关监听。

该方法为同步。

参数说明

Web/uni-app/小程序
TypeScriptinterface V2NIMSubscriptionService extends EventEmitter3<V2NIMSubscribeListener> {
  /**
   * 继承自 eventEmitter3 的取消监听方法
   */
  off<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
  /**
   * 继承自 eventEmitter3 的移除事件方法
   */
  removeAllListeners<T extends keyof I>(eventName?: T): void
}
参数名称 类型 是否必填 说明
eventName V2NIMSubscribeListener 事件名称:onUserStatusChanged:其他用户的用户状态变更回调,包括在线状态和自定义状态。同账号发布状态时,多端也会同步收到回调。
fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。

示例代码

Web/uni-app/小程序
TypeScriptnim.V2NIMSubscriptionService.off("onUserStatusChanged", function (userStatusList: Array<V2NIMUserStatus>) {})

返回参数

无。

subscribeUserStatus

接口描述

订阅用户状态,包括在线状态或用户自定义的状态。

成功订阅用户状态后,当订阅的用户状态有变更时,会触发 onUserStatusChanged 回调。

  • 用户状态事件订阅时单向的,双方需要各自自行订阅。
  • 单次最多订阅 100 个用户的状态,可多次调用该接口,订阅更多的用户状态,但是总订阅人数最多为 3000,若超限,则默认删除最老的订阅,即有效订阅最多为 3000 个。
  • 若同一账号多端重复订阅,订阅有效期默认会覆盖(新的覆盖前一次时长)。
  • 若传入的账号 ID 都不存在,则调用接口失败。若部分账号 ID 存在,则调用接口成功。调用结果只返回账号 ID 存在的用户状态,错误的账号 ID 不返回。

参数说明

Android
Javavoid subscribeUserStatus(V2NIMSubscribeUserStatusOption option, V2NIMSuccessCallback<List<String>> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 说明
option V2NIMSubscribeUserStatusOption 订阅用户状态的配置参数。
success V2NIMSuccessCallback 订阅用户状态成功回调。
failure V2NIMFailureCallback 订阅用户状态失败回调,返回 错误码
iOS
Objective-C- (void)subscribeUserStatus:(V2NIMSubscribeUserStatusOption *_Nonnull)option
                    success:(nullable V2NIMSubscribeUserStatusCallback)success
                    failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 说明
option V2NIMSubscribeUserStatusOption 订阅用户状态的配置参数。
success V2NIMSubscribeUserStatusCallback 订阅用户状态成功回调,可自定义设置。
failure V2NIMFailureCallback 订阅用户状态失败回调,返回 错误码
Windows/macOS
C++virtual void subscribeUserStatus(const V2NIMSubscribeUserStatusOption &option,
    const V2NIMSuccessCallback<const std::vector<std::string> &> &success,
    const V2NIMFailureCallback &failure) = 0;
参数名称 类型 是否必填 说明
option V2NIMSubscribeUserStatusOption 订阅用户状态的配置参数。
success V2NIMSuccessCallback 订阅用户状态成功回调。
failure V2NIMFailureCallback 订阅用户状态失败回调,返回 错误码
Web/uni-app/小程序
TypeScriptsubscribeUserStatus(option: V2NIMSubscribeUserStatusOption): Promise<Array<string>>
参数名称 类型 是否必填 说明
option V2NIMSubscribeUserStatusOption 订阅用户状态的配置参数。

示例代码

Android
JavaList<String> accountIds = Arrays.asList("account1", "account2");
//订阅的有效期,时间范围为 60~2592000,单位:秒
long duration = 60L;
//订阅后是否立即同步事件状态值,默认为 false。为 true:表示立即同步当前状态值 但为了性能考虑,30S 内重复订阅,会忽略该参数
boolean immediateSync = false;
V2NIMSubscribeUserStatusOption option = new V2NIMSubscribeUserStatusOption(accountIds, duration, immediateSync);
NIMClient.getService(V2NIMSubscriptionService.class).subscribeUserStatus(option, new V2NIMSuccessCallback<List<String>>() {
  @Override
  public void onSuccess(List<String> failList) {
   //订阅成功,返回订阅失败的 failList
  }
}, new V2NIMFailureCallback() {
  @Override
  public void onFailure(V2NIMError error) {
   //订阅失败
  }
});
iOS
Objective-CV2NIMSubscribeUserStatusOption *option = [[V2NIMSubscribeUserStatusOption alloc] init];
    option.accountIds = @[@"accId1",@"accId2"];
    [NIMSDK.sharedSDK.v2SubscriptionService subscribeUserStatus:option success:^(NSArray<NSString *> *failedList) {
           // 成功回调
        } failure:^(V2NIMError * _Nonnull error) {
            // 失败回调
        }];
Windows/macOS
C++V2NIMSubscribeUserStatusOption option;
option.accountIds.push_back("account1");
subscriptionService.subscribeUserStatus(
    option,
    [](nstd::vector<nstd::string> failedAccounts) {
        // subscribe user status succeeded
    },
    [](V2NIMError error) {
        // subscribe user status failed, handle error
    });
Web/uni-app/小程序
TypeScripttry {
    const failedAccounts = await nim.V2NIMSubscriptionService.subscribeUserStatus({
        accountIds: ['user1', 'user2'],
        duration: 3600 * 24
    })
    if (failedAccounts.length > 0) {
       console.error('subscribeUserStatus failed accounts', failedAccounts)
    }
} catch(err) {
    console.error('subscribeUserStatus err': err)
}

返回参数

Android/iOS/Windows/macOS

无返回值。

Web/uni-app/小程序

Promise<Array>

相关回调

Android/Windows/macOS
  • 请求成功,返回 V2NIMSuccessCallback 回调。
  • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
iOS
  • 请求成功,返回 V2NIMSubscribeUserStatusCallback 回调,可自定义设置。
  • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
Web/uni-app/小程序

无。

unsubscribeUserStatus

接口描述

取消用户状态的订阅。

参数说明

Android
Javavoid unsubscribeUserStatus(V2NIMUnsubscribeUserStatusOption option, V2NIMSuccessCallback<List<String>> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 说明
option V2NIMUnsubscribeUserStatusOption 取消订阅用户状态的配置参数。
success V2NIMSuccessCallback 取消订阅用户状态成功回调。
failure V2NIMFailureCallback 取消订阅用户状态失败回调,返回 错误码
iOS
Objective-C- (void)unsubscribeUserStatus:(V2NIMUnsubscribeUserStatusOption *_Nonnull)option
                      success:(nullable V2NIMUnsubscribeUserStatusCallback)success
                      failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 说明
option V2NIMUnsubscribeUserStatusOption 取消订阅用户状态的配置参数。
success V2NIMUnsubscribeUserStatusCallback 取消订阅用户状态成功回调,可自定义设置。
failure V2NIMFailureCallback 取消订阅用户状态失败回调,返回 错误码
Windows/macOS
C++virtual void unsubscribeUserStatus(const V2NIMUnsubscribeUserStatusOption& option,
    const V2NIMSuccessCallback<nstd::vector<nstd::string>>& success,
    const V2NIMFailureCallback& failure) = 0;
参数名称 类型 是否必填 说明
option V2NIMUnsubscribeUserStatusOption 取消订阅用户状态的配置参数。
success V2NIMSuccessCallback 取消订阅用户状态成功回调。
failure V2NIMFailureCallback 取消订阅用户状态失败回调,返回 错误码
Web/uni-app/小程序
TypeScriptunsubscribeUserStatus(option: V2NIMUnsubscribeUserStatusOption): Promise<Array<string>>
参数名称 类型 是否必填 说明
option V2NIMUnsubscribeUserStatusOption 取消订阅用户状态的配置参数。

示例代码

Android
JavaList<String> accountIds = Arrays.asList("account1", "account2");
V2NIMUnsubscribeUserStatusOption option = new V2NIMUnsubscribeUserStatusOption(accountIds);
NIMClient.getService(V2NIMSubscriptionService.class).unsubscribeUserStatus(option, new V2NIMSuccessCallback<List<String>>() {
  @Override
  public void onSuccess(List<String> failList) {
   //取消订阅成功,返回取消订阅失败的 failList
  }
}, new V2NIMFailureCallback() {
  @Override
  public void onFailure(V2NIMError error) {
   //取消订阅失败
  }
});
iOS
Objective-CV2NIMUnsubscribeUserStatusOption *option = [[V2NIMUnsubscribeUserStatusOption alloc] init];
    option.accountIds = @[@"accId1",@"accId2"];
    [NIMSDK.sharedSDK.v2SubscriptionService unsubscribeUserStatus:option success:^(NSArray<NSString *> *failedList) {
        // 成功回调
    } failure:^(V2NIMError * _Nonnull error) {
        // 失败回调
    }];
Windows/macOS
C++V2NIMUnsubscribeUserStatusOption option;
option.accountIds.push_back("account1");
subscriptionService.unsubscribeUserStatus(
    option,
    [](nstd::vector<nstd::string> failedAccounts) {
        // unsubscribe user status succeeded
    },
    [](V2NIMError error) {
        // unsubscribe user status failed, handle error
    });
Web/uni-app/小程序
TypeScripttry {
    const failedAccounts = await nim.V2NIMSubscriptionService.unsubscribeUserStatus({
        accountIds: ['user1', 'user2']
    })
    if (failedAccounts.length > 0) {
       console.error('unsubscribeUserStatus failed accounts', failedAccounts)
    }
} catch(err) {
    console.error('unsubscribeUserStatus err': err)
}

返回参数

Android/iOS/Windows/macOS

无返回值。

Web/uni-app/小程序

Promise<Array>

相关回调

Android/Windows/macOS
  • 请求成功,返回 V2NIMSuccessCallback 回调。
  • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
iOS
  • 请求成功,返回 V2NIMUnsubscribeUserStatusCallback 回调,可自定义设置。
  • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
Web/uni-app/小程序

无。

queryUserStatusSubscriptions

接口描述

查询用户状态订阅关系。

传入账号列表,查询自己订阅了其中哪些账号的状态,调用接口成功后,返回订阅的账号列表。

参数说明

Android
Javavoid queryUserStatusSubscriptions(List<String> accountIds, V2NIMSuccessCallback<List<V2NIMUserStatusSubscribeResult>> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 说明
accountIds List<String> 需要查询的账号列表。查询自己是否订阅了对应账号。
  • 如果账号列表为空,表示查询用户状态的所有订阅关系,即查询自己的全部订阅用户。
  • 如果账号列表不为空,单次查询不超过 3000 个账号 ID,查询的数量越大查询时间越久,请尽量按需查询,建议限制在 100 个账号以内。
  • success V2NIMSuccessCallback 查询成功回调,返回 V2NIMUserStatusSubscribeResult 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)queryUserStatusSubscriptions:(NSArray<NSString *>*_Nullable)accountIds
                                 success:(nullable V2NIMSubscribeQueryCallback)success
                                 failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    accountIds NSArray<NSString *> 需要查询的账号列表。查询自己是否订阅了对应账号。
  • 如果账号列表为空,表示查询用户状态的所有订阅关系,即查询自己的全部订阅用户。
  • 如果账号列表不为空,单次查询不超过 3000 个账号 ID,查询的数量越大查询时间越久,请尽量按需查询,建议限制在 100 个账号以内。
  • success V2NIMSubscribeQueryCallback 查询成功回调,可自定义设置。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Windows/macOS
    C++virtual void queryUserStatusSubscriptions(const nstd::vector<nstd::string>& accountIds,
        const V2NIMSuccessCallback<const nstd::vector<V2NIMUserStatusSubscribeResult>&>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    accountIds nstd::vectornstd::string 需要查询的账号列表。查询自己是否订阅了对应账号。
  • 如果账号列表为空,表示查询用户状态的所有订阅关系,即查询自己的全部订阅用户。
  • 如果账号列表不为空,单次查询不超过 3000 个账号 ID,查询的数量越大查询时间越久,请尽量按需查询,建议限制在 100 个账号以内。
  • success V2NIMSuccessCallback 查询成功回调,返回 V2NIMUserStatusSubscribeResult 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptqueryUserStatusSubscriptions(accountIds: Array<string>): Promise<Array<V2NIMUserStatusSubscribeResult>>
    
    参数名称 类型 是否必填 说明
    accountIds Array<string> 需要查询的账号列表。查询自己是否订阅了对应账号。
  • 如果账号列表为空,表示查询用户状态的所有订阅关系,即查询自己的全部订阅用户。
  • 如果账号列表不为空,单次查询不超过 3000 个账号 ID,查询的数量越大查询时间越久,请尽量按需查询,建议限制在 100 个账号以内。
  • 示例代码

    Android
    JavaList<String> accountIds = Arrays.asList("account1", "account2");
    NIMClient.getService(V2NIMSubscriptionService.class).queryUserStatusSubscriptions(accountIds, new V2NIMSuccessCallback<List<V2NIMUserStatusSubscribeResult>>() {
      @Override
      public void onSuccess(List<V2NIMUserStatusSubscribeResult> v2NIMUserStatusSubscribeResults) {
       //查询成功
      }
    }, new V2NIMFailureCallback() {
      @Override
      public void onFailure(V2NIMError error) {
       //查询失败
      }
    });
    
    iOS
    Objective-C[NIMSDK.sharedSDK.v2SubscriptionService queryUserStatusSubscriptions:@[@"accId1",@"accId2"] success:^(NSArray<V2NIMUserStatusSubscribeResult *> *resultList) {
            // 成功回调
        } failure:^(V2NIMError * _Nonnull error) {
            // 失败回调
        }];
    
    Windows/macOS
    C++nstd::vector<nstd::string> accountIds;
    accountIds.push_back("account1");
    subscriptionService.queryUserStatusSubscriptions(
        accountIds,
        [](nstd::vector<nstd::string> subscribedAccounts) {
            // query user status subscribe succeeded
        },
        [](V2NIMError error) {
            // query user status subscribe failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
        const result = await nim.V2NIMSubscriptionService.queryUserStatusSubscriptions(['user1', 'user2'])
       console.log('queryUserStatusSubscriptions result', result)
     } catch(err) {
        console.error('queryUserStatusSubscriptions err': err)
     }
    

    返回参数

    Android/iOS/Windows/macOS

    无返回值。

    Web/uni-app/小程序

    Promise<Array>

    相关回调

    Android/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
    iOS
    • 请求成功,返回 V2NIMSubscribeQueryCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
    Web/uni-app/小程序

    无。

    publishCustomUserStatus

    接口描述

    发布用户自定义状态。

    如果默认在线状态不满足业务需求,可以发布自定义用户状态。

    参数说明

    Android
    Javavoid publishCustomUserStatus(V2NIMCustomUserStatusParams params, V2NIMSuccessCallback<V2NIMCustomUserStatusPublishResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    params V2NIMCustomUserStatusParams 发布自定义用户状态的配置参数。
    success V2NIMSuccessCallback 发布成功回调,返回 V2NIMCustomUserStatusPublishResult
    failure V2NIMFailureCallback 发布失败回调,返回 错误码
    iOS
    Objective-C- (void)publishCustomUserStatus:(V2NIMCustomUserStatusParams *_Nonnull)params
                            success:(nullable V2NIMCustomUserStatusPublishCallback)success
                            failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    params V2NIMCustomUserStatusParams 发布自定义用户状态的配置参数。
    success V2NIMCustomUserStatusPublishCallback 发布成功回调,可自定义设置。
    failure V2NIMFailureCallback 发布失败回调,返回 错误码
    Windows/macOS
    C++virtual void publishCustomUserStatus(const V2NIMCustomUserStatusParams& params,
        const V2NIMSuccessCallback<const V2NIMCustomUserStatusPublishResult&>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    params V2NIMCustomUserStatusParams 发布自定义用户状态的配置参数。
    success V2NIMSuccessCallback 发布成功回调,返回 V2NIMCustomUserStatusPublishResult
    failure V2NIMFailureCallback 发布失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptpublishCustomUserStatus(params: V2NIMCustomUserStatusParams): Promise<V2NIMCustomUserStatusPublishResult>
    
    参数名称 类型 是否必填 说明
    params V2NIMCustomUserStatusParams 发布自定义用户状态的配置参数。

    示例代码

    Android
    Java//自定义设置值:10000 以上,包括一万,一万以内为预定义值
    int statusType = 10001;
    //状态的有效期,单位秒,范围为 60s 到 7days
    long duration = 60L;
    //用户发布状态时设置的扩展字段
    String extension = "{\"key\":\"value\"}";
    //用户发布状态时是否只广播给在线的订阅者,默认值为 TRUE
    boolean onlineOnly = true;
    // 用户发布状态时是否需要多端同步,默认值为 FALSE
    boolean multiSync = false;
    //自定义用户状态参数
    V2NIMCustomUserStatusParams params = new V2NIMCustomUserStatusParams.Builder(statusType,duration)
       .extension(extension)
       .onlineOnly(onlineOnly)
       .multiSync(multiSync)
       .build();
    NIMClient.getService(V2NIMSubscriptionService.class).publishCustomUserStatus(params, new V2NIMSuccessCallback<V2NIMCustomUserStatusPublishResult>() {
      @Override
      public void onSuccess(V2NIMCustomUserStatusPublishResult v2NIMCustomUserStatusPublishResult) {
       //发布自定义用户状态成功
      }
    }, new V2NIMFailureCallback() {
      @Override
      public void onFailure(V2NIMError error) {
       //发布自定义用户状态失败
      }
    });
    
    iOS
    Objective-C V2NIMCustomUserStatusParams *params = [[V2NIMCustomUserStatusParams alloc] init];
        params.statusType = 10001;
        [NIMSDK.sharedSDK.v2SubscriptionService publishCustomUserStatus:params success:^(V2NIMCustomUserStatusPublishResult *resultList) {
            // 成功回调
        } failure:^(V2NIMError * _Nonnull error) {
            // 失败回调
        }];
    
    Windows/macOS
    C++V2NIMCustomUserStatusParams params;
    params.statusType = 100001;
    subscriptionService.publishCustomUserStatus(
        params,
        []() {
            // publish custom user status succeeded
        },
        [](V2NIMError error) {
            // publish custom user status failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
        const result = await nim.V2NIMSubscriptionService.publishCustomUserStatus({
              /**
               * 自定义设置值:10000 以上,不包括一万,一万以内为预定义值。小于 1 万,返回参数错误
               */
              statusType: 10001
              /**
               * 状态的有效期,单位秒,范围为 60s 到 7days
               */
              duration: 3600 * 24
              /**
               * 用户发布状态时是否只广播给在线的订阅者。默认为 true
               */
              onlineOnly: false
              /**
               * 用户发布状态时是否需要多端同步。默认为 false
               */
              multiSync: true
        })
       console.log('publishCustomUserStatus result', result)
     } catch(err) {
        console.error('publishCustomUserStatus err': err)
     }
    

    返回参数

    Android/iOS/Windows/macOS

    无返回值。

    Web/uni-app/小程序

    Promise<V2NIMCustomUserStatusPublishResult>

    相关回调

    Android/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
    iOS
    • 请求成功,返回 V2NIMCustomUserStatusPublishCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含用户订阅相关错误码。
    Web/uni-app/小程序

    无。

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • 用户状态订阅监听
    • 用户状态订阅操作
    • 接口类
    • addSubscribeListener
    • removeSubscribeListener
    • on("EventName")
    • off("EventName")
    • subscribeUserStatus
    • unsubscribeUserStatus
    • queryUserStatusSubscriptions
    • publishCustomUserStatus