PLVChatroomManager

Objective-C

@interface PLVChatroomManager : NSObject
/// 委托代理
@property (nonatomic, weak) id<PLVChatroomManagerProtocol> delegate;
/// 当前场次ID,需在Demo层进行设置,并监听数据变化实时更新
@property (nonatomic, copy) NSString * _Nullable sessionId;
/// 当前登录用户是否是特殊身份(譬如讲师),默认为NO,为YES时字段banned永远为NO
@property (nonatomic, assign) BOOL specialRole;
/// socket处于已连接且登录成功的状态时为YES,默认为NO
@property (nonatomic, assign, readonly) BOOL online;
/// 聊天室是否被关闭,默认为NO
@property (nonatomic, assign, readonly) BOOL closeRoom;
/// 当前登录用户是否被禁言,默认为NO
@property (nonatomic, assign, readonly) BOOL banned;

/// 单例方法
+ (instancetype)sharedManager;

/// 发送提问消息
/// @param content 提问的文本内容
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendQuesstionMessage:(NSString *)content;

/// 发送自定义消息
/// @param message 自定义消息数据模型
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendCustonMessage:(PLVCustomMessage *)message;

/// 发送自定义消息
/// @param message 自定义消息数据模型
/// @param joinHistoryList 是否加入历史聊天记录,加入为YES,不加入为NO
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendCustonMessage:(PLVCustomMessage *)message
          joinHistoryList:(BOOL)joinHistoryList;

/// 发送文本消息,默认不需要回调msgId
/// @param message 文本消息数据模型
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendSpeakMessage:(PLVSpeakMessage *)message;

/// 发送文本消息,发送成功执行callback
/// @param message 文本消息数据模型
/// @param callback 回调
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendSpeakMessage:(PLVSpeakMessage *)message
                callback:(void (^ _Nullable)(NSString *msgId))callback;

/// 发送回复消息
/// @param message 回复消息数据模型
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendQuoteMessage:(PLVQuoteMessage *)message;

/// 发送回复消息,发送成功执行callback
/// @param message 回复消息数据模型
/// @param callback 回调
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendQuoteMessage:(PLVQuoteMessage *)message
                callback:(void (^ _Nullable)(NSString *msgId))callback;

/// 发送图片消息
/// 发送结果通过delegate通知
/// @param message 图片消息数据模型
/// @note 如果使用message.processImageData进行上传,数据不允许大于2mb
- (void)sendImageMessage:(PLVImageMessage *)message;

/// 发送图片表情消息
/// @param message 图片表情消息数据模型 根据sendState状态判断发送结果
- (BOOL)sendImageEmotionMessage:(PLVImageEmotionMessage *)message;

/// 发送点赞,新增点赞次数为1
/// 调用该方法之后,内部会进行数据累计,每5s发送一次socket消息,以及发送一次http统计
- (void)sendLikeEvent;

/// 发送点赞
/// 调用该方法之后,内部会进行数据累计,每5s发送一次socket消息,以及发送一次http统计
/// @param count 新增点赞次数
- (void)sendLikeEvent:(NSInteger)count;

/// 发送禁言消息,讲师端专用接口
/// @param banned YES-禁言 NO-取消禁言
/// @param userId 被禁言/取消禁言的用户ID
- (BOOL)sendBandMessage:(BOOL)banned bannedUserId:(NSString *)userId;

/// 发送踢人消息,讲师端专用接口
/// @param userId 被踢出的用户ID
- (BOOL)sendKickMessageWithUserId:(NSString *)userId;

/// 发送取消踢出(移入)消息,讲师端专用接口
/// @param userId 被移入的用户ID
- (BOOL)sendUnkickMessageWithUserId:(NSString *)userId;

/// 发送全体禁言、解禁消息,讲师端专用接口
/// @param closeRoom YES:全体禁言;NO:全体解禁
- (BOOL)sendCloseRoom:(BOOL)closeRoom;

/// 发送回复消息,发送成功执行callback
/// @param nickname 修改后昵称
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendChangeNickname:(NSString *)nickname;

/// 发送上墙/下墙消息
/// @param msgId 需要上墙/下墙消息的id
/// @param toTop YES:上墙;NO:下墙
/// @return 发送结果,成功为YES,失败为NO
- (BOOL)sendPinMessageWithMsgId:(NSString *_Nullable)msgId toTop:(BOOL)toTop;

/// 开启管理器
/// @param delegate 用于设置代理,监听socket消息等
- (void)setupWithDelegate:(id<PLVChatroomManagerProtocol>)delegate channelId:(NSString *)channelId;

/// 消息overLen字段为YES时,使用该方法获取超长消息
/// @return YES-消息发出;NO-消息未发出,即callback不会执行
- (BOOL)overLengthSpeakMessageWithMsgId:(NSString *)msgId callback:(void (^)(NSString * _Nullable content))callback;

/// 退出前调用,用于资源释放、状态位清零
- (void)destroy;

@end

Swift

class PLVChatroomManager : NSObject

Undocumented

  • 委托代理

    Declaration

    Objective-C

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

    Swift

    weak var delegate: PLVChatroomManagerProtocol? { get set }
  • 当前场次ID,需在Demo层进行设置,并监听数据变化实时更新

    Declaration

    Objective-C

    @property (nonatomic, copy) NSString *_Nullable sessionId;

    Swift

    var sessionId: String? { get set }
  • 当前登录用户是否是特殊身份(譬如讲师),默认为NO,为YES时字段banned永远为NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL specialRole;

    Swift

    var specialRole: Bool { get set }
  • socket处于已连接且登录成功的状态时为YES,默认为NO

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL online;

    Swift

    var online: Bool { get }
  • 聊天室是否被关闭,默认为NO

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL closeRoom;

    Swift

    var closeRoom: Bool { get }
  • 当前登录用户是否被禁言,默认为NO

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL banned;

    Swift

    var banned: Bool { get }
  • 单例方法

    Declaration

    Objective-C

    + (nonnull instancetype)sharedManager;

    Swift

    class func shared() -> Self
  • 发送提问消息

    Declaration

    Objective-C

    - (BOOL)sendQuesstionMessage:(nonnull NSString *)content;

    Swift

    func sendQuesstionMessage(_ content: String) -> Bool

    Parameters

    content

    提问的文本内容

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送自定义消息

    Declaration

    Objective-C

    - (BOOL)sendCustonMessage:(nonnull PLVCustomMessage *)message;

    Swift

    func sendCustonMessage(_ message: PLVCustomMessage) -> Bool

    Parameters

    message

    自定义消息数据模型

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送自定义消息

    Declaration

    Objective-C

    - (BOOL)sendCustonMessage:(nonnull PLVCustomMessage *)message
              joinHistoryList:(BOOL)joinHistoryList;

    Swift

    func sendCustonMessage(_ message: PLVCustomMessage, joinHistoryList: Bool) -> Bool

    Parameters

    message

    自定义消息数据模型

    joinHistoryList

    是否加入历史聊天记录,加入为YES,不加入为NO

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送文本消息,默认不需要回调msgId

    Declaration

    Objective-C

    - (BOOL)sendSpeakMessage:(nonnull PLVSpeakMessage *)message;

    Swift

    func send(_ message: PLVSpeakMessage) -> Bool

    Parameters

    message

    文本消息数据模型

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送文本消息,发送成功执行callback

    Declaration

    Objective-C

    - (BOOL)sendSpeakMessage:(nonnull PLVSpeakMessage *)message
                    callback:(void (^_Nullable)(NSString *_Nonnull))callback;

    Swift

    func send(_ message: PLVSpeakMessage, callback: ((String) -> Void)? = nil) -> Bool

    Parameters

    message

    文本消息数据模型

    callback

    回调

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送回复消息

    Declaration

    Objective-C

    - (BOOL)sendQuoteMessage:(nonnull PLVQuoteMessage *)message;

    Swift

    func send(_ message: PLVQuoteMessage) -> Bool

    Parameters

    message

    回复消息数据模型

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送回复消息,发送成功执行callback

    Declaration

    Objective-C

    - (BOOL)sendQuoteMessage:(nonnull PLVQuoteMessage *)message
                    callback:(void (^_Nullable)(NSString *_Nonnull))callback;

    Swift

    func send(_ message: PLVQuoteMessage, callback: ((String) -> Void)? = nil) -> Bool

    Parameters

    message

    回复消息数据模型

    callback

    回调

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送图片消息 发送结果通过delegate通知

    Note

    如果使用message.processImageData进行上传,数据不允许大于2mb

    Declaration

    Objective-C

    - (void)sendImageMessage:(nonnull PLVImageMessage *)message;

    Swift

    func send(_ message: PLVImageMessage)

    Parameters

    message

    图片消息数据模型

  • 发送图片表情消息

    Declaration

    Objective-C

    - (BOOL)sendImageEmotionMessage:(nonnull PLVImageEmotionMessage *)message;

    Swift

    func send(_ message: PLVImageEmotionMessage) -> Bool

    Parameters

    message

    图片表情消息数据模型 根据sendState状态判断发送结果

  • 发送点赞,新增点赞次数为1 调用该方法之后,内部会进行数据累计,每5s发送一次socket消息,以及发送一次http统计

    Declaration

    Objective-C

    - (void)sendLikeEvent;

    Swift

    func sendLikeEvent()
  • 发送点赞 调用该方法之后,内部会进行数据累计,每5s发送一次socket消息,以及发送一次http统计

    Declaration

    Objective-C

    - (void)sendLikeEvent:(NSInteger)count;

    Swift

    func sendLikeEvent(_ count: Int)

    Parameters

    count

    新增点赞次数

  • 发送禁言消息,讲师端专用接口

    Declaration

    Objective-C

    - (BOOL)sendBandMessage:(BOOL)banned bannedUserId:(nonnull NSString *)userId;

    Swift

    func sendBandMessage(_ banned: Bool, bannedUserId userId: String) -> Bool

    Parameters

    banned

    YES-禁言 NO-取消禁言

    userId

    被禁言/取消禁言的用户ID

  • 发送踢人消息,讲师端专用接口

    Declaration

    Objective-C

    - (BOOL)sendKickMessageWithUserId:(nonnull NSString *)userId;

    Swift

    func sendKickMessage(withUserId userId: String) -> Bool

    Parameters

    userId

    被踢出的用户ID

  • 发送取消踢出(移入)消息,讲师端专用接口

    Declaration

    Objective-C

    - (BOOL)sendUnkickMessageWithUserId:(nonnull NSString *)userId;

    Swift

    func sendUnkickMessage(withUserId userId: String) -> Bool

    Parameters

    userId

    被移入的用户ID

  • 发送全体禁言、解禁消息,讲师端专用接口

    Declaration

    Objective-C

    - (BOOL)sendCloseRoom:(BOOL)closeRoom;

    Swift

    func sendCloseRoom(_ closeRoom: Bool) -> Bool

    Parameters

    closeRoom

    YES:全体禁言;NO:全体解禁

  • 发送回复消息,发送成功执行callback

    Declaration

    Objective-C

    - (BOOL)sendChangeNickname:(nonnull NSString *)nickname;

    Swift

    func sendChangeNickname(_ nickname: String) -> Bool

    Parameters

    nickname

    修改后昵称

    Return Value

    发送结果,成功为YES,失败为NO

  • 发送上墙/下墙消息

    Declaration

    Objective-C

    - (BOOL)sendPinMessageWithMsgId:(NSString *_Nullable)msgId toTop:(BOOL)toTop;

    Swift

    func sendPinMessage(withMsgId msgId: String?, toTop: Bool) -> Bool

    Parameters

    msgId

    需要上墙/下墙消息的id

    toTop

    YES:上墙;NO:下墙

    Return Value

    发送结果,成功为YES,失败为NO

  • 开启管理器

    Declaration

    Objective-C

    - (void)setupWithDelegate:(nonnull id<PLVChatroomManagerProtocol>)delegate
                    channelId:(nonnull NSString *)channelId;

    Swift

    func setup(withDelegate delegate: PLVChatroomManagerProtocol, channelId: String)

    Parameters

    delegate

    用于设置代理,监听socket消息等

  • 消息overLen字段为YES时,使用该方法获取超长消息

    Declaration

    Objective-C

    - (BOOL)overLengthSpeakMessageWithMsgId:(nonnull NSString *)msgId
                                   callback:(nonnull void (^)(NSString *_Nullable))
                                                callback;

    Swift

    func overLengthSpeakMessage(withMsgId msgId: String, callback: @escaping (String?) -> Void) -> Bool

    Return Value

    YES-消息发出;NO-消息未发出,即callback不会执行

  • 退出前调用,用于资源释放、状态位清零

    Declaration

    Objective-C

    - (void)destroy;

    Swift

    func destroy()