接口列表

  • Hummer

函数函数名
HMRHummerStatestate
HMRChannelStatechannelState
voidstartSDKWithAppId:
voidopenWithUid:environment:msgFetchStrategy:tags:token:completionHandler:
voidcloseWithCompletionHandler:
voidrefreshToken:
voidsetLogger:
voidaddStateObserver:
voidremoveStateObserver:
voidaddChannelStateObserver:
voidremoveChannelStateObserver:
NSString *sdkVersion
  • HMRChatRoomService

函数函数名
instancetypeinstance
voidsetRegion:
voidcreateChatRoom:completionHandler:
voiddismissChatRoom:completionHandler:
voidjoinChatRoom:extraProps:completionHandler:
voidleaveChatRoom:completionHandler:
voidkickMember:fromChatRoom:extraInfo:completionHandler:
voidaddRole:forMember:chatRoom:completionHandler:
voidremoveRole:forMember:chatRoom:completionHandler:
voidfetchMembers:offset:num:completionHandler:
voidfetchRoleMembers:onlineOnly:completionHandler:
voidfetchBasicInfo:completionHandler:
voidchangeBasicInfo:forChatRoom:completionHandler:
voidmuteMember:inChatRoom:reason:completionHandler:
voidunmuteMember:inChatRoom:reason:completionHandler:
voidfetchMutedUsers:completionHandler:
voidisUserMuted:inChatRoom:completionHandler:
voidsetUserInfo:inChatRoom:completionHandler:
voiddeleteUserInfo:byKeys:completionHandler:
voidfetchUserInfo:inChatRoom:completionHandler:
voidfetchOnlineUserInfoList:completionHandler:
voidaddChatRoomObserver:
voidremoveChatRoomObserver:
voidaddMemberObserver:
voidremoveMemberObserver:
  • HMRChatService

Public 成员函数函数名
instancetypeinstance
voidsendMessage:completionHandler:
voidaddMessageObserver:forTarget:
voidremoveMessageObserver:forTarget:

详细说明

Hummer

Hummer::state

@property (class, nonatomic, assign, readonly) HMRHummerState state;

获取SDK当前状态,详见HMRHummerState

返回
  • SDK当前状态

Hummer::channelState

@property (class, nonatomic, assign, readonly) HMRChannelState channelState;

获取当前连接状态,详见HMRChannelState

返回
  • SDK当前连接状态

Hummer::startSDKWithAppId:

+ (void)startSDKWithAppId:(UInt64)appId;

初始化Hummer

注意:

  • 目前 SDK 只支持一个 Hummer 实例,每个应用程序仅应创建一个 Hummer 对象。
  • Hummer 类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。
  • 对于所有操作的回调,如无特殊说明,返回的NSError为 nil 代表成功,否则为操作失败,具体的错误码及含义参见 HMRErrorCode中的错误码定义。
参数
参数描述
appId用于标识具体业务, 详见 获取AppID

Hummer::openWithUid:environment:msgFetchStrategy:tags:token:completionHandler:

+ (void)openWithUid:(UInt64)uid
        environment:(NSString *)environment
   msgFetchStrategy:(HMRMsgFetchStrategy)msgFetchStrategy
               tags:(NSSet<NSString *> *_Nullable)tags
              token:(NSString *)token
  completionHandler:(HMRCompletionHandler)completionHandler;

登录SDK,同时开始监听服务器消息以及拉取对应消息数据

参数
参数描述
uid用户id, uid 不能为0
environment需要连接服务器所处的环境参数,详情咨询相关SDK开发人员
msgFetchStrategy消息拉取策略,详见HMRMsgFetchStrategy
tags保留字段,暂时可以填空集合
token用于服务初始化时所需的用户凭证
completionHandler完成后的处理回调

Hummer::closeWithCompletionHandler:

+ (void)closeWithCompletionHandler:(HMRCompletionHandler _Nullable)completionHandler;

登出SDK

注意:

  • 登出SDK是一个异步操作,应该在completionHandler回调中处理错误的情况
参数
参数描述
completionHandler完成后的处理回调

Hummer::refreshToken:

+ (void)refreshToken:(NSString *)token;

刷新用户凭证

参数
参数描述
token待刷新用户凭证

Hummer::setLogger:

+ (void)setLogger:(void (^)(HMRLoggerLevel level, NSString *log))logger;

设置 SDK 日志输出托管回调

注意:

  • 业务可以通过该方法进行设置对应的 Logger,那么 SDK 则会将日志的输出和打印交给业务来处理
  • 业务则需要保证日志的上报等,用于后期出现问题时可以查到具体的信息
参数
参数描述
loggerSDK 日志输出回调, 日志级别详见HMRLoggerLevel

Hummer::addStateObserver:

+ (void)addStateObserver:(id<HMRHummerStateObserver>)observer;

添加 SDK 状态变更监听器

参数
参数描述
observer待添加监听器, 详见 HMRHummerStateObserver

Hummer::removeStateObserver:

+ (void)removeStateObserver:(id<HMRHummerStateObserver>)observer;

移除 SDK 状态变更监听器

参数
参数描述
observer待移除监听器, 详见 HMRHummerStateObserver

Hummer::addChannelStateObserver:

+ (void)addChannelStateObserver:(id<HMRChannelStateObserver>)observer;

添加 连接 状态变更监听器

参数
参数描述
observer待添加监听器, 详见 HMRChannelStateObserver

Hummer::removeChannelStateObserver:

+ (void)removeChannelStateObserver:(id<HMRChannelStateObserver>)observer;

移除 连接 状态变更监听器

参数
参数描述
observer待移除监听器, 详见 HMRChannelStateObserver

Hummer::sdkVersion

+ (NSString *)sdkVersion;

获取 SDK 版本信息

返回
  • SDK版本信息

Hummer::HMRHummerState

typedef NS_ENUM(NSUInteger, HMRHummerState)

SDK 状态

枚举值含义
HMRHummerStateUnavailable(0)不可用状态, 当 SDK 未初始化时则处于该状态
HMRHummerStateClosed(1)已关闭
HMRHummerStateOpening(2)正在打开
HMRHummerStateOpened(3)已打开
HMRHummerStateClosing(4)正在关闭

HMRChannelState::HMRChannelState

typedef NS_ENUM(NSInteger, HMRChannelState)

SDK 连接状态

枚举值含义
HMRChannelStateDisconnected(0)通道处于断开连接的状态
HMRChannelStateConnecting(1)通道处于连接中的状态
HMRChannelStateConnected(2)通道处于连接成功的状态

HMRLoggerLevel

typedef NS_OPTIONS(NSUInteger, HMRLoggerLevel)

日志级别

位运算含义
HMRLoggerLevelError(1 << 0)错误信息
HMRLoggerLevelWarning(1 << 1)告警信息
HMRLoggerLevelInfo(1 << 2)关键信息
HMRLoggerLevelDebug(1 << 3)调试信息
HMRLoggerLevelVerbose(1 << 4)所有信息

HMRChatRoomService

HMRChatRoomService::instance

+ (instancetype)instance;

创建 HMRChatRoomService 实例并初始化。

返回
  • 返回 HMRChatRoomService对象

HMRChatRoomService::setRegion

@property (nonatomic, strong) NSString *region;

设置聊天室区域

注意:

  • 需要在使用聊天室相关功能之前调用设置
  • 未设置将默认中国区域
参数
参数描述
region聊天室区域

HMRChatRoomService::createChatRoom:completionHandler

- (void)createChatRoom:(HMRChatRoomInfo *)chatRoomInfo
     completionHandler:(HMRChatRoomCompletionHandler)completionHandler;

创建聊天室

注意:

  • 由于聊天室模块的所需的聊天室必须要通过创建才能使用,故需要对应的创建聊天室接口。
  • 在创建聊天室完成后,服务器会返回对应的聊天室标识,用于后续在使用聊天室时的标识。
  • 同时在创建聊天室时需要提供对应的聊天室信息,如名称、描述、公告以及扩展信息等。
  • 默认容量上限:
    一个AppId创建聊天室个数:100w个
    单个聊天室对应人数:10w个
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoomInfo聊天室信息对象,包含名称、描述、公告以及扩展信息 ,详见HMRChatRoomInfo
completionHandler创建完成后的回调,其中创建成功后会携带对应的 聊天室标识 返回给业务,用于后面聊天室操作中使用;同时在创建失败后,回调中也携带了对应的失败原因

HMRChatRoomService::dismissChatRoom:completionHandler

- (void)dismissChatRoom:(HMRChatRoom *)chatRoom
      completionHandler:(HMRCompletionHandler)completionHandler;

解散聊天室

注意:

  • 销毁时需要提供对应的聊天室标识用于服务器识别对应的聊天室,并正常销毁。
  • 销毁需要HMROwnerRole权限
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoom聊天室标识符
completionHandler销毁完成后的回调,业务可以根据对应的销毁结果做不同的业务逻辑处理,销毁失败时也会携带对应的失败原因

HMRChatRoomService::joinChatRoom:extraProps:completionHandler

- (void)joinChatRoom:(HMRChatRoom *)chatRoom
          extraProps:(NSDictionary<NSString *, NSString *> * _Nullable)extraProps
   completionHandler:(HMRCompletionHandler)completionHandler;

加入聊天室

注意:

  • 对应聊天室操作都需要进入聊天室之后才能正常的操作,如发公屏、发信令以及接受信令都要进入聊天室之后才能正常处理。
  • 加入聊天室会涉及多端互踢的逻辑,相关互踢逻辑请咨询后台配置。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoom聊天室标识符
extraProps扩展字段,用于业务扩展,SDK 只负责透传
completionHandler加入聊天室完成后的回调,业务可以根据对应的加入结果做不同的业务处理,加入失败时也会携带对应的错误原因

HMRChatRoomService::leaveChatRoom:completionHandler

- (void)leaveChatRoom:(HMRChatRoom *)chatRoom
    completionHandler:(HMRCompletionHandler)completion;

退出聊天室

注意:

  • 在进入聊天室后处理完所有需要处理的逻辑后,可以通过离开聊天室来结束跟聊天室之间的交互,同时也会停止监听聊天室的公屏、信令消息和对应的回调通知。
参数
参数描述
chatRoom聊天室标识符
completionHandler离开聊天室完成后的回调,业务可以根据对应的离开结果做不同的业务处理,离开失败时也会携带对应的错误原因

HMRChatRoomService::kickMember:fromChatRoom:extraInfo:completionHandler

- (void)kickMember:(HMRUser *)member
      fromChatRoom:(HMRChatRoom *)chatRoom
         extraInfo:(NSDictionary<NSString *, NSString *> *)extraInfo
 completionHandler:(HMRCompletionHandler)completionHandler;

将用户踢出聊天室

注意:

  • 踢出成员需要对应的角色(HMRAdminRole 和 HMROwnerRole) 才可以踢出对应的成员,并且 HMRAdminRole 不可以踢出 HMRAdminRole 和 HMROwnerRole, 而 HMROwnerRole 可以踢出频道内所有成员。
  • 并且踢出成员以及被踢出的成员都需要在频道内可以操作。
  • 踢出成功后,SDK 后台并不会限制该成员无法进入,但是 SDK 会透传给业务服务器,由业务服务器做决定是否允许进入聊天室。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
member踢出的聊天室成员
chatRoom聊天室标识符
extraInfo踢人的额外信息,目前支持的Key主要是两个:
一个是 HMRKickReasonExtraKey, 用于携带踢人原因的 Key, 其 Key 对应的 Value 只需填写对应的踢人原因的字符串即可;
另一个是 HMRKickTimeExtraKey 用于携带限制时长的 Key(单位:秒), 其 Key 对应的 Value 只需要填写踢人限制时长的秒数转换成字符串即可, 这些字段都是透传字段,服务器不做处理
completionHandler踢出完成的回调,业务可以根据对应的踢出结果做不同的业务处理,踢出失败后也会携带对应的错误原因

HMRChatRoomService::addRole:forMember:chatRoom:completionHandler

- (void)addRole:(NSString *)role
      forMember:(HMRUser *)member
       chatRoom:(HMRChatRoom *)chatRoom
completionHandler:(HMRCompletionHandler)completionHandler;

添加聊天室权限角色

注意:

  • 聊天室的 HMROwnerRole 可以给对应的成员添加 HMRAdminRole 的角色,但是 HMRAdminRole 没办法给普通成员添加 HMRAdminRole 的角色。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
role角色类型,目前只能填写 HMRAdminRole
member被添加角色的聊天室成员
chatRoom聊天室标识符
completionHandler添加角色完成后的对调,业务可以根据对应添加结果做不同的业务处理

HMRChatRoomService::removeRole:forMember:chatRoom:completionHandler

- (void)removeRole:(NSString *)role
         forMember:(HMRUser *)member
          chatRoom:(HMRChatRoom *)chatRoom
 completionHandler:(HMRCompletionHandler)completionHandler;

移除聊天室权限角色

注意:

  • 聊天室的 HMROwnerRole 才可以移除对应的 HMRAdminRole 角色,但是 HMRAdminRole 没办法给 HMRAdminRole 移除角色。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
role角色类型, 目前只能填写 HMRAdminRole
member被移除角色的聊天室成员
chatRoom聊天室标识符
completionHandler移除角色完成后的对调,业务可以根据对应移除结果做不同的业务处理

HMRChatRoomService::fetchMembers:offset:num:completionHandler

- (void)fetchMembers:(HMRChatRoom *)chatRoom
              offset:(NSUInteger)offset
                 num:(NSUInteger)num
   completionHandler:(HMRFetchMembersCompletionHandler)completionHandler;

获取聊天室在线成员列表

注意:

  • 由于一些场景下,一个聊天室的内的成员可能有十几万,故聊天室 SDK 提供了对应的按需分页获取成员的结果。同时也会按照一定的默认规则来进行排序对应的成员列表。
  • 获取成员列表的接口,可以在不进入聊天室时也可以获取。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoom聊天室标识符
offset第几页 (第一页从0开始)
num设置每页的返回成员数(建议不超过200)
completionHandler获取完成后的回调,业务可以根据对应的获取的结果来做不同的业务处理,在获取成功的后可以通过成功后的 成员列表 来进行业务处理

HMRChatRoomService::fetchRoleMembers:onlineOnly:completionHandler

- (void)fetchRoleMembers:(HMRChatRoom *)chatRoom
              onlineOnly:(BOOL)onlineOnly
       completionHandler:(HMRFetchRoleMemberCompletionHandler)completionHandler;

获取聊天室带有角色的成员列表

注意:

  • 获取可以根据需要拉取对应的角色列表,业务可以根据对应的角色列表在界面上展示不同的UI界面以及赋予对应角色权限。
  • 获取角色列表无需进入聊天室后获取,进入聊天室前即可获取。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoom聊天室标识符
onlineOnly是否只获取在线的成员:
YES:只获取在线的有角色的成员列表;
NO:获取所有带有角色的成员列表
completionHandler获取完成后的回调,业务可以根据需要对应的获取结果做不同的业务处理,在获取成功后会返回对应的 角色名-角色成员的列表 的键值对

HMRChatRoomService::fetchBasicInfo:completionHandler

- (void)fetchBasicInfo:(HMRChatRoom *)chatRoom
     completionHandler:(HMRChatRoomInfoCompletionHandler)completionHandler;

获取聊天室基本属性信息

注意:

  • 获取聊天室信息可以获取到对应聊天室的名称、描述、公告以及对应的扩展字段信息。
  • 获取聊天室信息无需进入聊天室也可以获取。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoom聊天室标识符
completionHandler获取完成后的回调,业务可以根据对应的获取结果做不同的业务逻辑处理,在获取成功后可以从对应的参数中获取到对应的聊天室信息

HMRChatRoomService::changeBasicInfo:forChatRoom:completionHandler

- (void)changeBasicInfo:(NSDictionary<NSNumber *, NSString *> *)propInfo
            forChatRoom:(HMRChatRoom *)chatRoom
      completionHandler:(HMRCompletionHandler)completionHandler;

变更聊天室基本属性信息

注意:

  • 可以修改一个或多个属性,只需要在参数中指定需要修改的聊天室信息的键值对即可。
  • 需要 HMRAdminRole 或者 HMROwnerRole 的角色。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
propInfo修改的属性值,其中key值参见枚举详见:HMRChatRoomBasicInfoType
chatRoom聊天室标识符
completionHandler改完成后的回调,业务可以根据对应的修改结果做不同的业务处理

HMRChatRoomService::muteMember:inChatRoom:reason:completionHandler

- (void)muteMember:(HMRUser *)member
        inChatRoom:(HMRChatRoom *)chatRoom
            reason:(NSString *)reason
 completionHandler:(HMRCompletionHandler)completionHandler;

禁言聊天室内的成员

注意:

  • 业务可以根据对应的需要禁言某个成员,目前后台默认的禁言时间为三天,到期自动解禁。
  • 禁言需要 HMRAdminRole 或者 HMROwnerRole 的角色:
    HMROwnerRole:可以禁言频道内的所有人包括 HMRAdminRole
    HMRAdminRole:只可以禁言普通成员。
  • 禁言的成员需要在聊天室内
  • 单个用户调用频率限制:10次/5s
参数
参数描述
member需要禁言的成员
chatRoom成员所在的聊天室
reason禁言的原因
completionHandler禁言完成后的回调,业务可以根据对应禁言结果做不同的业务处理

HMRChatRoomService::unmuteMember:inChatRoom:reason:completionHandler

- (void)unmuteMember:(HMRUser *)member
          inChatRoom:(HMRChatRoom *)chatRoom
              reason:(NSString *)reason
   completionHandler:(HMRCompletionHandler)completionHandler;

解禁聊天室内的成员

注意:

  • 解禁的成员需要在聊天室内
  • 解除禁言需要 HMRAdminRole 或者 HMROwnerRole 的角色, HMROwnerRole 可以解禁频道内的所有人包括 HMRAdminRole, 而 HMRAdminRole 则只可以解禁普通成员。
  • 单个用户调用频率限制:10次/5s
参数
参数描述
member需要解除禁言的成员
chatRoom成员所在的聊天室
reason接触禁言的原因
completionHandler解除禁言完成后的回调,业务可以根据对应解除禁言结果做不同的业务处理

HMRChatRoomService::fetchMutedUsers:completionHandler

- (void)fetchMutedUsers:(HMRChatRoom *)chatRoom
      completionHandler:(HMRFetchMembersCompletionHandler)completionHandler;

获取聊天室内的禁言列表

注意:

  • 获取的禁言列表里面的有些用户可能不存在聊天室内
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoom需要获取禁言列表的聊天室
completionHandler获取完成后的回调,业务可以根据对应的获取结果做不同的业务处理,在获取成功时,会同时返回对应的禁言成员的数组

HMRChatRoomService::isUserMuted:inChatRoom:completionHandler

- (void)isUserMuted:(HMRUser *)user
         inChatRoom:(HMRChatRoom *)chatRoom
  completionHandler:(HMRBOOLCompletionHandler)completionHandler;

判别某一个用户是否在聊天室的禁言列表里

注意:

  • 单个用户调用频率限制:10次/5s
参数
参数描述
user需要判别的用户
chatRoom需要判别的聊天室
completionHandler判断完成后的回调,业务可以根据对应判断结果来做不同的业务处理:
YES:时则表示该用户被禁言了
NO:表示该用户未被禁言

HMRChatRoomService::setUserInfo:inChatRoom:completionHandler

- (void)setUserInfo:(NSDictionary<NSString *, NSString *> *)infos
         inChatRoom:(HMRChatRoom *)chatRoom
   ompletionHandler:(HMRCompletionHandler)completionHandler;

设置自己的用户信息

注意:

  • 容量上限:
    设置用户属性,最大支持属性个数:32个
    单个用户属性的最大值:8k
  • 单个用户调用频率限制:10次/5s
参数
参数描述
infos用户信息键值对
chatRoom成员所在的聊天室
completionHandler设置信息返回的回调,可以根据错误码进行处理

HMRChatRoomService::deleteUserInfo:byKeys:completionHandler

- (void)deleteUserInfo:(HMRChatRoom *)chatRoom
                byKeys:(NSSet<NSString *> *)keys
     completionHandler:(HMRCompletionHandler)completionHandler;

删除自己的用户信息

注意:

  • 容量上限:
    用户属性,最大支持属性个数:32个
    单个用户属性的最大值:8k
  • 单个用户调用频率限制:10次/5s
参数
参数描述
chatRoom成员所在的聊天室
keys待删除信息的key
completionHandler设置信息返回的回调,可以根据错误码进行处理

HMRChatRoomService::fetchUserInfo:inChatRoom:completionHandler

- (void)fetchUserInfo:(HMRUser *)user
           inChatRoom:(HMRChatRoom *)chatRoom
    completionHandler:(HMRCommonCompletionHandler)completionHandler;

获取指定用户的用户信息

参数
参数描述
user目标用户
chatRoom成员所在的聊天室
completionHandler设置信息返回的回调,可以根据错误码进行处理

HMRChatRoomService::fetchOnlineUserInfoList:completionHandler

- (void)fetchOnlineUserInfoList:(HMRChatRoom *)chatRoom
              completionHandler:(HMRChatRoomUserInfoListCompletionHandler)completionHandler;

获取聊天室已设置用户信息的在线成员列表

注意:

  • 获取的人员列表最多返回100个,超过100个的随机返回100个
参数
参数描述
chatRoom待查询聊天室
completionHandler完成后的回调,业务可以根据对应判断结果来做不同的业务处理 在获取成功后会返回对应的 用户-用户角色信息 的键值对

HMRChatRoomService::addChatRoomObserver

- (void)addChatRoomObserver:(id<HMRChatRoomObserver>)observer;

添加聊天室回调监听器

参数
参数描述
observer监听器对象, 详见 HMRChatRoomObserver

HMRChatRoomService::removeChatRoomObserver

- (void)removeChatRoomObserver:(id<HMRChatRoomObserver>)observer;

移除聊天室回调监听器

参数
参数描述
observer监听器对象, 详见 HMRChatRoomObserver

HMRChatRoomService::addMemberObserver

- (void)addMemberObserver:(id<HMRChatRoomMemberObserver>)observer;

添加聊天室成员回调监听器

参数
参数描述
observer监听器对象. 详见 HMRChatRoomMemberObserver

HMRChatRoomService::removeMemberObserver

- (void)removeMemberObserver:(id<HMRChatRoomMemberObserver>)observer;

移除聊天室成员的回调监听器

参数
参数描述
observer监听器对象, 详见 HMRChatRoomMemberObserver

HMRChatService

HMRChatService::instance

+ (instancetype)instance;

创建 HMRChatService 实例并初始化。

返回
  • 返回 HMRChatService 对象

HMRChatService::sendMessage:completionHandler

- (void)sendMessage:(HMRMessage *)chatMessage
  completionHandler:(nullable HMRCompletionHandler)completionHandler;

发送消息接口:支持发送公屏消息(只支持文本消息)、单播、广播

注意:

  • 业务可以通过自己构造消息体,并且填写对应的消息内容将该消息发送出去
  • 该接口也可以在消息发送失败的情况下进行重发消息
  • 单个用户调用频率限制:
    发送公屏消息:10次/5s
    发送自定义单播消息:50次/5s
    发送自定义广播消息:50次/5s
  • 容量上限:
    单播单条消息最大长度:2k
    广播单条消息最大长度:2k
参数
参数描述
chatMessage需要发送的消息
completionHandler发送完成的处理Block,其中如果 error 为 nil 的话,则表示发送成功。 如果 error 不为 nil 则表示发送失败

HMRChatService::addMessageObserver:forTarget

- (void)addMessageObserver:(id<HMRMessageObserver>)observer forTarget:(id<HMRIdentifiable> _Nullable)target;

添加一个消息收发监听器

参数
参数描述
observer欲增加的listener对象,详见 HMRMessageObserver
target欲监听消息收发的消息对象

HMRChatService::removeMessageObserver:forTarget

- (void)removeMessageObserver:(id<HMRMessageObserver>)observer forTarget:(id<HMRIdentifiable> _Nullable)target;

移除一个消息收发监听器

参数
参数描述
observer欲移除的listener对象,详见 HMRMessageObserver
target欲取消监听消息收发的消息对象

枚举值 & 结构体定义

Hummer

HMRMsgFetchStrategy

typedef NS_ENUM(NSUInteger, HMRMsgFetchStrategy)

消息拉取策略定义,不同的应用场景,可能会使用不同的同步策略。例如使用Continuously提供连续的消息服务,使用SkipFetched提供跨环境消息去重服务等。请根据应用场景选择合适的策略

枚举值含义
HMRContinuously持续获取消息,尽量保证消息获取的连续性。这种策略可以满足绝大部分应用场景。该策略首次激活时不会获取已经被消费过的任何消息
HMRSkipFetched如果部分消息因为某些原因被其它服务所消费掉,那么应从这些被消费掉的消息之后开始获取后续消息。这种策略仅在非常少的应用场景中会被使用,目前可能包含:1. 用户在多个设备中使用同一账号进行登录,但是业务希望已经被其中一台设备获取过的消息,在另一端的应用启动时,不再重复获取 2. 存在两套同时工作,但是数据互通的IM SDK,在它们之间进行切换时,被其中一个SDK所消费过的消息,不应该再被另一个SDK所获取
HMRForceReloadHistories强制获取服务器上已经保存的所有消息(还在时效期内的)
HMRIgnoreBefore忽略之前所有未收到的消息,从最先的位置开始拉起,即拉去登陆后才收到的消息

HMRChatRoomService

HMRChatRoomBasicInfoType

typedef NS_ENUM(NSUInteger, HMRChatRoomBasicInfoType) 

聊天室基础信息的枚举字段:主要用来修改聊天室信息和监听聊天室信息时候,可以标识那个字段发生变化/需要修改

枚举值含义
HMRChatRoomBasicInfoTypeName聊天室名字
HMRChatRoomBasicInfoTypeDescription聊天室描述
HMRChatRoomBasicInfoTypeBulletin聊天室公告
HMRChatRoomBasicInfoTypeExtention聊天室扩展字段(最大1k)

HMRChatRoomInfo


@interface HMRChatRoomInfo : NSObject

/**
 聊天室名称
 */
@property (nonatomic, copy, readonly) NSString *name;
/**
 聊天室描述
 */
@property (nullable, nonatomic, copy, readonly) NSString *desc;
/**
 聊天室公告
 */
@property (nullable, nonatomic, copy, readonly) NSString *bulletin;
/**
 扩展字段,业务可以通过该字段在聊天室信息内存入自己想要的信息
 SDK 和后台不关心这个字段
 */
@property (nullable, nonatomic, copy, readonly) NSString *appExtra;

+ (instancetype)chatRoomInfoWithName:(NSString *)name
                         description:(NSString * _Nullable)desc
                            bulletin:(NSString * _Nullable)bulletin
                            appExtra:(NSString * _Nullable)appExtra;
@end

HMRSignalContent


@interface HMRSignalContent : NSObject <HMRContent>

/**
 信令消息需要发送的对象
 1. 单播的情况下是需要收到该信令的用户标识
 2. 如果是广播的情况下,则该对象为 nil
 */
@property (nullable ,nonatomic, strong, readonly) HMRUser *user;
/**
 信令消息所包含的内容
 */
@property (nonatomic, copy, readonly) NSString *content;

HMR_UNAVAILABLE_CONSTRUCTOR;

/**
 构造一个单播的信令消息内容

 @param user 需要接受单播的用户标识
 @param content 信令消息所包含的内容
 @return 返回一个信令消息内容
 */
+ (instancetype)unicstWithUser:(HMRUser *)user content:(NSString *)content;
/**
 构造一个组播的信令消息内容

 @param content 信令消息所包含的内容
 @return 返回一个信令消息内容
 */
+ (instancetype)broadcastWithContent:(NSString *)content;

@end

HMRChatService

HMRMessage


@interface HMRMessage : NSObject

/**
 发送者对象
 */
@property (nonatomic, strong, readonly) id<HMRIdentifiable> sender;
/**
 接受者对象
 */
@property (nonatomic, strong, readonly) id<HMRIdentifiable> receiver;
/**
 发送时间戳(服务器时间戳)
 */
@property (nonatomic, assign, readonly) NSTimeInterval timestamp;
/**
 消息的唯一标识字符串
 */
@property (nonatomic, copy, readonly) NSString *uuid;
/**
 消息的内容
 目前来说消息的内置类型包括了 HMRTextContent, HMRAudioContent, HMRImageContent
 业务还可以自定义消息内容,具体查看 README.md 文档
 */
@property (nonatomic, strong, readonly) id<HMRContent> content;
/**
 消息状态
 */
@property (nonatomic, strong, readonly) id<HMRMessageState> state;
/**
 系统推送内容
 */
@property (nonatomic, strong) HMRPushContent *pushContent;
/**
 附带字段,可以通过该字段进行附带一些信息进行透传(如用户的头像和昵称等)
 */
@property (nonatomic, strong) NSString *extra;

HMR_UNAVAILABLE_CONSTRUCTOR;

/**
 聊天消息的 Designed Constructor
 
 @param content 消息的内容对象
 @param receiver 消息的接受者对象
 @return 返回消息的具体实例
 */
+ (instancetype)messageWithContent:(id<HMRContent>)content receiver:(id<HMRIdentifiable>)receiver;

/**
 对于当前用户来说,该方法用于返回聊天对应的目标对象。

 @return 如果是 P2P 消息,返回当前用户以外的用户对象。如果是群、聊天室、官方号等消息,返回 receiver 作为 target
 */
- (id<HMRIdentifiable> _Nullable)target;

@end

HMRIdentifiable

唯一标识抽象类

@protocol HMRIdentifiable <NSObject, NSCopying>

@required
/**
 标识唯一的ID
 */
@property (nonatomic, assign) UInt64 ID;

/**
 需要实现的构造函数,通过唯一标识的ID来创建对象

 @param ID 标识唯一的ID
 @return 返回创建的对象
 */
- (instancetype)initWithID:(UInt64)ID;

@end

HMRUser

标识Hummer系统的一个用户对象标识


@interface HMRUser : NSObject <HMRIdentifiable>

HMR_UNAVAILABLE_CONSTRUCTOR;

/**
 通过 ID 来创建一个用户对象

 @param ID 用户ID
 @return 返回对象,如果是当前用户则会返回 HMRMe 对象
 */
+ (instancetype)userWithID:(UInt64)ID;

/**
 获取当前登陆 SDK 的用户对象

 @return 当前登录 SDK 的用户对象
 */
+ (nullable HMRMe *)getMe;

@end

/**
 用于标识当前登录的特殊用户对象,并且为全局单例
 */
HMR_FINAL_CLASS
@interface HMRMe : HMRUser

HMR_UNAVAILABLE_CONSTRUCTOR;

+ (instancetype)userWithID:(UInt64)ID NS_UNAVAILABLE;

/**
 是否是匿名登录的用户

 @return 如果是匿名登录了的则返回 YES, 反之返回 NO
 */
- (BOOL)isAnonymous;

@end

HMRChatRoom

聊天室唯一标识类


@interface HMRChatRoom : NSObject <HMRIdentifiable>

/**
 根据id生成一个HMRChatRoom
 
 @param ID id值
 */
+ (instancetype)chatRoomWithID:(UInt64)ID;

@end

HMRContent

用于表示一个聊天内容类型,具体类型应该由其子类来实现。例如Text, Signal等


@protocol HMRContent <NSObject>

@required
/**
 通过消息内容的序列化的数据创建对应的消息内容
 
 @param encodeData 序列化后的数据
 @return 返回消息内容
 */
+ (instancetype)contentWithEncodeData:(NSData *)encodeData;
/**
 消息内容的序列化
 
 @return 序列化后的数据
 */
- (NSData *)encodeData;

@end

@interface HMRContent : NSObject

/**
 自定义消息内容需要通过该方法将自定义消息注册到 SDK 中
 
 @param contentClass 消息内容的Class
 @param type 消息内容的类型数值表示,❗❗❗该数值需要大于等于 10000,10000以内为保留范围❗❗❗
 */
+ (void)registerForContentClass:(Class<HMRContent>)contentClass forType:(int32_t)type;

@end

HMRTextContent

文本消息内容类型

@interface HMRTextContent : NSObject <HMRContent>

@property (nonatomic, copy, readonly) NSString *text;

HMR_UNAVAILABLE_CONSTRUCTOR;

+ (instancetype)contentWithText:(NSString *)text;

@end

文档是否有解决您的问题?

有帮助 没帮助
提交成功,非常感谢您的反馈!

反馈

TOP