PLVSocketManager

Objective-C

@interface PLVSocketManager : NSObject

Swift

class PLVSocketManager : NSObject

socket 管理类

Readwrite Property

  • 是否允许使用分房间功能,优先级高于后台的配置 默认为NO,不允许

    Declaration

    Objective-C

    @property (nonatomic) BOOL allowChildRoom;

    Swift

    var allowChildRoom: Bool { get set }
  • 是否开启奖杯功能,默认关闭

    Declaration

    Objective-C

    @property (nonatomic) BOOL getCup;

    Swift

    var getCup: Bool { get set }
  • 配置私有域名 如果与默认域名相同,会自行忽略,为空使用默认域名

    Declaration

    Objective-C

    @property (nonatomic, strong) NSString *_Nullable chatDomain;

    Swift

    var chatDomain: String? { get set }
  • 可用于增加socket监听事件,为空则只监听默认事件

    Declaration

    Objective-C

    @property (nonatomic, strong) NSSet<NSString *> *_Nullable listeningEvents;

    Swift

    var listeningEvents: Set<String>? { get set }
  • 聊天室消息阈值开关,默认为关

    Declaration

    Objective-C

    @property (nonatomic) BOOL chatMessageOnceControlEnabled;

    Swift

    var chatMessageOnceControlEnabled: Bool { get set }
  • 聊天室阈值大小,默认为10

    Declaration

    Objective-C

    @property (nonatomic) NSInteger chatMessageMaxLengthOnce;

    Swift

    var chatMessageMaxLengthOnce: Int { get set }

互动学堂独有属性

  • 是否是互动学堂等vclass域名的场景,默认为 NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL vclassDomain;

    Swift

    var vclassDomain: Bool { get set }
  • 课程码,学生端使用课程码登录时该属性必须设置

    Declaration

    Objective-C

    @property (nonatomic, strong) NSString *_Nullable courseCode;

    Swift

    var courseCode: String? { get set }
  • 课节ID,学生端使用课节ID登录时该属性必须设置

    Declaration

    Objective-C

    @property (nonatomic, strong) NSString *_Nullable lessonId;

    Swift

    var lessonId: String? { get set }

Readonly Property

  • socket 的连接状态

    Declaration

    Objective-C

    @property (nonatomic, readonly) PLVSocketConnectStatus status;

    Swift

    var status: PLVSocketConnectStatus { get }
  • 是否登录成功

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL login;

    Swift

    var login: Bool { get }
  • 后端是否开启分房间功能 需要childRoomEnable为YES且allowChildRoom也为YES,才会真正开启分房间功能

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL childRoomEnable;

    Swift

    var childRoomEnable: Bool { get }
  • 房间号

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nonnull roomId;

    Swift

    var roomId: String { get }
  • 登录成功后返回的 ack 字符串

    Declaration

    Objective-C

    @property (nonatomic, copy, readonly) NSString *_Nonnull loginSuccessAckString;

    Swift

    var loginSuccessAckString: String { get }
  • socket ID

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nonnull socketId;

    Swift

    var socketId: String { get }
  • 聊天室用户类型

    Declaration

    Objective-C

    @property (nonatomic, readonly) PLVSocketUserType userType;

    Swift

    var userType: PLVSocketUserType { get }
  • 聊天室用户类型字符串

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nonnull userTypeString;

    Swift

    var userTypeString: String { get }
  • 聊天室用户连麦ID

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nonnull linkMicId;

    Swift

    var linkMicId: String { get }
  • 聊天室用户ID

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nonnull viewerId;

    Swift

    var viewerId: String { get }
  • 聊天室用户昵称

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nonnull viewerName;

    Swift

    var viewerName: String { get }
  • 聊天室用户头像url

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nonnull avatarUrl;

    Swift

    var avatarUrl: String { get }
  • 聊天室用户自定义头衔(可为空)

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nullable actor;

    Swift

    var actor: String? { get }
  • 聊天室用户自定义参数4(可为空)

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString *_Nullable liveParam4;

    Swift

    var liveParam4: String? { get }
  • Undocumented

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) NSString * _Nullable chatToken

    Swift

    var chatToken: String? { get }

API

  • 单例方法

    Declaration

    Objective-C

    + (nonnull instancetype)sharedManager;

    Swift

    class func shared() -> Self
  • 登录方法,调用该方法后,自动开始获取chatToken,连接socket

    Declaration

    Objective-C

    - (BOOL)loginWithChannelId:(nonnull NSString *)channelId
                      viewerId:(nonnull NSString *)viewerId
                    viewerName:(nonnull NSString *)viewerName
                     avatarUrl:(nonnull NSString *)avatarUrl
                         actor:(NSString *_Nullable)actor
                      userType:(PLVSocketUserType)userType;

    Swift

    func login(withChannelId channelId: String, viewerId: String, viewerName: String, avatarUrl: String, actor: String?, userType: PLVSocketUserType) -> Bool

    Parameters

    channelId

    频道号

    viewerId

    聊天室用户ID(可用于区分用户的唯一ID)

    viewerName

    聊天室用户昵称

    avatarUrl

    聊天室用户头像url

    actor

    聊天室用户自定义头衔(可为空)

    userType

    聊天室用户类型枚举值

    Return Value

    YES-正常登录,NO-检查参数是否有问题或者SDK是否尚未初始化

  • socket 连接成功之后发送 login 消息进行登录

    Note

    这个方法仅适用于 socket 连接且登录成功之后调用

    Declaration

    Objective-C

    - (BOOL)emitLoginEvent;

    Swift

    func emitLoginEvent() -> Bool
  • 登录方法,调用该方法后,可传递自定义参数并自动开始获取chatToken,连接socket

    Declaration

    Objective-C

    - (BOOL)loginWithChannelId:(nonnull NSString *)channelId
                      viewerId:(nonnull NSString *)viewerId
                    viewerName:(nonnull NSString *)viewerName
                     avatarUrl:(nonnull NSString *)avatarUrl
                    extraParam:(NSDictionary *_Nullable)extraParam
                         actor:(NSString *_Nullable)actor
                      userType:(PLVSocketUserType)userType;

    Swift

    func login(withChannelId channelId: String, viewerId: String, viewerName: String, avatarUrl: String, extraParam: [AnyHashable : Any]?, actor: String?, userType: PLVSocketUserType) -> Bool

    Parameters

    channelId

    频道号

    viewerId

    聊天室用户ID(可用于区分用户的唯一ID)

    viewerName

    聊天室用户昵称

    avatarUrl

    聊天室用户头像url

    extraParam

    聊天室自定义参数字典(可为空)

    actor

    聊天室用户自定义头衔(可为空)

    userType

    聊天室用户类型枚举值

    Return Value

    YES-正常登录,NO-检查参数是否有问题或者SDK是否尚未初始化

  • 登出时调用

    Declaration

    Objective-C

    - (void)logout;

    Swift

    func logout()
  • 动态添加socket监听事件,注意每个相同事件只能添加一次 目前只在【互动模块】需要使用

    Declaration

    Objective-C

    - (void)addObserveSocketEvent:(nonnull NSString *)event;

    Swift

    func addObserveSocketEvent(_ event: String)

    Parameters

    event

    事件名称

Multicast

  • 增加PLVSocketManagerProtocol协议的监听者

    Declaration

    Objective-C

    - (void)addDelegate:(nonnull id<PLVSocketManagerProtocol>)delegate
          delegateQueue:(nonnull dispatch_queue_t)delegateQueue;

    Swift

    func addDelegate(_ delegate: PLVSocketManagerProtocol, delegateQueue: dispatch_queue_t)

    Parameters

    delegate

    待增加的监听者

    delegateQueue

    执行回调的队列

  • 移除PLVSocketManagerProtocol协议的监听者

    Declaration

    Objective-C

    - (void)removeDelegate:(nonnull id<PLVSocketManagerProtocol>)delegate;

    Swift

    func removeDelegate(_ delegate: PLVSocketManagerProtocol)

    Parameters

    delegate

    待移除的监听者

  • 移除PLVSocketManagerProtocol协议的所有监听者

    Declaration

    Objective-C

    - (void)removeAllDelegates;

    Swift

    func removeAllDelegates()

Message Emit

  • 提交 socket “message” 事件消息

    Declaration

    Objective-C

    - (BOOL)emitMessage:(nonnull id)content;

    Swift

    func emitMessage(_ content: Any) -> Bool

    Parameters

    content

    消息内容,NSString 或 NSDictionary 类型

    Return Value

    成功-YES 失败-NO

  • 提交 socket “message” 事件消息

    Declaration

    Objective-C

    - (BOOL)emitMessage:(nonnull id)content
                timeout:(double)timeout
               callback:(nonnull void (^)(NSArray *_Nonnull))callback;

    Swift

    func emitMessage(_ content: Any, timeout: Double, callback: @escaping ([Any]) -> Void) -> Bool

    Parameters

    content

    消息内容,NSString 或 NSDictionary 类型

    timeout

    回调超时等待,默认 0

    callback

    回调

    Return Value

    成功-YES 失败-NO

  • 提交 socket 特定事件消息

    Declaration

    Objective-C

    - (BOOL)emitEvent:(nonnull NSString *)event content:(nonnull id)content;

    Swift

    func emitEvent(_ event: String, content: Any) -> Bool

    Parameters

    event

    事件名

    content

    消息内容,NSString 或 NSDictionary 类型

    Return Value

    成功-YES 失败-NO

  • 提交 socket 特定事件消息

    Declaration

    Objective-C

    - (BOOL)emitEvent:(nonnull NSString *)event
              content:(nonnull id)content
              timeout:(double)timeout
             callback:(nonnull void (^)(NSArray *_Nonnull))callback;

    Swift

    func emitEvent(_ event: String, content: Any, timeout: Double, callback: @escaping ([Any]) -> Void) -> Bool

    Parameters

    event

    事件名

    content

    消息内容,NSString 或 NSDictionary 类型

    timeout

    回调超时等待,默认 0

    callback

    回调

    Return Value

    成功-YES 失败-NO

  • 发送'TEACHER_SET_PERMISSION’ socket消息

    Declaration

    Objective-C

    - (BOOL)emitPermissionMessageWithUserId:(nonnull NSString *)userId
                                       type:(PLVSocketPermissionType)type
                                     status:(BOOL)status;

    Swift

    func emitPermissionMessage(withUserId userId: String, type: PLVSocketPermissionType, status: Bool) -> Bool

    Parameters

    userId

    用户Id

    type

    权限类型

    status

    YES:授予权限,NO:移除权限

    Return Value

    成功-YES 失败-NO

  • 发送'TEACHER_SET_PERMISSION’ socket消息

    Declaration

    Objective-C

    - (BOOL)emitPermissionMessageWithUserId:(nonnull NSString *)userId
                                       type:(PLVSocketPermissionType)type
                                     status:(BOOL)status
                                    timeout:(double)timeout
                                   callback:(void (^_Nullable)(NSArray *_Nonnull))
                                                callback;

    Swift

    func emitPermissionMessage(withUserId userId: String, type: PLVSocketPermissionType, status: Bool, timeout: Double, callback: (([Any]) -> Void)? = nil) -> Bool

    Parameters

    userId

    用户Id

    type

    权限类型

    status

    YES:授予权限,NO:移除权限

    timeout

    回调超时等待,默认 0

    callback

    回调

    Return Value

    成功-YES 失败-NO

  • 发送'TEACHER_SET_PERMISSION’ socket消息挂断全部用户的连麦

    Declaration

    Objective-C

    - (BOOL)emitPermissionMessageForCloseAllLinkMicWithTimeout:(double)timeout
                                                      callback:
                                                          (void (^_Nullable)(
                                                              NSArray *_Nonnull))
                                                              callback;

    Swift

    func emitPermissionMessageForCloseAllLinkMic(withTimeout timeout: Double, callback: (([Any]) -> Void)? = nil) -> Bool

    Parameters

    timeout

    回调超时等待,默认 0

    callback

    回调

    Return Value

    成功-YES 失败-NO