获取SDK当前状态,详见 HMRState。
SDK当前状态。
初始化 Hummer 实例并初始化。
注意:
HMR_API void HMRInit(uint64_t appId);
参数 | 描述 |
---|---|
appId | 用于标识具体业务,详见 获取AppID |
登录SDK。
HMR_API void HMROpen(uint64_t uid, const char *region, const char *token, HMRCompletion completion);
参数 | 描述 |
---|---|
uid | 用户id, uid 不能为0 |
region | 需要连接服务器所处的环境参数,详情咨询相关SDK开发人员 |
token | 用于服务初始化时所需的用户凭证 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
登出SDK。
HMR_API void HMRClose();
刷新用户凭证。
注意:
该接口已被弃用,请改用 HMRRefreshTokenWithCompletion。
HMR_API void HMRRefreshToken(const char *token);
参数 | 描述 |
---|---|
token | 待刷新用户凭证 |
刷新用户凭证。
注意:
该接口已被弃用,请改用 HMRRefreshToken1。
HMR_API void HMRRefreshTokenWithCompletion(const char *token, HMRCompletion completion);
参数 | 描述 |
---|---|
token | 待刷新用户凭证 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
HMR_API void HMRRefreshToken1(const char *token, HMRCompletion completion);
刷新Token。
Token具有时效性,当收到 onTokenWillExpire(Token即将过期)或 onPreviousTokenExpiredCallback(Token过期)回调时,客户端需重新调用该API刷新Token;否则Token过期后,SDK与服务器会断开连接,导致服务中断。
参数 | 描述 |
---|---|
token | 新的Token |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
设置 SDK 日志输出托管回调
注意:
- 业务可以通过该方法进行设置对应的 Logger,那么 SDK 则会将日志的输出和打印交给业务来处理。
- 业务则需要保证日志的上报等,用于后期出现问题时可以查到具体的信息。
HMR_API void HMRSetLogger(HMRLogFunction logFunction);
参数 | 描述 |
---|---|
logFunction | SDK 日志输出回调,详见 HMRLogFunction |
添加 SDK 状态变更监听器。
HMR_API void HMRAddStateListener(HMRStateListener *listener);
参数 | 描述 |
---|---|
listener | 待添加监听器,详见 HMRStateListener |
移除 SDK 状态变更监听器。
HMR_API void HMRRemoveStateListener(HMRStateListener *listener);
参数 | 描述 |
---|---|
listener | 待移除监听器,详见 HMRStateListener |
HMR_API void HMRAddHummerListener(HMRHummerListener *listener);
添加 HMRHummerListener 监听器用于监听 Core 类接口的事件、获取相关数据。例如Token即将过期、SDK与服务器连接状态等。。
参数 | 描述 |
---|---|
listener | 待添加监听器,详见 HMRHummerListener |
HMR_API void HMRRemoveHummerListener(HMRStateListener *listener);
移除 HMRHummerListener 监听器。
参数 | 描述 |
---|---|
listener | 待移除监听器,详见 HMRHummerListener |
获取 SDK 版本信息。
HMR_API const char *HMRGetVersion();
SDK版本信息。
获取Hummer当前连接状态
HMR_API HMRConnectionState HMRGetConnectionState();
Hummer当前连接状态
HMR_API bool HMRSetLoggerFilePath(const char* path);
自定义日志存储路径。
参数 | 描述 |
---|---|
path | 日志存储路径(存在且可写),默认路径为: 当前exe所在目录 |
HMR_API bool HMRSetLogLevel(HMRLogLevel level);
设置SDK日志输出优先级别,默认为 Verbose。
日志级别分为6个级别,由低到高为:Verbose < Debug < Info < Warning < Error < Release。SDK会输出当前以及高于当前设置的日志级别的日志。例如,设置的日志级别为 Info,则优先级高于或等于 Info 级别(如:Warning、Error、Release)的日志将被输出,小于该级别的将不会被输出。
参数 | 描述 |
---|---|
logLevel | 日志等级,详见 HMRLoggerLevel |
HMR_API bool HMRSetLogCallback(HMRLogWithLevel callback);
注册日志输出回调来输出日志。
业务可以通过该方法进行设置对应的callback,那么 SDK 则会将日志的输出和打印交给业务来处理,业务需要保证日志的上报等,用于后期出现问题时可以查到具体的信息。
参数 | 描述 |
---|---|
callback | SDK 日志输出回调,日志级别详见 HMRLoggerLevel |
HMR_API bool HMRUploadLogsManually(const char* remark);
上传日志至服务治理平台的日志管理后台。
参数 | 描述 |
---|---|
remark | 上报时的备注信息 |
创建文本消息
HMR_API HMRBaseMessage* HMRCreateTextMessage(const char* content,uint32_t size,HMRKvArray* extra)
参数 | 描述 |
---|---|
content | 消息内容 |
size | 消息长度 |
extra | 消息扩展字段 |
通用消息结构,详见 HMRBaseMessage |
创建文本消息
HMR_API void HMRReleaseTextMessage(HMRBaseMessage* msg)
参数 | 描述 |
---|---|
HMRBaseMessage | 通用消息结构,详见 HMRBaseMessage |
HMR_API void HMRSendP2PMessage(uint64_t userId,HMRBaseMessage *message,HMRP2PMessageOptions *options,HMRCompletion completion);
发送点对点消息(P2P)。
用户登录 Hummer
系统后,可通过该接口给其他用户发送点对点文本消息,发送后会触发 onP2PMessageReceived 消息回调,消息目标用户可通过监听 onP2PMessageReceived 接收该文本消息。
参数 | 描述 |
---|---|
userId | 该条消息的接收者 |
message | 消息对象,只支持 HMRTextMessage,且需使用该类提供的消息构造接口直接构建消息对象 |
options | 发送消息所需要的配置信息,目前可配置该消息是否支持离线功能,业务可通过设置参数 options 的 isOffline 字段 ,控制该次发送的消息是否开启离线功能,该功能默认关闭。详见 HMRP2PMessageOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
Hummer
系统即可调用该接口,操作者和接收者均无任何是否在通道内/房间内限制。180次/3秒
。200
条离线消息,最长保存七天。当保存的离线消息超出限制时,最新消息将覆盖最老消息。查询用户在线状态。
HMR_API void HMRFetchUserOnlineStatus(HMRIdArray *uids,HMRCompletion completion);
参数 | 描述 |
---|---|
infos | 用户信息列表,最大个数为32,详见 HMRIdArray |
completion | 结果回调(HMRCompletion):0-成功,并返回用户在线状态(HMRUserOnlineStatus)、其他-失败,详见 错误码 |
添加用户监听器
HMR_API void HMRAddPeerListener(HMRPeerListener* listener);
参数 | 描述 |
---|---|
listener | 需要添加的监听器,详见 HMRPeerListener |
添加用户监听器
HMR_API void HMRRemovePeerListener(HMRPeerListener* listener);
参数 | 描述 |
---|---|
listener | 需要移除的监听器,详见 HMRPeerListener |
创建聊天室
注意:
- 由于聊天室模块的所需的聊天室必须要通过创建才能使用,故需要对应的创建聊天室接口。
- 在创建聊天室完成后,服务器会返回对应的聊天室标识,用于后续在使用聊天室时的标识。
- 同时在创建聊天室时需要提供对应的聊天室信息,如名称、描述、公告以及扩展信息等。
- 默认容量上限:
一个AppId创建聊天室个数:100w个
单个聊天室对应人数:10w个- 单个用户调用频率限制:10次/5s
HMR_API void HMRCreateChatRoom(HMRCompletion completion);
参数 | 描述 |
---|---|
completion | 结果回调(HMRCompletion):0-成功,并返回对应的 聊天室标识、其他-失败,详见 错误码 |
创建聊天室,并配置聊天室信息。
注意:
- 由于聊天室模块的所需的聊天室必须要通过创建才能使用,故需要对应的创建聊天室接口。
- 在创建聊天室完成后,服务器会返回对应的聊天室标识,用于后续在使用聊天室时的标识。
HMR_API void HMRCreateChatRoomWithInfo(HMRKvArray *info, HMRCompletion completion);
参数 | 描述 |
---|---|
info | 聊天室信息对象,包含名称、描述、公告以及扩展信息,详见 HMRChatRoomBasicInfoType |
completion | 结果回调(HMRCompletion):0-成功,并返回对应的 聊天室标识、其他-失败,详见 错误码 |
加入聊天室。
注意:
- 对应聊天室操作都需要进入聊天室之后才能正常的操作,如发公屏、发信令以及接受信令都要进入聊天室之后才能正常处理。
- 加入聊天室会涉及多端互踢的逻辑,相关互踢逻辑请咨询后台配置。
- 单个用户调用频率限制:10次/5s。
HMR_API void HMRJoinChatRoom(uint64_t roomId, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
加入聊天室,并检测当前用户是否重复登录。
注意:
- 由于目前聊天室只支持单端以及多端进入聊天室,对应具体的配置可以找后台的相关同学进行对应的配置。对于单端进入聊天室则第二个进入聊天室的用户会将第一个进入聊天室的用户踢出聊天室。在加入聊天室之后,希望离开聊天室可以调用 HMRLeaveChatRoom 离开聊天室的接口。
- 并且需要操作都需要进入聊天室之后才能正常的操作,如发公屏、发信令以及接受信令都要进入聊天室之后才能正常处理。
- 单个用户调用频率限制:10次/5s。
HMR_API void HMRJoinChatRoomWithMultiCheck(uint64_t roomId, bool isCheckMultiJoin, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
isCheckMultiJoin | 是否检测重复登陆 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
加入聊天室,并指定扩展信息。
注意:
- 由于目前聊天室只支持单端以及多端进入聊天室,对应具体的配置可以找后台的相关同学进行对应的配置。对于单端进入聊天室则第二个进入聊天室的用户会将第一个进入聊天室的用户踢出聊天室。在加入聊天室之后,希望离开聊天室可以调用 HMRLeaveChatRoom 离开聊天室的接口。
- 并且需要操作都需要进入聊天室之后才能正常的操作,如发公屏、发信令以及接受信令都要进入聊天室之后才能正常处理。
- 单个用户调用频率限制:10次/5s
HMR_API void HMRJoinChatRoomWithConfigs(uint64_t roomId, const HMRKvItem *joinProps, int numerOfProperty, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
joinProps | 扩展字段,用于业务扩展,SDK 只负责透传,详见 HMRKvItem |
numerOfProperty | 扩展字段数量 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
退出聊天室。
注意:
在进入聊天室后处理完所有需要处理的逻辑后,可以通过离开聊天室来结束跟聊天室之间的交互,同时也会停止监听聊天室的公屏、信令消息和对应的回调通知。
HMR_API void HMRLeaveChatRoom(uint64_t roomId, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
获取聊天室基本属性信息。
注意:
该方法已弃用,请改用 HMRChatRoomFetchRoomInfo。
HMR_API void HMRChatRoomFetchBasicInfo(uint64_t roomId, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
completion | 结果回调(HMRCompletion):0-成功,并返回聊天室属性(HMRKvArray),其他-失败,详见 错误码 |
获取聊天室公屏历史消息。
注意:
- 历史消息存储时间限制一个月。
- 无进入聊天室限制,无权限角色限制,所有用户均可调用该接口。
- 单次查询结果最大支持100条,最少1条。
- 单个用户调用频率限制:10次/5s。
HMR_API void HMRFetchHistoryMessage(uint64_t roomId,HMRMessageFetchingParams params,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
params | 消息拉取条件,详见 HMRMessageFetchingParams |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
变更聊天室基本属性信息.
注意:
- 该方法已弃用,请改用 HMRChatRoomAddOrUpdateRoomInfo。
- 可以修改一个或多个属性,只需要在参数中指定需要修改的聊天室信息的键值对即可。
- 需要
房主
或者管理员
的角色。- 单个用户调用频率限制:10次/5s
HMR_API void HMRChatRoomChangeBasicInfo(uint64_t roomId, HMRKvArray *info, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
info | 修改的属性值,详见 HMRKvArray,其中key值参见枚举详见:HMRChatRoomBasicInfoType |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
设置房间扩展属性。
HMR_API void HMRSetRoomExtraAttributes(uint32_t roomId,HMRKvArray *attributes,HMRRoomAttributeOptions *options,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
attributes | 扩展属性,由 key-value组成,详见 HMRKvArray key:单个属性 Key 最大32字节,不能为空 value:单个属性value最大8KB,可以为空 |
options | 预留参数,详见 HMRRoomAttributeOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
Owner
和 Admin
用户有权限设置房间扩展属性,且操作者需要在该房间内。更新房间扩展属性.
HMR_API void HMRUpdateRoomExtraAttributes(uint32_t roomId,HMRKvArray *attributes,HMRRoomAttributeOptions *options,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
attributes | 修改的属性值,详见 HMRKvArray |
options | 预留参数 HMRRoomAttributeOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
注意事项
- 每个属性
Key
最大32字节- 每个属性值最大8KB
- 每个聊天室最多有32条属性
- 设置聊天室属性的时候
Key
不能为空(返回错误),Value
可以为空Owner
和Admin
权限的用户才可以执行设置房间扩展属性操作- 操作者需要在该聊天室聊天室内才可以执行设置房间扩展属性操作
删除指定房间扩展属性。
HMR_API void HMRDeleteRoomExtraAttributes(uint32_t roomId,HMRStrArray *keys,HMRRoomAttributeOptions *options,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
keys | 修改的属性数组,要删除的属性 key 集合,不能为空,单个 Key 最大为32字节详见 HMRStrArray |
options | 预留参数,详见 HMRRoomAttributeOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
Owner
和 Admin
用户有权限删除房间扩展属性,且操作者需要在该房间内。清空房间扩展属性。
不需要传入任何key值或属性值,该接口会直接清空目标房聊天室的所有属性,调用该接口会触发 onRoomExtraAttributesCleared 回调。
HMR_API void HMRClearRoomExtraAttributes(uint32_t roomId,HMRRoomAttributeOptions *options,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
options | 预留参数,详见 HMRRoomAttributeOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
查询指定房间的扩展属性。
所有用户无论是否已加入房间均有权限执行该操作。
HMR_API void HMRFetchRoomExtraAttributes(uint32_t roomId,HMRStrArray *keys,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
keys | 属性数组,详见 HMRStrArray |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
把聊天室内用户踢出聊天室。
HMR_API void HMRKickUser(uint32_t roomId,uint64_t userId, HMRKvArray *extraInfo,HMRKickUserOptions options,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
userId | 被踢出聊天室的成员 |
extraInfo | 踢人的额外信息。目前支持的Key主要是两个,一个是 {@link EKickInfo#Reason}, 用于携带踢人原因的 Key, 其 Key 对应的 Value 只需填写对应的踢人原因的字符串即可;另一个是 {@link EKickInfo#Time} 用于携带限制时长的 Key, 其 Key 对应的 Value 只需要填写踢人限制时长的秒数转换成字符串即可, 这些字段都是透传字段,服务器不做处理 |
options | 预留参数,详见 HMRKickUserOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
HMR_API void HMRUpdateRoomBasicAttributes(uint32_t roomId,HMRKvArray *attributes,RoomBasicAttributesOptions *options,HMRCompletion completion);
更新房间基础属性。
调用该接口成功后会触发通知 onRoomBasicAttributesUpdated。
注意事项
- 操作者需要在该聊天室房间内才可以执行更新房间基础属性操作
owner
和admin
权限的用户才可以执行更新房间基础属性操作- 单个用户调用频率限制:10次/5s
- value 最大长度:8k
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
attributes | 属性值,key-value 键值对,详见 HMRKvArray key 值仅支持: Name-名称、Description-描述、Bulletin-公告 value 最大长度为8k |
options | 预留参数,详见 RoomBasicAttributesOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
查询指定房间的指定属性。
HMR_API void HMRFetchRoomBasicAttributes(uint32_t roomId, HMRStrArray* keyArr, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
keys | 属性数组,详见 HMRStrArray |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
HMR_API void HMRSetUserRole(uint32_t roomId,uint64_t userId,const char* role,uint32_t size, HMRRoleOptions options,HMRCompletion completion);
设置聊天室用户角色。
角色属性在整个聊天室生命周期内固定存在,即使用户退出了该聊天室,该用户的角色属性仍然存在,除非该聊天室销毁。调用成功后会触发设置聊天室用户角色通知 onUserRoleSet。
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
userId | 需要被设置角色的用户 |
role | 具体角色 |
size | 字符长度 |
options | 可选参数,预留,详见 HMRRoleOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
HMR_API void HMRDeleteUserRole(uint32_t roomId,uint64_t userId,HMRRoleOptions options,HMRCompletion completion);
删除用户角色。
调用成功会触发聊天室用户角色被删通知 onUserRoleDeleted。
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
userId | 需要被删除角色的用户 |
options | 可选参数,预留,详见 HMRRoleOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
查询用户角色。
HMR_API void HMRFetchUserRole(uint32_t roomId,uint64_t userId,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
userId | 需要查询的用户 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
查询角色用户列表。
HMR_API void HMRFetchRoleUserList(uint32_t roomId,const char *role,uint32_t size,HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室标识符 |
role | 具体角色 |
size | 字符长度 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
获取聊天室在线用户列表
注意:
- 由于一些场景下,一个聊天室的内的用户可能有十几万,故聊天室 SDK 提供了对应的按需分页获取用户的结果。同时也会按照一定的默认规则来进行排序对应的用户列表。
- 获取用户列表的接口,可以在不进入聊天室时也可以获取。
- 单个用户调用频率限制:10次/5s。
HMR_API void HMRChatRoomFetchMembers(uint64_t roomId, int32_t num, int32_t offset, HMRCompletion completion);
参数 | 描述 |
---|---|
chatRoom | 聊天室标识符 |
offset | 第几页 (第一页从0开始) |
num | 设置每页的返回成员数(建议不超过200) |
completion | 结果回调(HMRCompletion):0-成功,并返回在线用户列表(HMRIdArray)、其他-失败,详见 错误码 |
设置自己的用户信息
注意:
- 容量上限:
设置用户属性,最大支持属性个数:32个
单个用户属性的最大值:8k- 单个用户调用频率限制:10次/5s
HMR_API void HMRChatRoomSetUserInfo(uint64_t roomId, HMRKvArray *infos, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 成员所在的聊天室 |
infos | 用户信息,详见 HMRIdArray,最大个数为32个 |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
获取聊天室已设置用户信息的在线用户列表
注意:
获取的人员列表最多返回100个,超过100个的随机返回100个
HMR_API void HMRChatRoomFetchOnLineUserInfoList(uint64_t roomId, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 待查询聊天室 |
completion | 结果回调(HMRCompletion):0-成功,并返回用户信息列表(HMRChatRoomOnLineUserInfoList)、其他-失败 |
添加聊天室回调监听器。
HMR_API void HMRAddChatRoomListener(HMRChatRoomListener *listener);
参数 | 描述 |
---|---|
listener | 监听器对象,详见 HMRChatRoomListener |
移除聊天室回调监听器。
HMR_API void HMRRemoveChatRoomListener(HMRChatRoomListener *listener);
参数 | 描述 |
---|---|
listener | 监听器对象,详见 HMRChatRoomListener |
添加聊天室用户回调监听器。
HMR_API void HMRAddMemberListener(HMRChatRoomMemberListener *listener);
参数 | 描述 |
---|---|
listener | 监听器对象. 详见 HMRChatRoomMemberListener |
移除聊天室用户的回调监听器。
HMR_API void HMRRemoveMemberListener(HMRChatRoomMemberListener *listener);
参数 | 描述 |
---|---|
listener | 监听器对象,详见 HMRChatRoomMemberListener |
获取聊天室服务地区代号。
HMR_API const char* HMRGetChatRoomRegion(HMRChatRoomMemberListener *listener);
设置聊天室服务地区代号(支持的地区及代号请咨询开发人员),默认为中国"cn"。
HMR_API void HMRSetChatRoomRegion(const char *region);
参数 | 描述 |
---|---|
region | 聊天室区域: 中国 - cn 印尼 - ap_southeast 美国 - us 巴西 - sa_east 印度 - ap_south |
构造一个聊天室Identity对象。
HMR_API HMRIdentity HMRMakeChatRoomIdentity(uint64_t roomId);
参数 | 描述 |
---|---|
roomId | 聊天室标识 |
id 为 roomId的聊天室Identity对象
从聊天室Identity对象中抽取聊天室ID。
HMR_API HMRCode HMRExtractChatRoomId(HMRIdentity identity, uint64_t *roomId);
参数 | 描述 |
---|---|
identity | 聊天室标识,详见 HMRIdentity |
roomId | 解析的聊天室ID |
操作结果,详见 HMRCode
判断一个identity对象是否表示一个聊天室。
HMR_API bool HMRIsChatRoom(HMRIdentity identity);
参数 | 描述 |
---|---|
identity | 聊天室标识,详见 HMRIdentity |
是否为聊天室标识
构造一个聊天室用户Identity对象。
HMR_API HMRIdentity HMRMakeChatRoomUser(uint64_t roomId, uint64_t userId);
参数 | 描述 |
---|---|
roomId | 聊天室标识 |
userId | 用户标识 |
id 为 userId的聊天室用户Identity对象
从聊天室用户Identity对象中抽取用户ID。
HMR_API HMRCode HMRExtractChatRoomUser(HMRIdentity identity, uint64_t *roomId, uint64_t *userId);
参数 | 描述 |
---|---|
identity | 聊天室标识,详见 HMRIdentity |
roomId | 解析的聊天室ID |
userId | 解析的用户id |
操作结果,详见 HMRCode。
获取聊天室所有属性。
HMR_API HMRCode HMRChatRoomFetchRoomInfo(uint64_t roomId, HMRCompletion completion);
说明
该接口从
v1.8.0
开始已废弃删除,有相关需求请改用 HMRFetchRoomExtraAttributes
参数 | 描述 |
---|---|
roomId | 聊天室ID |
completion | 完成后的回调,业务可以根据对应判断结果来做不同的业务处理,详见 HMRCompletion |
新增或更新聊天室的属性。
HMR_API HMRCode HMRChatRoomAddOrUpdateRoomInfo(uint64_t roomId, HMRKvArray *info, HMRCompletion completion);
说明
该接口从
v1.8.0
开始已废弃删除,有相关需求请改用 HMRSetRoomExtraAttributes或HMRUpdateRoomExtraAttributes
参数 | 描述 |
---|---|
roomId | 聊天室ID |
info | 聊天室属性键值对,详见 HMRKvArray |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
删除自己的用户属性。
HMR_API HMRCode HMRChatRoomDeleteUserInfo(uint64_t roomId, HMRStrArray *keys, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室id |
keys | 待删除用户属性key数组,详见 HMRKvArray |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
批量获取聊天室指定用户属性列表。
HMR_API HMRCode HMRChatRoomBatchFetchUserInfos(uint64_t roomId, HMRStrArray *keys, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室id |
keys | 待删除用户属性key数组,详见 HMRKvArray |
completion | 完成后的回调,业务可以根据对应判断结果来做不同的业务处理,详见 HMRCompletion |
新增或更新聊天室用户的属性。
HMR_API HMRCode HMRChatRoomAddOrUpdateUserInfo(uint64_t roomId, HMRKvArray *info, HMRCompletion completion);
参数 | 描述 |
---|---|
roomId | 聊天室ID |
info | 用户信息,详见 HMRKvArray |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
判断一个identity对象是否表示一个聊天室用户。
HMR_API bool HMRIsChatRoomUser(HMRIdentity identity);
参数 | 描述 |
---|---|
identity | 聊天室标识,详见 HMRIdentity |
是否为聊天室用户标识。
发送消息接口:支持发送公屏消息(只支持文本消息)、单播、广播
说明:
- 业务可以通过自己构造消息体,并且填写对应的消息内容将该消息发送出去。
- 该接口也可以在消息发送失败的情况下进行重发消息。
- 单个用户调用频率限制:
发送公屏消息:10次/5s
发送自定义单播消息:50次/5s
发送自定义广播消息:50次/5s- 单条消息最大长度:
单播:2k
广播:2k
公屏:1200字节
HMR_API void HMRSendMessasge(HMRMessage *message, HMRCompletion completion);
参数 | 描述 |
---|---|
message | 消息实例,详见 HMRMessage |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
注意事项
completion
回调只处理了最终完成回调,消息发送过程中可能会有多个阶段/状态。可以通过监听HMRMessageListener 来得到相应的回调。
添加一个消息收发监听器。
HMR_API void HMRAddMessageListener(HMRMessageListener *listener);
参数 | 描述 |
---|---|
listener | 欲增加的listener对象,如果此前该listener已经添加,则addListener相当于空操作,详见 HMRMessageListener |
移除一个消息收发监听器
HMR_API void HMRRemoveMessageListener(HMRMessageListener *listener);
参数 | 描述 |
---|---|
listener | 欲移除的listener对象,如果该listener不存在,则什么都不会发生,详见 HMRMessageListener |
创建一条消息
HMR_API HMRMessage *HMRCreateMessage(HMRIdentity receiver, HMRMessageContent content, HMRMessageExtra extra);
参数 | 描述 |
---|---|
receiver | 消息接收者,详见 HMRIdentity |
content | 消息内容,详见 HMRMessageContent |
extra | 消息扩展内容,详见 HMRMessageExtra |
消息实体,详见 HMRMessage。
持有一条消息的引用
HMR_API void HMRRetainMessage(HMRMessage *message);
参数 | 描述 |
---|---|
message | 待持有消息实例,详见 HMRMessage |
释放一条消息的引用。
HMR_API void HMRReleaseMessage(HMRMessage *message);
参数 | 描述 |
---|---|
message | 待持有消息实例,详见 HMRMessage |
构造消息扩展内容
HMR_API HMRMessageExtra HMRMakeMessageExtra(const char *extra, int32_t length);
参数 | 描述 |
---|---|
extra | 扩展内容 |
length | 扩展内容长度 |
消息扩展内容实例,详见 HMRMessageExtra。
判断消息是否为失败状态。
HMR_API bool HMRIsMessageFailed(HMRMessage *message);
参数 | 描述 |
---|---|
message | 消息实例,详见 HMRMessage |
根据消息对象获取其对应的会话目标。
HMR_API HMRIdentity HMRGetConversationTarget(HMRMessage *message);
参数 | 描述 |
---|---|
message | 消息实例,详见 HMRMessage |
目标实例,详见 HMRIdentity。
添加通道监听器
HMR_API void HMRAddChannelListener(HMRChannelListener* listener);
参数 | 描述 |
---|---|
listener | 需要添加的监听函数,详见 HMRChannelListener |
移除通道监听器
HMR_API void HMRRemoveChannelListener(HMRChannelListener* listener);
参数 | 描述 |
---|---|
listener | 需要添加的监听器,详见 HMRChannelListener |
HMR_API void HMRSendP2CMessage(HMRChannelId channelId,HMRBaseMessage* message,HMRP2CMessageOptions* options, HMRCompletion completion);
在通道( Channel )内发送广播消息。
在已加入的 Channel 内发送广播消息,发送后会触发 onP2CMessageReceived 消息回调,通道内用户均能通过监听 onP2CMessageReceived 接收到该消息。
参数 | 描述 |
---|---|
channelId | 通道ID,由 [A,Z]、[a,z]、[0,9]、-、_ 组成,最大长度为 64 字节,详见 HMRChannelId |
message | 需要发送的消息对象,只支持 HMRTextMessage,且注意需使用该类提供的消息构造接口直接构建消息对象 |
options | 发送消息所需要的配置信息,目前可配置该消息是否支持离线功能,详见 HMRP2CMEssageOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
HMR_API void HMRJoinChannel(HMRChannelId channelId,HMRChannelJoinOptions* options,HMRCompletion completion);
加入通道。
调用该接口加入指定的底层消息通道,并由 Hummer系统后台直接创建。
参数 | 描述 |
---|---|
channelId | 通道ID,由 [A,Z]、[a,z]、[0,9]、-、_ 组成,最大长度为 64 字节,详见 HMRChannelId |
options | 发送消息所需要的配置信息,详见 HMRChannelJoinOptions |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |
Channel
操作都需要进入 Channel
之后才能正常的操作,如发送通道内广播消息以及接收通道内广播都要进入Channel
之后才能正常处理。退出消息通道 (Channel)。
离开通道后,将不能继续接收通道内的广播消息。
HMR_API void HMRLeaveChannel(HMRChannelId channelId,HMRCompletion completion);
参数 | 描述 |
---|---|
channelId | 通道ID,由 [A,Z]、[a,z]、[0,9]、-、_ 组成,最大长度为 64 字节,详见 HMRChannelId |
completion | 结果回调(HMRCompletion):0-成功,其他-失败,详见 错误码 |