实时消息产品SDK的代号为 Hummer
。
获取SDK当前状态,详见 State。
public static State getState()
SDK当前状态。
public static void init(@NonNull final Context appContext, final long appId)
初始化Hummer。
注意:
Hummer 类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。
参数 | 描述 |
---|---|
appContext | 上下文环境 |
appId | 用于标识具体业务, 目前需要和 Hummer 服务提供方通过人工申请 |
public static void open(final long uid,
@NonNull final String region,
@Nullable final Set<String> tags,
@NonNull final String token,
@Nullable final Completion completion)
登录SDK,同时开始监听服务器消息以及拉取对应消息数据
参数 | 描述 |
---|---|
uid | 用户id, uid 不能为0 |
region | 需要连接服务器所处的环境参数,详情咨询相关SDK开发人员 |
tags | 保留字段,暂时可以填空集合 |
token | 用于服务初始化时所需的用户凭证 |
completion | 结果回调,详见 Completion |
public static void close(@Nullable final Completion completion)
登出SDK
注意:
- 登出SDK是一个异步操作
- 应该在completion回调中处理错误的情况
参数 | 描述 |
---|---|
completion | 结果回调,详见 Completion |
public static void refreshToken(@NonNull final String token)
刷新用户凭证
注意:
该方法已弃用,请改用 refreshToken1。
说明:
当收到 didHummerTokenWillExpire (Token即将过期)或 didHummerPreviousTokenExpired (Token过期)回调时,需重新 生成Token,并调用该API刷新Token;否则Token过期后,SDK和服务器会断开连接,导致房间不可用。
参数 | 描述 |
---|---|
token | 待刷新的用户凭证 |
public static void refreshToken(@NonNull final String token,
@Nullable final Completion completion)
废弃
注意:
该方法已弃用,请改用 refreshToken1。
刷新用户凭证
参数 | 描述 |
---|---|
token | 待刷新的用户凭证 |
completion | 结果回调,详见 Completion |
public static void refreshToken1(@NonNull final String token,
@Nullable final Completion completion)
刷新Token。
Token具有时效性,当收到 onHummerTokenWillExpired(Token即将过期)或 onHummerPreviousTokenExpired(Token过期)回调时,客户端需重新调用该API刷新Token;否则Token过期后,SDK与服务器会断开连接,导致服务中断。
参数 | 描述 |
---|---|
token | 待刷新的Token |
completion | 结果回调:0-成功,其他-失败,详见 错误码 |
public static boolean setLoggerFilePath(@NonNull String loggerPath)
自定义日志存储路径。
参数 | 描述 |
---|---|
path | 日志存储路径(存在且可写),格式为:JoLogs/Hummer,默认路径为data/data/{package_name}/cache |
public static boolean setLogLevel(HMRLogLevel logLevel)
设置SDK日志输出优先级别,默认为 VERBOSE。
日志级别分为6个级别,由低到高为:VERBOSE < DEBUG < INFO < WARNING < ERROR < RELEASE。SDK会输出当前以及高于当前设置的日志级别的日志。例如,设置的日志级别为 INFO,则将会输出 INFO、WARNING、 和 RELEASE 级别的日志,低于 INFO 级别的 VERBOSE 和 DEBUG 的日志不会被输出。
参数 | 描述 |
---|---|
logLevel | 日志等级,详见 HMRLogLevel |
public static boolean setLogCallback(HMRLogCallback callback)
注册日志输出回调来输出日志。
调用该方法设置 logger,SDK 会将日志的输出和打印交给SDK接入方来处理,接入方需要保证日志的上报,用于后期故障定位排查。
参数 | 描述 |
---|---|
callback | SDK 日志输出回调,详见 HMRLogCallback |
public static boolean uploadLogsManually(String remark)
上传日志至服务治理平台的日志管理后台。
参数 | 描述 |
---|---|
remark | 上报时的备注信息 |
public static TextMessage createTextMessage(String text)
创建文本消息对象 TextMessage ,用于发送文本消息。
参数 | 描述 |
---|---|
text | 备注信息 |
创建的文本消息对象 TextMessage。
public static void sendP2PMessage(@NonNull User receiver,
@NonNull BaseMessage message,
P2PMessageOptions options,
HMR.Completion completion)
发送点对点消息(P2P)。
用户登录 Hummer
系统后,可通过该接口给其他用户发送点对点文本消息,发送后会触发 onP2PTextMessageReceived 消息回调,消息目标用户可通过监听 onP2PTextMessageReceived 接收该文本消息。
参数 | 描述 |
---|---|
message | 消息对象,目前仅支持 TextMessage(文本消息对象,由 createTextMessage 创建 ) |
user | 该条消息的接收者,详见 User |
options | 发送消息所需要的配置信息,目前可配置该消息是否支持离线功能,详见 P2PMessageOptions ,业务可通过设置参数 options 的 isOffline 字段 ,控制该次发送的消息是否开启离线功能,该功能默认关闭。 |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
Hummer
系统即可调用该接口,操作者和接收者均无任何是否在通道内/房间内限制。public static void fetchUserOnlineStatus(@NonNull Set<User> users,
HMR.CompletionArg<Set<UserOnlineStatus>> completion)
查询用户在线状态。
用户登录过 Hummer
系统后,系统会维护一份当前用户在线状态信息,当前登录在线的用户会返回在线,登出下线的用户会返回不在线状态。
参数 | 描述 |
---|---|
users | 目标用户ID列表,不能超过200 个,详见 User |
completion | 结果回调(Completion):0-成功,并携带用户的对应在线状态(UserOnlineStatus)、其他-失败,详见 错误码 |
public static void addStateListener(@NonNull final StateListener listener)
添加 SDK 状态变更监听器
参数 | 描述 |
---|---|
listener | 待添加的监听器,详见 StateListener |
public static void removeStateListener(@NonNull final StateListener listener)
移除 SDK 状态变更监听器
参数 | 描述 |
---|---|
listener | 待移除的监听器,详见 StateListener |
public static void addTokenInvalidListener(@NonNull final TokenInvalidListener listener)
添加 token过期监听器
参数 | 描述 |
---|---|
listener | 待添加的监听器,详见 TokenInvalidListener |
public static void removeTokenInvalidListener(@NonNull final TokenInvalidListener listener)
移除 token 过期监听器
参数 | 描述 |
---|---|
listener | 待移除的监听器,详见 TokenInvalidListener |
public static void addHummerListener(@NonNull final HummerListener listener)
添加 HummerListener 监听器用于监听 HMR 类接口的事件、获取相关数据。例如Token即将过期、SDK与服务器连接状态等。
参数 | 描述 |
---|---|
listener | HummerListener 监听器 |
public static void removeHummerListener(@NonNull final HummerListener listener)
移除 HummerListener 监听器。
参数 | 描述 |
---|---|
listener | HummerListener 监听器 |
public static String getVersion()
获取 SDK 版本信息
public static <Service> Service getService(@NonNull Class<Service> serviceClass)
获取服务实例
服务实例
public static ConnectionState getConnectionState() {
获取当前连接状态,详见 ConnectionState。
SDK当前连接状态
public ChannelState getState()
获取当前连接状态,详见 ChannelState
废弃
注意:
该方法已弃用,请改用 getConnectionState。
SDK当前连接状态
public void addChannelStateListener(@NonNull ChannelStateListener listener)
废弃
注意:
该方法已弃用,请改用 addHummerListener。
添加 连接 状态变更监听器
参数 | 描述 |
---|---|
listener | 待添加的监听器,详见 ChannelStateListener |
public void removeChannelStateListener(@NonNull ChannelStateListener listener)
废弃
注意:
该方法已弃用,请改用 removeHummerListener。
移除 连接 状态变更监听器
参数 | 描述 |
---|---|
listener | 待移除的监听器,详见 ChannelStateListener |
void setRegion(String region);
设置聊天室区域
注意:
- 需要在使用聊天室相关功能之前调用设置
- 未设置将默认中国区域
参数 | 描述 |
---|---|
region | 聊天室区域 |
void createChatRoom(@NonNull ChatRoomInfo chatRoomInfo,
@NonNull CompletionArg<ChatRoom> completion);
创建聊天室
注意:
- 由于聊天室模块的所需的聊天室必须要通过创建才能使用,故需要对应的创建聊天室接口。
- 在创建聊天室完成后,服务器会返回对应的聊天室标识,用于后续在使用聊天室时的标识。
- 同时在创建聊天室时需要提供对应的聊天室信息,如名称、描述、公告以及扩展信息等。
参数 | 描述 |
---|---|
chatRoomInfo | 聊天室信息对象,包含名称、描述、公告以及扩展信息 ,详见 ChatRoomInfo |
completion | 结果回调,详见 CompletionArg - 成功:本地用户收到回调 onSuccess。 - 失败:本地用户收到回调 onFailed。错误码详见 Code |
void dismissChatRoom(@NonNull ChatRoom chatRoom,
@Nullable Completion completion);
解散聊天室
注意:
- 销毁时需要提供对应的聊天室标识用于服务器识别对应的聊天室,并正常销毁。
- 销毁需要 Owner 权限
- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
completion | 结果回调,详见 CompletionArg - 成功:本地用户收到回调 onSuccess。 - 失败:本地用户收到回调 onFailed。错误码详见 Code |
void join(@NonNull ChatRoom chatRoom,
@NonNull Map<String, String> joinProps,
@NonNull Challenges.JoiningCompletion completion);
加入聊天室
注意:
对应聊天室操作都需要进入聊天室之后才能正常的操作,如发公屏、发信令以及接受信令都要进入聊天室之后才能正常处理。
加入聊天室会涉及多端互踢的逻辑,相关互踢逻辑请咨询后台配置。
单个用户进入聊天室:10次/5s
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
joinProps | 扩展字段,用于业务扩展,SDK 只负责透传 |
completion | 结果回调 JoiningCompletion - 成功:本地用户收到回调 onSucceed。 - 失败:本地用户收到回调 onFailure。错误码详见 Code |
void leave(@NonNull ChatRoom chatRoom, @Nullable Completion completion);
退出聊天室
注意:
在进入聊天室后处理完所有需要处理的逻辑后,可以通过离开聊天室来结束跟聊天室之间的交互,同时也会停止监听聊天室的公屏、信令消息和对应的回调通知。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void kick(@NonNull ChatRoom chatRoom,
@NonNull User member,
@Nullable Map<EKickInfo, String> extraInfo,
@NonNull Completion completion);
将用户踢出聊天室
说明
该接口从
v2.15.0
开始废弃,相关功能请使用 kickUser 代替。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
member | 踢出的聊天室成员,详见 User |
extraInfo | 踢人的额外信息。key值详见 EKickInfo 目前支持的Key主要是两个: 1. Reason, 用于携带踢人原因的 Key, 其 Key 对应的 Value 只需填写对应的踢人原因的字符串即可; 2. Time 用于携带限制时长的 Key(单位:秒), 其 Key 对应的 Value 只需要填写踢人限制时长的秒数转换成字符串即可, 这些字段都是透传字段,服务器不做处理 |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void kickUser(@NonNull ChatRoom chatRoom,
@NonNull User user,
Map<String, String> extraInfo,
KickUserOptions options,
HMR.Completion completion);
把聊天室内用户踢出聊天室。
踢人成功后,聊天室内所有用户会收到通知 onMemberCountChanged、onChatRoomMemberLeave,被踢用户同时会收到通知 onUserKicked。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
user | 需要踢出聊天室的用户,详见 User |
extraInfo | 踢人的额外信息,目前支持的Key是 Reason , 用于携带踢人原因的 Key, 其 Key 对应的 Value 只需填写对应的踢人原因的字符串即可 |
options | 预留字段,详见 KickUserOptions |
completion | 结果回调 Completion :0-成功,其他-失败,详见 错误码 |
void addRole(@NonNull ChatRoom chatRoom,
@NonNull User member,
@NonNull String role,
@NonNull Completion completion);
添加聊天室权限角色。
说明
- 该接口从
v2.15.0
开始已废弃,有相关需求请改用 setUserRole。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
member | 被添加角色的聊天室成员,详见 User |
role | 角色类型,目前只能填写 Admin,详情见 Roles |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void setUserRole(@NonNull ChatRoom chatRoom,
@NonNull User user,
@NonNull String role,
RoleOptions options,
HMR.Completion completion);
设置聊天室用户角色。
角色属性在整个聊天室生命周期内固定存在,即使用户退出了该聊天室,该用户的角色属性仍然存在,除非该聊天室销毁。调用成功后会触发设置聊天室用户角色通知 onUserRoleSet。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
user | 被添加角色的聊天室成员,详见 User |
role | 角色类型,当前仅支持 admin |
options | 预留字段,详见 RoleOptions |
completion | 结果回调 Completion :0-成功,其他-失败,详见 错误码 |
void removeRole(@NonNull ChatRoom chatRoom,
@NonNull User member,
@NonNull String role,
@NonNull Completion completion);
移除聊天室权限角色。
说明
该接口从
v2.15.0
开始已废弃,有相关需求请改用 deleteUserRole。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
member | 被移除角色的聊天室成员,详见 User |
role | 角色类型, 目前只能填写 Admin,详情见 Roles |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void deleteUserRole(@NonNull ChatRoom chatRoom,
@NonNull User user,
RoleOptions options,
HMR.Completion completion);
删除用户的角色。
调用成功会触发聊天室用户角色被删通知 onUserRoleDeleted。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
user | 被移除角色的用户,详见 User |
options | 预留字段,详见 RoleOptions |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
void fetchMembers(@NonNull ChatRoom chatRoom,
int num,
int offset,
@NonNull CompletionArg<List<User>> completion);
获取聊天室在线用户列表
注意:
- 由于一些场景下,一个聊天室的内的用户可能有十几万,故聊天室 SDK 提供了对应的按需分页获取用户的结果。同时也会按照一定的默认规则来进行排序对应的用户列表。
- 获取用户列表的接口,可以在不进入聊天室时也可以获取。
- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
num | 设置每页的返回成员数(建议不超过200) |
offset | 第几页 (第一页从0开始) |
completion | 结果回调(CompletionArg) 成功:返回 onSuccess 失败:返回 onFailed,原因详见 错误码 |
void fetchRoleMembers(@NonNull ChatRoom chatRoom,
boolean online,
@NonNull CompletionArg<Map<String, List<User>>> completion);
获取聊天室带有角色的用户列表
说明
- 该接口从
v2.15.0
开始已废弃,有相关需求请改用 fetchRoomUsersByRole。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
online | 是否只获取在线的成员: true:只获取在线的、有角色的列表 false:获取所有带有角色的成员列表 |
completion | 结果回调(CompletionArg) 成功:返回 onSuccess 失败:返回 onFailed,原因详见 错误码 |
void fetchUserRole(@NonNull ChatRoom chatRoom,
@NonNull User user,
HMR.CompletionArg<String> completion);
获取用户在目标聊天室的角色信息。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
user | 指定查询的聊天室用户,详见 User |
completion | 结果回调(CompletionArg) 成功:返回 onSuccess 失败:返回 onFailed,原因详见 错误码 |
单个用户调用频率限制:10次/5s。
void fetchRoomUsersByRole(@NonNull ChatRoom chatRoom,
String role,
HMR.CompletionArg<Map<String, List<User>>> completion);
根据用户角色获取用户列表。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
role | 用户角色null 表示查询所有当前在房间内的所有带角色的用户列表 |
completion | 结果回调(CompletionArg) 成功:返回 onSuccess 失败:返回 onFailed,原因详见 错误码 |
void fetchBasicInfo(@NonNull ChatRoom chatRoom,
@NonNull CompletionArg<ChatRoomInfo> completion);
获取聊天室基本属性信息。
注意:
- 获取聊天室信息可以获取到对应聊天室的名称、描述、公告以及对应的扩展字段信息。
- 获取聊天室信息无需进入聊天室也可以获取。
- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
completion | 结果回调(CompletionArg) 成功:返回 onSuccess 失败:返回 onFailed,原因详见 错误码 |
void fetchRoomBasicAttributes(@NonNull ChatRoom chatRoom,
Set<String> keys,
HMR.CompletionArg<FetchRoomBasicAttributesResult> completion);
获取指定聊天室的基本属性信息。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
keys | 属性值,key-value键值对 key 值仅支持: Name-名称、Description-描述、Bulletin-公告 value 最大长度为8k |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
void fetchChatRoomInfo(@NonNull ChatRoom chatRoom,
@Nullable CompletionArg<Map<String, String>> completion);
获取聊天室全部属性信息
说明
该接口从
v2.14.0
开始已废弃删除,有相关需求请改用 fetchBasicInfo 、fetchRoomExtraAttributes
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
completion | 结果回调(CompletionArg) 成功:返回 onSuccess 和 对应的 聊天室信息 失败:返回 onFailed,原因详见 错误码 |
void fetchMemberCount(@NonNull ChatRoom chatRoom,
@NonNull CompletionArg<Integer> completion);
获取聊天室人数。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
void changeBasicInfo(@NonNull ChatRoom chatRoom,
@NonNull Map<ChatRoomInfo.BasicInfoType, String> propInfo,
@NonNull Completion completion);
变更聊天室基本属性信息
注意:
- 可以修改一个或多个属性,只需要在参数中指定需要修改的聊天室信息的键值对即可。
- 需要 Admin 或者 Owner 的角色。角色定义详见:Roles。
- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
propInfo | 修改的属性值,其中key值参见枚举详见:BasicInfoType |
completion | 结果回调(CompletionArg) 成功:返回 onSuccess 和 对应的 聊天室信息 失败:返回 onFailed,原因详见 错误码 |
void updateRoomBasicAttributes(@NonNull ChatRoom chatRoom,
@NonNull Map<String, String> attributes,
RoomBasicAttributesOptions options,
HMR.Completion completion);
更新聊天室基本信息。
调用该接口成功后会触发通知 onRoomBasicAttributesUpdated。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
attributes | 属性值,key-value键值对 key 值仅支持: Name-名称、Description-描述、Bulletin-公告 value 最大长度为8k |
options | 预留字段,详见 RoomBasicAttributesOptions |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
void addOrUpdateChatRoomInfo(@NonNull ChatRoom chatRoom,
@NonNull Map<String, String> infoMap,
@Nullable Completion completion);
更新指定聊天室的属性。
说明
该接口从
v2.14.0
开始已废弃删除,有相关需求请改用 setRoomExtraAttributes 、updateRoomExtraAttributes
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
infoMap | 修改的属性值,可自定义 |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
void setRoomExtraAttributes(@NonNull ChatRoom chatRoom,
@NonNull Map<String, String> attributes,
@Nullable ChatRoomAttributeOptions options,
@Nullable HMR.Completion completion);
设置房间扩展属性。
调用该接口会触发房间扩展属性回调 onRoomExtraAttributesSet。
参数 | 描述 |
---|---|
attributes | 扩展属性,由 key-value组成 key:单个属性 Key 最大32字节,不能为空 value:单个属性value最大8KB,可以为空 |
chatRoom | 聊天室标识符,详见 ChatRoom |
options | 预留参数,详见 ChatRoomAttributeOptions |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
Owner
和 Admin
用户有权限设置房间扩展属性,且操作者需要在该房间内。void updateRoomExtraAttributes(@NonNull ChatRoom chatRoom,
@NonNull Map<String, String> attributes,
@Nullable ChatRoomAttributeOptions options,
@Nullable HMR.Completion completion);
更新房间扩展属性。
当属性(key)不存在时,代表增加属性; 当属性(key)已经存在时,代表更新属性。调用该接口会触发onRoomExtraAttributesUpdated 回调。
参数 | 描述 |
---|---|
attributes | 扩展属性,由 key-value组成 key:单个属性 Key 最大32字节,不能为空 value:单个属性value最大8KB,可以为空 |
chatRoom | 房间标识符,详见 ChatRoom |
options | 预留参数 ChatRoomAttributeOptions |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
Owner
和 Admin
用户有权限更新房间扩展属性,且操作者需要在该房间内。void deleteRoomExtraAttributes(@NonNull ChatRoom chatRoom,
@NonNull Set<String> keys,
@Nullable ChatRoomAttributeOptions options,
@Nullable HMR.Completion completion);
删除指定房间扩展属性。
用户传入目标属性 key值集合,该接口仅删除key值集合所对应的属性,不能传入空key值集合,调用该接口会触发 onRoomExtraAttributesDeleted 回调。
参数 | 描述 |
---|---|
keys | 要删除的属性 key 集合,不能为空,单个 Key 最大为32字节 |
chatRoom | 聊天室标识符,详见 ChatRoom |
options | 预留参数,详见 ChatRoomAttributeOptions |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
Owner
和 Admin
用户有权限执行该操作。void clearRoomExtraAttributes(@NonNull ChatRoom chatRoom,
@Nullable ChatRoomAttributeOptions options,
@Nullable HMR.Completion completion);
清空房间扩展属性。
不需要传入任何key值或属性值,该接口会直接清空目标房聊天室的所有属性,调用该接口会触发 onRoomExtraAttributesCleared 回调。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
options | 预留参数 ChatRoomAttributeOptions |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
Owner
和 Admin
用户有权限执行该操作。void fetchRoomExtraAttributes(@NonNull ChatRoom chatRoom,
@Nullable Set<String> keys,
@Nullable HMR.CompletionArg<ChatRoomExtraAttribute> completion);
查询指定房间的扩展属性。
所有用户无论是否已加入房间均有权限执行该操作。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
keys | 要查询的属性 key 集合 默认为空,表示查询全量属性 单个属性 Key 最大32字节 |
completion | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
void fetchHistoryMessages(@NonNull ChatRoom chatRoom,
@NonNull FetchingParams params,
CompletionArg<FetchingResult> completion);
获取公屏历史消息。
注意事项:
- 历史消息存储时间限制一个月。
- 无进入聊天室限制,无权限角色限制,所有用户均可调用该接口。
- 单次查询结果最大支持100条,最少1条。
- 单个用户调用频率限制:10次/5s。
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符,详见 ChatRoom |
params | 消息拉取条件,具体参数详见:FetchingParams |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void muteMember(@NonNull ChatRoom chatRoom,
@NonNull User member,
@Nullable String reason,
@NonNull Completion completion);
禁言聊天室内的用户
注意:
- 业务可以根据对应的需要禁言某个用户,目前后台默认的禁言时间为三天,到期自动解禁。
- 禁言需要 Admin 或者 Owner 的角色, Owner 可以禁言聊天室内的所有人包括 Admin, 而 Admin 则只可以禁言普通用户。角色定义详见:Roles。
- 禁言的用户需要在聊天室内。
- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 成员所在的聊天室 |
member | 需要禁言的成员 |
reason | 禁言的原因 |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void unmuteMember(@NonNull ChatRoom chatRoom,
@NonNull User member,
@Nullable String reason,
@NonNull Completion completion);
解禁聊天室内的用户
注意:
- 解禁的用户需要在聊天室内
- 解除禁言需要 Admin 或者 Owner 的角色, Owner 可以解禁聊天室内的所有人包括 Admin, 而 Admin 则只可以解禁普通用户。角色定义详见:Roles。
- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 成员所在的聊天室 |
member | 需要解禁言的成员 |
reason | 解禁言的原因 |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void fetchMutedUsers(@NonNull ChatRoom chatRoom,
@NonNull CompletionArg<Set<User>> completion);
获取聊天室内的禁言列表
注意:
- 获取的禁言列表里面的有些用户可能不存在聊天室内
- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 需要获取禁言列表的聊天室 |
completion | 结果对象 CompletionArg - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void isMuted(@NonNull ChatRoom chatRoom,
@NonNull User member,
@NonNull CompletionArg<Boolean> completion);
判别某一个用户是否在聊天室的禁言列表里
注意:
单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 需要判别的聊天室 |
member | 需要判别的用户 |
completion | 结果对象 CompletionArg - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void setUserInfo(@NonNull final ChatRoom chatRoom,
@NonNull final Map<String, String> infoMap,
@Nullable final Completion completion);
设置自己的用户信息
注意:
- 容量上限:
设置用户属性,最大支持属性个数:32个
单个用户属性的最大值:8k- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 成员所在的聊天室 |
infoMap | 待设置用户信息 |
completion | 结果对象 CompletionArg - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void deleteUserInfoByKeys(@NonNull ChatRoom chatRoom,
@NonNull Set<String> keys,
@Nullable Completion completion);
删除自己的用户信息
注意:
- 容量上限:
用户属性,最大支持属性个数:32个
单个用户属性的最大值:8k- 单个用户调用频率限制:10次/5s
参数 | 描述 |
---|---|
chatRoom | 成员所在的聊天室 |
keys | 待删除信息的key |
completion | 结果对象 Completion - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void addOrUpdateUserInfo(@NonNull ChatRoom chatRoom,
@NonNull Map<String, String> infoMap,
@Nullable Completion completion);
添加或更新指定用户信息。
注意:
属性信息存在则更新;不存在则添加。
参数 | 描述 |
---|---|
chatRoom | 成员所在的聊天室 |
infoMap | 属性信息 |
completion | 设置信息返回的回调,可以根据错误码进行处理 |
void fetchUserInfo(@NonNull ChatRoom chatRoom,
@NonNull User member,
@NonNull CompletionArg<Map<String, String>> completion
获取指定用户的用户信息。
参数 | 描述 |
---|---|
chatRoom | 成员所在的聊天室 |
member | 目标用户 |
completion | 结果对象 CompletionArg - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void batchFetchUserInfos(@NonNull ChatRoom chatRoom,
@NonNull Set<User> users,
@Nullable CompletionArg<Map<User, Map<String, String>>> completion);
批量获取指定用户的用户信息
参数 | 描述 |
---|---|
chatRoom | 成员所在的聊天室 |
users | 目标用户(批量) |
completion | 设置信息返回的回调,可以根据错误码进行处理 |
void fetchOnlineUserInfoList(@NonNull ChatRoom chatRoom,
@NonNull CompletionArg<Map<User, Map<String, String>>> completion);
获取聊天室已设置用户信息的在线用户列表
注意:
获取的人员列表最多返回100个,超过100个的随机返回100个。
参数 | 描述 |
---|---|
chatRoom | 待查询聊天室 |
completion | 结果对象 CompletionArg - 方法调用成功:本地用户收到回调 onSuccess。 - 方法调用失败:本地用户收到回调 onFailed。错误码详见 Code |
void addListener(@NonNull final ChatRoomListener listener);
添加聊天室回调监听器
参数 | 描述 |
---|---|
listener | 监听器对象,详见 ChatRoomListener |
void removeListener(@NonNull final ChatRoomListener listener);
移除聊天室回调监听器
参数 | 描述 |
---|---|
listener | 监听器对象,详见 ChatRoomListener |
void addMemberListener(@NonNull final MemberListener listener);
添加聊天室用户回调监听器
参数 | 描述 |
---|---|
listener | 监听器对象,详见 MemberListener |
void removeMemberListener(@NonNull final MemberListener listener);
移除聊天室用户的回调监听器
参数 | 描述 |
---|---|
listener | 监听器对象,详见 MemberListener |
public static ChannelService getInstance()
获取 ChannelService 实例
public abstract void joinChannel(@NonNull ChannelId channelId,
ChannelJoiningOptions options,
HMR.Completion completion)
加入消息通道 (Channel)。
调用该接口加入指定的底层消息通道,并由 Hummer系统后台直接创建。
参数 | 描述 |
---|---|
channelId | 消息通道ID ,由 [A,Z]、[a,z]、[0,9]、-、_ 组成,最大长度为 64 字节,详见 ChannelId |
options | 预留参数,详见 ChannelJoiningOptions |
completionHandler | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
Channel
操作都需要进入 Channel
之后才能正常的操作,如发送通道内广播消息以及接收通道内广播都要进入Channel
之后才能正常处理。public abstract void leaveChannel(@NonNull ChannelId channelId,
HMR.Completion completion);
退出消息通道 (Channel)。
离开通道后,将不能继续接收通道内的广播消息。
参数 | 描述 |
---|---|
channelId | 消息通道ID ,由 [A,Z]、[a,z]、[0,9]、-、_ 组成,最大长度为 64 字节,详见 ChannelId |
completionHandler | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
public abstract void sendP2CMessage(@NonNull ChannelId channelId,
@NonNull BaseMessage message,
P2CMessageOptions options,
HMR.Completion completion);
在通道( Channel )内发送广播消息。
在已加入的 Channel 内发送广播消息,发送后会触发 onP2CTextMessageReceived 消息回调,通道内用户均能通过监听 onP2CTextMessageReceived 接收到该消息。
参数 | 描述 |
---|---|
message | 消息对象,仅支持 TextMessage(文本消息对象,由 createTextMessage 创建 ) |
channelId | 消息通道ID ,由 [A,Z]、[a,z]、[0,9]、-、_ 组成,最大长度为 64 字节,详见 ChannelId |
options | 预留参数,可不填,详见 P2CMessageOptions |
completionHandler | 结果回调(Completion):0-成功,其他-失败,详见 错误码 |
void send(@NonNull Message message, @Nullable Completion completion);
发送公屏(仅支持文本)、单播、广播消息,消息内容详情见 Content。
说明:
- 业务可以通过自己构造消息体,并且填写对应的消息内容将该消息发送出去。
- 该接口也可以在消息发送失败的情况下进行重发消息。
- 单个用户调用频率限制:
发送公屏消息:10次/5s
发送自定义单播消息:50次/5s
发送自定义广播消息:50次/5s- 单条消息最大长度:
单播:2k
广播:2k
公屏:1200字节- 消息的拓展字段
kvExtra
最多32个- 对于单播、广播],如果message的
appExtra
填了值,会默认加入到kvExtra
中作为一个单独的key-value,即自定义的kvExtra
的最大个数变为31个
参数 | 描述 |
---|---|
message | 消息实例,详见 Message |
completion | 发送操作的完成回调 |
completion
回调只处理了最终完成回调,但消息发送过程中可能会有多个阶段/状态。可以通过监听MessageListener来得到相应的回调。
void addMessageListener(@Nullable Identifiable target, @NonNull MessageListener listener);
添加一个消息收发监听器
参数 | 描述 |
---|---|
target | 需要监听消息收发的消息对象,详见 Identifiable |
listener | 需要增加的listener对象 |
void removeMessageListener(@Nullable Identifiable target, @NonNull MessageListener listener);
移除一个消息收发监听器
参数 | 描述 |
---|---|
target | 需要取消监听消息收发的消息对象,详见 Identifiable |
listener | 需要移除的listener对象 |