函数 | 函数名 |
---|---|
HMRState | state |
void | startWithAppId:appVersion:eventObserver: |
HMRRequestId | loginWithUid:region:token:completion: |
HMRRequestId | logout |
HMRRequestId | refreshToken:completion: |
NSString * | sdkVersion |
BOOL | setLoggerFilePath: |
BOOL | setLogLevel: |
BOOL | setLogCallback: |
BOOL | uploadLogsManually: |
函数 | 函数名 |
---|---|
instancetype | instance |
HMRRequestId | queryUserOnlineStatus:completion: |
HMRRequestId | sendMessage:withOptions:toUser:completion: |
HMRRequestId | addObserver: |
HMRRequestId | removeObserver: |
+ (HMRState)state;
获取SDK当前状态
+ (void)startWithAppId:(uint64_t)appId
appVersion:(NSString *)appVer
eventObserver:(id<HMREventObserver>)observer;
初始化 Hummer,同时开始监听 Hummer 的状态改变
注意:
- 目前 SDK 只支持一个 Hummer 实例,每个应用程序仅应创建一个 Hummer 对象。
- Hummer 类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。
参数 | 描述 |
---|---|
appId | 用于标识具体业务, 详见 获取AppID |
appVer | 当前应用版本,主要用于数据统计和应用查障 |
observer | 事件监听器 HMREventObserver |
+ (HMRRequestId)loginWithUid:(uint64_t)uid
region:(NSString *)region
token:(NSString *)token
completion:(HMRRequestCompletion)completion;
登录SDK
注意:
- 该方法应该在 startWithAppId 操作之后执行
- 该方法应该在上层业务的用户登录操作完成之后执行
参数 | 描述 |
---|---|
uid | 用户id, uid 不能为0 |
region | 启用用户上下文所需的区域参数,详情可以咨询相关SDK开发人员 |
token | 有效的用户凭证,用于SDK服务的鉴权 |
completion | 完成后的处理回调 |
+ (HMRRequestId)logout;
登出SDK
注意:
- 该操作应该在业务进行实际的用户注销(退出登录)之前执行
+ (HMRRequestId)refreshToken:(NSString *)token
completion:(HMRRequestCompletion)completion;
刷新用户凭证
参数 | 描述 |
---|---|
token | 待刷新用户凭证 |
completion | 完成后的处理回调, 业务需要对回调结果进行错误处理 |
+ (NSString *)sdkVersion;
获取 SDK 版本信息
+ (BOOL)setLoggerFilePath:(NSString *)path;
需要设置的日志存储路径,调用方应确保路径存在
注意:
- 请勿直接设置为 Documents、Caches 等系统根目录!
参数 | 描述 |
---|---|
path | 需要设置的日志存储路径 |
+ (BOOL)setLogLevel:(HMRLogLevel)logLevel;
设置日志输出级别
参数 | 描述 |
---|---|
logLevel | 日志等级,详见HMRLogLevel |
+ (BOOL)setLogCallback:(HMRLogCallback _Nullable)callback;
设置日志输出回调
参数 | 描述 |
---|---|
callback | 回调函数,详见HMRLogCallback |
+ (BOOL)uploadLogsManually:(NSString *)remark;
设置日志输出级别
参数 | 描述 |
---|---|
remark | 上报时的备注信息 |
+ (instancetype)instance;
创建 HMRPeerService 实例并初始化。
- (HMRRequestId)queryUserOnlineStatus:(NSSet<HMRUserId *> *)users
completion:(nullable void (^)(HMRRequestId requestId,
NSDictionary<HMRUserId *, NSNumber *> *onlineUsers,
NSError *error))completion;
批量查询用户在线,可以查询具体用户是否在线
注意:
- 批量查询的最大量为200
参数 | 描述 |
---|---|
users | 需要查询是否在线的用户列表 ,详见 HMRUserId |
completion | 该操作的异步回调 |
- (HMRRequestId)sendMessage:(HMRMessage *)message
withOptions:(HMRMessagingOptions *_Nullable)options
toUser:(HMRUserId *)user
completion:(nullable HMRRequestCompletion)completion;
发送点对点信令消息
注意:
- 单条消息最大限制32KB,消息的extras字段限制最多8个key-value,每个key最大32B,value最大1KB
- key 只能由
a-zA-Z0-9_-
字符组成
参数 | 描述 |
---|---|
message | 需要发送的信令消息,详见 HMRMessage |
options | 发送消息所需要的配置信息, 预留字段,详见 HMRMessagingOptions |
user | 信令消息的接收者标识 ,详见 HMRUserId |
completion | 该操作的异步回调 |
- (HMRRequestId)addObserver:(id<HMRPeerServiceObserver>)observer;
添加信令消息的监听器
参数 | 描述 |
---|---|
observer | 需要添加的监听器对象. 详见 HMRPeerServiceObserver |
- (HMRRequestId)removeObserver:(id<HMRPeerServiceObserver>)observer;
移除信令消息的监听器
参数 | 描述 |
---|---|
observer | 需要移除的监听器对象, 详见 HMRPeerServiceObserver |
+ (instancetype)instance;
创建 HMRRoomService 实例并初始化。
- (HMRRequestId)joinRoom:(HMRRoomId *)roomId
withAppExtras:(nullable NSDictionary<NSString *, NSString *> *)extras
options:(nullable HMRRoomJoiningOptions *)options
completion:(nullable HMRRequestCompletion)completion;
进入房间的接口
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
extras | 加入房间时的扩展信息 |
options | 加入房间时可选参数,详见 HMRRoomJoiningOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)leaveRoom:(HMRRoomId *)roomId
completion:(nullable HMRRequestCompletion)completion;
退出房间的接口
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
completion | 该操作的异步回调 |
- (HMRRequestId)queryMemberCounts:(NSSet<NSString *> *)roomIds
roomRegion:(NSString *)roomRegion
completion:(nullable void(^)(HMRRequestId requestId,
NSDictionary<HMRRoomId *, NSNumber *> *memberCounts,
NSError *error))completion;
批量查询房间成员总数
注意:
- 最大同时查询20个房间
- 不支持房间跨区域查询
参数 | 描述 |
---|---|
roomIds | 操作指定的房间标识列表,详见 HMRRoomId.ID |
roomRegion | 房间区域,详见 HMRRoomId.region |
completion | 该操作的异步回调 |
- (HMRRequestId)queryMembers:(HMRRoomId *)roomId
completion:(nullable void(^)(HMRRequestId requestId
, NSArray<HMRUserId *> *members
, NSError *error))completion;
获取指定房间的成员列表
注意:
- 当房间超过500人时候,随机返回500人
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
completion | 该操作的异步回调 |
- (HMRRequestId)setRoomAttributes:(HMRRoomId *)roomId
withAttributes:(NSDictionary <NSString *, NSString *> *)attributes
options:(nullable HMRRoomAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
设置房间属性
注意:
- 支持进房间和不进房间全量设置房间属性
- 房间持续大约10分钟无人的时候,清空房间属性
- 每个属性最大8KB 每个房间最多有32条属性
- 不建议属性设置最大个数和每个属性都设置最大容量,如果都达到峰值有可能引发获取不到属性值的问题
- 设置房间属性的时候Key不能为空(返回错误),Value可以为空
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
attributes | 属性 |
options | 可选项,详见 HMRRoomAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)addOrUpdateRoomAttributes:(HMRRoomId *)roomId
withAttributes:(NSDictionary <NSString *, NSString *> *)attributes
options:(nullable HMRRoomAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
添加或者更新指定房间的属性
注意:
- 属性存在则更新;属性不存在则添加
- 房间持续大约10分钟无人的时候,清空房间属性
- 每个属性最大8KB 每个房间最多有32条属性
- 不建议属性设置最大个数和每个属性都设置最大容量,如果都达到峰值有可能引发获取不到属性值的问题
- 设置房间属性的时候Key不能为空(返回错误),Value可以为空
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
attributes | 属性 |
options | 可选项,详见 HMRRoomAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)deleteRoomAttributes:(HMRRoomId *)roomId
byKeys:(NSSet <NSString *> *)keys
options:(nullable HMRRoomAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
删除指定房间的指定属性
注意:
- 如果指定房间属性存在并成功删除, 返回成功
- 如果指定房间属性不存在, 返回成功
- 如果指定的房间属性部分存在部分不存在, 返回成功
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
keys | 属性key |
options | 可选项,详见 HMRRoomAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)clearRoomAttributes:(HMRRoomId *)roomId
withOptions:(nullable HMRRoomAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
清空指定房间属性
注意:
- 房间持续大约10分钟无人的时候,会自动清空房间属性
- 如果指定房间未设置属性或不存在,返回成功
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
options | 可选项,详见 HMRRoomAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)queryRoomAttributes:(HMRRoomId *)roomId
byKeys:(NSSet <NSString *> *)keys
completion:(nullable void (^)(HMRRequestId requestId,
NSDictionary<NSString *, NSString *> *attributes,
NSError *error))completion;
查询指定房间的指定属性
注意:
- 属性 keys:对应的单个key不能为空
- 如果查询的属性不存在,返回成功, 但是结果为空
- 如果查询的属性部分存在部分不存在,则只返回存在的属性值
- 如果指定房间属性从未设置过或已超时被清除,但未再次设置的, 返回成功,结果为空
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
keys | 属性keys |
completion | 该操作的异步回调 |
- (HMRRequestId)queryRoomAttributes:(HMRRoomId *)roomId
completion:(nullable void (^)(HMRRequestId requestId,
NSDictionary<NSString *, NSString *> *attributes,
NSError *error))completion;
查询指定房间的全部属性
注意:
- 如果指定房间属性从未设置过或已超时被清除,但未再次设置的, 返回成功,结果为空
参数 | 描述 |
---|---|
roomId | 操作指定的房间标识,详见 HMRRoomId |
completion | 该操作的异步回调 |
- (HMRRequestId)setMemberAttributes:(HMRUserId *)member
inRoom:(HMRRoomId *)roomId
withAttributes:(NSDictionary<NSString *, NSString *> *)attributes
options:(nullable HMRMemberAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
设置当前用户在当前房间的属性
注意:
- 目前只支持设置自己的属性
- 单个用户属性的最大值为 8 KB,最多数目为 32 个,
- 不建议属性设置最大个数和每个属性都设置最大容量,如果都达到峰值有可能引发获取不到属性值的问题
参数 | 描述 |
---|---|
member | 操作指定的成员标识,详见 HMRUserId |
roomId | 操作指定的房间标识,详见 HMRRoomId |
attributes | 属性 |
options | 属性可选项,详见 HMRMemberAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)addOrUpdateMemberAttributes:(HMRUserId *)member
inRoom:(HMRRoomId *)roomId
withAttributes:(NSDictionary<NSString *, NSString *> *)attributes
options:(nullable HMRMemberAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
新增或更新用户在当前房间的用户属性
注意:
- 属性已经存在则更新,不存在则新增
- 目前只支持设置自己的用户属性
- 单个用户属性的最大值为 8 KB,最多数目为 32 个
- 不建议属性设置最大个数和每个属性都设置最大容量,如果都达到峰值有可能引发获取不到属性值的问题
- 可以批量添加或更新本地用户的多个属性
参数 | 描述 |
---|---|
member | 用户标识,详见 HMRUserId |
roomId | 操作指定的房间标识,详见 HMRRoomId |
attributes | 属性 |
options | 属性可选项,详见 HMRMemberAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)deleteMemberAttributes:(HMRUserId *)member
inRoom:(HMRRoomId *)roomId
byKeys:(NSSet<NSString *> *)keys
options:(nullable HMRMemberAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
删除用户在当前房间的某些用户属性
注意:
- 目前只支持删除自己的用户属性
- 当部分用户属性删除成功, 部分用户属性不存在的时候,都返回成功
参数 | 描述 |
---|---|
member | 用户标识,详见 HMRUserId |
roomId | 操作指定的房间标识,详见 HMRRoomId |
keys | 属性keys |
options | 属性可选项,详见 HMRMemberAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)clearMemberAttributes:(HMRUserId *)member
inRoom:(HMRRoomId *)roomId
options:(nullable HMRMemberAttributeOptions *)options
completion:(nullable HMRRequestCompletion)completion;
清空用户在房间内的所有属性
注意:
- 目前只支持清空自己的用户属性
- 如果指定用户未设置属性,返回成功
参数 | 描述 |
---|---|
member | 用户标识,详见 HMRUserId |
roomId | 操作指定的房间标识,详见 HMRRoomId |
options | 属性可选项,详见 HMRMemberAttributeOptions |
completion | 该操作的异步回调 |
- (HMRRequestId)queryMemberAttributtes:(HMRUserId *)member
inRoom:(HMRRoomId *)roomId
byKeys:(NSSet<NSString *> *)keys
completion:(nullable void (^)(HMRRequestId requestId,
NSDictionary<NSString *, NSString *> *attributtes,
NSError *error))completion;
查看用户在当前房间指定属性
注意:
- 如果查询的属性不存在,则返回成功,结果为空
- 如果查询的属性部分存在部分不存在,则存在的只返回成功, 结果为存在的属性
参数 | 描述 |
---|---|
member | 用户标识,详见 HMRUserId |
roomId | 操作指定的房间标识,详见 HMRRoomId |
keys | 属性keys |
completion | 该操作的异步回调 |
- (HMRRequestId)queryMemberAttributtes:(HMRUserId *)member
inRoom:(HMRRoomId *)roomId
completion:(nullable void (^)(HMRRequestId requestId,
NSDictionary<NSString *, NSString *> *attributtes,
NSError *error))completion;
查看用户在当前房间所有属性
注意:
- 如果用户没有设置任何属性,返回成功,结果为空
参数 | 描述 |
---|---|
member | 用户标识,详见 HMRUserId |
roomId | 操作指定的房间标识,详见 HMRRoomId |
completion | 该操作的异步回调 |
- (HMRRequestId)sendMessage:(HMRMessage *)message
withOptions:(HMRMessagingOptions *)options
inRoom:(HMRRoomId *)roomId
completion:(nullable HMRRequestCompletion)completion;
发送房间消息
注意:
- 单条消息最大限制32KB,消息的extras字段限制最多8个key-value,每个key最大32B,value最大1KB
- key 只能由
a-zA-Z0-9_-
字符组成
参数 | 描述 |
---|---|
message | 要发送的消息,详见 HMRMessage |
options | 发送消息所需要的配置信息,详见 HMRMessagingOptions |
roomId | 房间标识,详见 HMRRoomId |
completion | 该操作的异步回调 |
- (HMRRequestId)addMemberObserver:(id <HMRRoomMemberObserver>)observer;
添加Member的监听器
参数 | 描述 |
---|---|
observer | 需要添加的监听器对象. 详见 HMRRoomMemberObserver |
- (HMRRequestId)removeMemberObserver:(id <HMRRoomMemberObserver>)observer;
移除Member的监听器
参数 | 描述 |
---|---|
observer | 需要移除的监听器对象. 详见 HMRRoomMemberObserver |
- (HMRRequestId)addRoomObserver:(id <HMRRoomObserver>)observer;
添加Room的监听器
参数 | 描述 |
---|---|
observer | 需要添加的监听器对象. 详见 HMRRoomObserver |
- (HMRRequestId)removeRoomObserver:(id <HMRRoomObserver>)observer;
移除Room的监听器
参数 | 描述 |
---|---|
observer | 需要移除的监听器对象. 详见 HMRRoomObserver |
typedef NS_ENUM(NSUInteger, HMRState)
SDK 当前所处的状态
枚举值 | 含义 |
---|---|
HMRStateDisconnected(0) | 未连接 |
HMRStateConnecting(1) | 连接中 |
HMRStateReconnecting(2) | 重连中 |
HMRStateConnected(3) | 已连接 |
请求的唯一标识
typedef NSString * HMRRequestId;
用于表示一个用户的对象
@interface HMRUserId : NSObject <HMRIdentifiable>
HMR_UNAVAILABLE_CONSTRUCTOR;
/**
通过 ID 来创建一个用户对象
@param ID 用户ID
@return 返回对象,如果是当前用户则会返回 HMRMe 对象
*/
+ (instancetype)userWithID:(UInt64)ID;
/**
获取当前登陆 SDK 的用户对象
@return 当前登录 SDK 的用户对象
*/
+ (nullable HMRMe *)getMe;
@end
日志级别
typedef NS_ENUM(NSUInteger, HMRLogLevel) {
HMR_LOG_LEVEL_TRACE = 0, // 输出所有级别日志
HMR_LOG_LEVEL_DEBUG = 1, // 输出调试信息及以上级别日志
HMR_LOG_LEVEL_INFO = 2, // 输出关键信息及以上级别日志
HMR_LOG_LEVEL_WARNING = 3, // 输出告警信息及以上级别日志
HMR_LOG_LEVEL_ERROR = 4, // 输出错误信息及以上级别日志
};
日志回调函数
typedef void (^HMRLogCallback)(HMRLogLevel level, NSString * _Nullable message);
模块的信令消息结构体
@interface HMRMessage : NSObject
/**
消息的类型,用于标识一个消息具体的类型
业务可以根据该字段进行对应的序列化与反序列化对应的 content 数据
*/
@property (nonatomic, copy, readonly) NSString *type;
/**
消息的内容序列化后的数据,SDK与后台对该数据无感知,主要起到透传的作用
*/
@property (nonatomic, copy, readonly) NSData *content;
/**
除了序列化的数据以外,业务可以透传一些具体的扩展信息
该字段 SDK 与后台对该数据也无感知进行透传
*/
@property (nonatomic, copy, readonly, nullable) NSDictionary<NSString *, NSString *> *extras;
HMR_UNAVAILABLE_CONSTRUCTOR;
/**
消息构造方法
@param type 消息类型
@param content 消息数据
@param extras 扩展信息
@return 消息实例
*/
+ (instancetype)messageWithType:(NSString *)type
content:(NSData *)content
appExtras:(nullable NSDictionary<NSString *, NSString *> *)extras;
@end
消息配置信息
@interface HMRMessagingOptions : NSObject <NSCopying>
@end
房间标识,房间标识只能由 [a-zA-Z0-9_-] 字符组成; 最大为64字节
@interface HMRRoomId : NSObject <NSCopying>
/**
房间标识,房间标识只能由 [a-zA-Z0-9_-] 字符组成; 最大为64字节
*/
@property (nonatomic, copy, readonly) NSString *ID;
/**
区域
* 如果没有显式指定区域,则会使用Hummer.login接口中填写的用户登录区域。
即:显式指定的区域优先级大于login时指定的区域
*/
@property (nonatomic, copy, readonly) NSString *region;
+ (instancetype)roomWithID:(NSString *)ID;
+ (instancetype)roomWithID:(NSString *)ID region:(NSString *)region;
@end
加入房间时可选参数
@interface HMRRoomJoiningOptions : NSObject
@end
房间属性的预留参数
@interface HMRRoomAttributeOptions : NSObject
/** 是否启动通知能力:默认不启用: NO, 启用:YES */
@property (nonatomic, assign) BOOL enableNotification;
@end
房间用户属性的预留参数
@interface HMRMemberAttributeOptions : NSObject
/** 是否启动通知能力:默认不启用: NO, 启用:YES */
@property (nonatomic, assign) BOOL enableNotification;
@end