typedef void(*HMRStateCallback)(void *context, bool isInitial, HMRState oldState, HMRState newState);
Hummer SDK 状态变更回调
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
isInitial | 请求HMRAddStateListener时会立即触发一次回调,该次回调的isInitial值为true,后续收到实际变更时,其值为false |
oldState | 变更前状态,详见 HMRState |
newState | 当前状态 |
typedef void(*HMRTokenInvalidCallback)(void *context, HMRTokenInvalidCode code, const char *desc, int descsize);
废弃
注意:
该方法已弃用,请改用 onPreviousTokenExpiredCallback。
鉴权 Token 无效通知
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
code | 无效类型,详见 HMRTokenInvalidCode |
desc | 无效原因 |
descsize | 无效原因字符串长度 |
typedef void(*HMRPreviousTokenExpired)(void *context);
鉴权 Token 无效通知
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
void(*onBasicInfoChanged)(void *context, uint32_t chatroom, uint64_t operatorUser, const HMRKvArray *info);
废弃
注意:
该方法已弃用,请改用 onRoomInfoAddedOrUpdated。
当聊天室基础信息发生变化时的回调
注意:
该方法通过调用 HMRChatRoomChangeBasicInfo 发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
operatorUser | 修改聊天室信息的管理员 |
info | 变化的键值对,其中key值参见枚举详见:HMRChatRoomBasicInfoType |
void(*onRoomInfoAddedOrUpdated)(void *context, uint32_t chatroom, uint64_t operatorUser, const HMRKvArray *info);
聊天室属性变更的回调通知
注意:
该方法通过调用 HMRChatRoomChangeBasicInfo 发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
operatorUser | 修改聊天室信息的管理员 |
info | 变化的键值对,其中key值参见枚举详见:HMRChatRoomBasicInfoType |
void(*onMemberJoined)(void *context, uint32_t chatroom, const uint64_t *users, uint16_t usersize);
当有成员进入聊天室时的回调
注意:
该方法通过调用 HMRJoinChatRoom 发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
users | 进入聊天室的成员 |
usersize | 成员数量 |
void(*onMemberLeaved)(void *context, uint32_t chatroom, const uint64_t *users, uint16_t usersize);
当有成员离开聊天室时的回调
注意:
- 该方法通过调用 HMRLeaveChatRoom 发生回调。
- 对于断线超时的用户,会触发离开聊天室的动作,并收到该成员离开聊天室的回调
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
users | 离开聊天室的成员 |
usersize | 成员数量 |
void(*onMemberCountChanged)(void *context, uint32_t chatroom, uint32_t count);
当聊天室成员数量发生变化时的回调
注意:
该方法通过调用 HMRJoinChatRoom 以及 HMRLeaveChatRoom 发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
count | 变化后的数量 |
void(*onMemberKicked)(void *context, uint32_t chatroom, uint64_t admin, const uint64_t *member, uint16_t membersize, const char *reason);
当聊天室成员被踢出聊天室时的回调
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
admin | 执行踢出操作的管理员 |
member | 被踢出聊天室的成员 |
membersize | 成员数量 |
reason | 被踢出聊天室的原因 |
void(*onUserInfoSet)(void *context, uint32_t chatroom, uint64_t user, const HMRKvArray *infos);
当聊天室成员信息被设置时的回调
注意:
该方法通过调用 HMRChatRoomSetUserInfo 发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
user | 信息变更的成员 |
infos | 设置后的用户信息 |
void(*onMemberOffline)(void *context, uint32_t chatroom, const uint64_t *users, uint16_t usersize);
断网超时离线回调
注意:
该方法会在断网超时离线发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
user | 信息变更的成员 |
uint16_t | 离线用户数 |
void(*onUserInfoAddedOrUpdated)(void *context, uint32_t chatroom, const uint64_t *users, const HMRKvArray *infos);
用户属性变更的回调通知
注意:
该方法通过调用 HMRChatRoomAddOrUpdateUserInfo 发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
user | 信息变更的成员 |
infos | 设置后的用户信息 |
void(*onUserInfoAddedOrUpdated)(void *context, uint32_t chatroom, const uint64_t *users, const HMRKvArray *infos);
成员属性删除通知
注意:
该方法通过调用 HMRChatRoomDeleteUserInfo 发生回调。
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
chatroom | 聊天室的标识 |
user | 信息变更的成员 |
infos | 设置后的用户信息 |
typedef void (*HMRMessageCallback)(void *context, HMRMessage *message);
消息发送前回调
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
message | 待发送消息,详见HMRMessage |
typedef void (*HMRMessageCallback)(void *context, HMRMessage *message);
消息发送后回调
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
message | 发送的消息,详见HMRMessage |
typedef void (*HMRMessageCallback)(void *context, HMRMessage *message);
收到消息回调
参数 | 描述 |
---|---|
context | 请求上下文对象,透传自回调执行时,从listener取出的context |
message | 收到的消息,详见HMRMessage |
struct HMRStateListener {
// 异步请求的上下文对象指针,一般为发起异步操作的对象指针
void *context;
// 状态变更回调函数指针,在Hummer内部工作状态发生变化时,会通过该方法进行回调
// 如果是在主线程添加的listener,则该回调也会被调度到主线程,否则会在Hummer工作线程调度执行
HMRStateCallback onStateCallback;
// Token失效回调函数指针
// 如果是在主线程添加的listener,则该回调也会被调度到主线程,否则会在Hummer工作线程调度执行
HMRTokenInvalidCallback onTokenInvalidCallback;
// Token失效回调函数指针
HMRPreviousTokenExpired onPreviousTokenExpiredCallback;
// Hummer内部辅助数据,业务方请勿修改或使用
void *preserved;
};
SDK 状态监听信息
参数 | 描述 |
---|---|
context | 步请求的上下文对象指针 |
onStateCallback | 状态变更回调函数指针,详见onStateCallback |
onTokenInvalidCallback | Token失效回调函数指针,详见onTokenInvalidCallback |
preserved | 预留字段 |
enum HMRTokenInvalidCode
Token 无效类型
枚举值 | 含义 |
---|---|
HMRTokenInvalidCode_Expired(1) | 过期 |
struct HMRChatRoomListener {
// 异步请求的上下文对象指针,一般为发起异步操作的对象指针
void *context;
/**
* 聊天室基础信息变更的回调通知
*
* @param context context为listener中携带的上下文对象指针透传
* @param chatRoom 聊天室
* @param operatorUser 信息修改人员
* @param info 已变更信息的键值对
*/
void(*onBasicInfoChanged)(void *context, uint32_t chatroom, uint64_t operatorUser, const HMRKvArray *info);
// Hummer 内部使用的保留字段,业务方应禁止访问、修改该数据
void *reserved;
};
聊天室事件监听器
参数 | 描述 |
---|---|
context | 步请求的上下文对象指针 |
onBasicInfoChanged | 聊天室基础信息变更的回调通知,详见onBasicInfoChanged |
reserved | 预留字段 |
struct HMRChatRoomMemberListener {
// 异步请求的上下文对象指针,一般为发起异步操作的对象指针
void *context;
/**
* 用户被踢出聊天室的回调通知
*
* @param context context为listener中携带的上下文对象指针透传
* @param chatRoom 聊天室
* @param admin 管理员
* @param member 被踢用户
* @param membersize 被踢用户数
* @param reason 原因
*/
void(*onMemberKicked)(void *context, uint32_t chatroom, uint64_t admin, const uint64_t *member, uint16_t membersize, const char *reason);
/**
* 用户加入/退出聊天室的回调通知
*
* @param context context为listener中携带的上下文对象指针透传
* @param chatRoom 聊天室
* @param users 加入/退出用户
* @param usersize 加入/退出用户数
*/
void(*onMemberJoined)(void *context, uint32_t chatroom, const uint64_t *users, uint16_t usersize);
void(*onMemberLeaved)(void *context, uint32_t chatroom, const uint64_t *users, uint16_t usersize);
/**
* 用户信息被设置的回调通知
*
* @param context context为listener中携带的上下文对象指针透传
* @param chatRoom 聊天室
* @param user 信息变更的成员
* @param infos 设置后的用户信息
*/
void(*onUserInfoSet)(void *context, uint32_t chatroom, uint64_t user, const HMRKvArray *infos);
/**
* 用户数量变更的回调通知
*
* @param context context为listener中携带的上下文对象指针透传
* @param chatRoom 聊天室
* @param count 变更后的用户数量
*/
void(*onMemberCountChanged)(void *context, uint32_t chatroom, uint32_t count);
// Hummer 内部使用的保留字段,业务方应禁止访问、修改该数据
void *reserved;
};
聊天室成员事件监听器
参数 | 描述 |
---|---|
context | 步请求的上下文对象指针 |
onMemberKicked | 用户被踢出聊天室的回调通知,详见onMemberKicked |
onMemberJoined | 用户加入聊天室的回调通知,详见onMemberJoined |
onMemberLeaved | 用户离开聊天室的回调通知,详见onMemberLeaved |
onUserInfoSet | 用户信息被设置的回调通知,详见onUserInfoSet |
onMemberCountChanged | 用户数量变更的回调通知,详见onMemberCountChanged |
reserved | 预留字段 |
struct HMRMessageListener {
// 异步请求的上下文对象指针,一般为发起异步操作的对象指针
void *context;
// target 对象用于进行消息过滤。当使用EmptyIdentity时,该监听器会接收所有消息。否则仅会
// 接收该 target 匹配的消息
HMRIdentity target;
// 消息发送前的回调,收到该回调意味着消息已经经过了合法性校验,并将立即尝试将其发送到接收方
HMRMessageCallback beforeSending;
// 消息发送后的回调,不论成功或失败,收到该回调意味着消息已经走完了发送流程。发送的成功或失败
// 可以通过消息对象的state字段来判断
HMRMessageCallback afterSending;
// 消息接收回调,当Hummer收到属于当前用户的消息时,会通过该回调进行处理
HMRMessageCallback onReceive;
// Hummer 内部使用的保留字段,业务方应禁止访问、修改该数据
void *reserved;
};
消息状态监听器
参数 | 描述 |
---|---|
context | 步请求的上下文对象指针 |
target | 消息过滤的对象标识 |
beforeSending | 消息发送前回调,详见beforeSending |
afterSending | 消息发送后的回调,详见afterSending |
onReceive | 消息接收回调,详见onReceive |
reserved | 预留字段 |