消息系统API参考说明 - iOS

- 主动调用方法

初始化(EVMessageManager)

使用 Easyvaas 的消息系统时,首先需要初始化 SDK

[EVSDKManager initSDKWithAppID:appid appKey:appkey appSecret:appsecret userID:userid];

当接收到初始化 SDK 成功的通知后,方可继续进行其他操作。

针对消息系统的初始化而言,EVMessageManager 是一个内部维护的单例管理类,所以通常不需要进行单独的初始化操作,在设置代理对象时管理类自然会常驻内存。

设置代理(EVMessageProtocol)

@property (nonatomic, weak) id<EVMessageProtocol> delegate;

在 EVMessageManager 中设置了 delegate 代理属性,用户可以通过设置该代理来决定由哪个类来接收回调方法。

eg:

[EVMessageManager shareManager].delegate = self;

连接频道(join channel)

使用 Easyvaas 的消息系统,第一步操作就是加入频道,成功加入频道后,才能进行消息系统内部发送消息、点赞等其他操作。

/**
 连接频道

 @param channel 想加入的频道
 */
- (void)connect:(NSString *)channel;

连接方法传入的参数即为想要加入的频道,不能为空,连接成功后会走代理回调。

发送消息(简易方法)

成功加入频道后,就可以同该频道下的其他人聊天了,我们提供了一个发送消息的简易方法,只需要传入最基础的消息内容等信息,未传入的参数为默认值。

注:只能传入一种消息类型

/**
 发送消息

 @param channel     所在频道
 @param message     发送的消息字符串
 @param userData    透传消息
 @param type        消息类型(不可传入多个类型)
 @param callBack    回调
 */
- (void)sendWithChannel:(NSString *)channel message:(NSString *)message userData:(NSDictionary *)userData type:(EVMessageType)type result:(EVMessageCallBack)callBack;

发送消息(全参数)

全参数发送消息的方法,主要增加了消息等级、是否保留为历史消息的设置,默认level=EVMessageLevel_4、save=true

/**
 发送消息(全参数)

 @param channel     所在频道
 @param message     发送的消息字符串
 @param userData    透传消息
 @param type        消息类型(不可传入多个类型)
 @param level       消息等级
 @param save        是否保留为历史消息
 @param callBack    回调
 */
- (void)sendWithChannel:(NSString *)channel message:(NSString *)message userData:(NSDictionary *)userData type:(EVMessageType)type level:(EVMessageLevel)level save:(BOOL)save result:(EVMessageCallBack)callBack;

点赞操作(like)

点赞操作除了需要传入所在频道(channel)外,还可以传入点赞数,默认点赞数为1。

/**
 点赞操作

 @param channel     所在频道
 @param count       点赞数
 @param callBack    回调
 */
- (void)addLikeCountWithChannel:(NSString *)channel count:(NSUInteger)count result:(EVMessageCallBack)callBack;

获取最近历史消息(history)

当新加入一个频道(channel)时,如果想获取该频道最近的历史消息,可以通过此接口获取,只需要传入所需要获取的历史消息数即可。

/**
 获取最近的历史消息

 @param channel 所在频道
 @param count 历史消息数
 @param type 消息类型(可传入多个类型)
 @param callBack 回调(字典中的历史消息是 EVMessageModel 对象)
 */
- (void)getLastHistoryMessageWithChannel:(NSString *)channel count:(NSUInteger)count type:(EVMessageType)type result:(EVMessageCallBack)callBack;

获取历史消息成功后,如果有值,则从 response[@"content"] 中获取消息数组,数组中是 EVMessageModel 对象,用户可以根据自身需求对其进行处理。

获取历史消息(history)

完整的获取历史消息接口,可以指定获取的 start、count、type 信息,以针对性的获取对应的历史消息。 如果需要获取多种类型的历史消息(eg:system以及gift消息),可以使用 | 将参数串联起来(eg:EVMessageTypeSystem | EVMessageTypeGift),如果需要获取全部类型的消息,EVMessageType 中提供了 EVMessageTypeAll 枚举可供使用。

/**
 获取历史消息

 @param channel     所在频道
 @param start       开始位置
 @param count       历史消息数
 @param type        消息类型(可传入多个类型)
 @param callBack    回调(字典中的历史消息是 EVMessageModel 对象)
 */
- (void)getHistoryMessageWithChannel:(NSString *)channel start:(NSUInteger)start count:(NSUInteger)count type:(EVMessageType)type result:(EVMessageCallBack)callBack;

离开频道(leave channel)

当用户想离开当前频道(channel)时,可以调用此方法,成功后会通过回调方法告知用户。

/**
 离开频道

 @param channel     所操作的频道
 @param callBack    回调
 */
- (void)leaveWithChannel:(NSString *)channel result:(EVMessageCallBack)callBack;

关闭连接(disconnect)

当用户想关闭 socket 连接时,可以调用此方法,成后会通过回调方法告知用户。

/**
 关闭连接
 */
- (void)closeConnect;

获取 EVMessage 模块版本号信息

+ (NSString *)getVersion;

用户操作block回调

用户在发送消息、点赞、获取历史消息、离开频道时,都会有 EVMessageCallBack block作为回调,可通过判断 error == nil 来获知当前操作是否成功。 获取历史消息时,会回调 response 字典,内部为历史消息内容。

typedef void(^EVMessageCallBack)(NSDictionary *response, NSError *error);

- 代理回调方法(EVMessageProtocol)

必须实现的方法(@required)

连接成功

当调用- (void)connect:(NSString *)channel;连接加入频道成功时,会回调此代理。

/**
 *  消息服务器连接成功
 */
- (void)EVMessageConnected;

连接失败

当调用- (void)connect:(NSString *)channel;连接加入频道失败时,会回调此代理。

/**
 *  消息服务器连接失败
 *
 *  @param error 失败原因
 */
- (void)EVMessageConnectError:(NSError *)error;

可选实现的方法(@optional)

连接断开

当处于连接中的 socket 由于其他原因断开时,回调此方法,用户可根据错误码查看分析原因。

用户在没有进行离开频道(leave channel)操作时,如果系统回调此方法,SDK 内部会为用户尝试重新连接,最大重连数为3次,重连过程中会给予用户状态回调。

/**
 *  断开连接
 *
 *  @param code   错误码
 *  @param reason 原因
 */
- (void)EVMessageDidCloseWithCode:(EVMessageErrorCode)code
                           reason:(NSString *)reason;

收到新消息

当 socket 连接收到服务器下发的会话消息时,会将会话内容回调给用户,其中 userData 为用户自定义的字典信息,可用于传输头像地址等信息。

/**
 *  接收到新消息
 *
 *  @param channel  频道
 *  @param userid   用户 id
 *  @param message  消息内容
 *  @param userData 自定义消息
 */
- (void)EVMessageRecievedNewMessageInChannel:(NSString *)channel
                                  sendedFrom:(NSString *)userid
                                     message:(NSString *)message
                                    userData:(NSDictionary *)userData;

用户加入当前频道

当用户所在频道(channel)有其他用户加入时,服务器会通过 socket 下发告知用户,SDk 内部会回调此消息给用户。

/**
 *  有用户加入频道
 *
 *  @param userids 加入的用户
 *  @param channel 频道
 */
- (void)EVMessageUsers:(NSArray <NSString *>*)userids
         joinedChannel:(NSString *)channel;

用户离开当前频道

当用户所在频道(channel)中有用户离开(leave)时,服务器会通过 socket 下发告知用户,SDk 内部会回调此消息给用户。

/**
 *  有用户从频道离开
 *
 *  @param userids 离开的用户
 *  @param channel 频道
 */
- (void)EVMessageUsers:(NSArray <NSString *>*)userids
           leftChannel:(NSString *)channel;

更新点赞数

此方法会回调当前频道(channel)的总点赞数,目前代理只有在用户调用了- (void)addLikeCountWithChannel:(NSString *)channel count:(NSUInteger)count result:(EVMessageCallBack)callBack;方法时才会回调。

/**
 *  更新点赞数
 *
 *  @param likeCount 更新后的点赞数
 *  @param channel   频道
 */
- (void)EVMessageDidUpdateLikeCount:(long long)likeCount
                          inChannel:(NSString *)channel;

更新正在观看的人数

当用户所在频道(channel)的观看人数发生变化时,SDK 会通过此方法回调正在观看的人数给用户。

/**
 *  更新正在观看数
 *
 *  @param watchingCount 更新后的正在观看数
 *  @param channel       频道
 */
- (void)EVMessageDidUpdateWatchingCount:(NSInteger)watchingCount
                              inChannel:(NSString *)channel;

更新已观看的人数

此回调会与正在观看人数的回调方法同步回调,用于更新已观看的人数。

/**
 *  更新观看人次
 *
 *  @param watchedCount 更新后的观看人次
 *  @param channel      频道
 */
- (void)EVMessageDidUpdateWatchedCount:(NSInteger)watchedCount
                             inChannel:(NSString *)channel;

- 消息模型

当获取历史消息时,response 字典中回调的数组即是由EVMessageModel组成的,该对象中的属性代表一条消息的相关内容。

@interface EVMessageModel : NSObject

@property (nonatomic, copy) NSString *context;          /**< 消息内容 */
@property (nonatomic, copy) NSDictionary *userData;     /**< 透传消息 */
@property (nonatomic, copy) NSString *userID;           /**< 用户标识 */
@property (nonatomic, assign) EVMessageType type;       /**< 消息类型 */

@end

results matching ""

    No results matching ""