PLVSocketManager

@interface PLVSocketManager : NSObject

socket 管理类

Readwrite Property

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

    Declaration

    Objective-C

    @property (nonatomic, assign, unsafe_unretained, readwrite) BOOL allowChildRoom;

    Swift

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

    Declaration

    Objective-C

    @property (nonatomic, assign, unsafe_unretained, readwrite) BOOL getCup;

    Swift

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

    Declaration

    Objective-C

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

    Swift

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

    Declaration

    Objective-C

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

    Swift

    var listeningEvents: Set<String>? { get set }

Readonly Property

  • socket 的连接状态

    Declaration

    Objective-C

    @property (nonatomic, assign, unsafe_unretained, readonly)
        PLVSocketConnectStatus status;

    Swift

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

    Declaration

    Objective-C

    @property (nonatomic, assign, unsafe_unretained, readonly) BOOL login;

    Swift

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

    Declaration

    Objective-C

    @property (nonatomic, assign, unsafe_unretained, 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, assign, unsafe_unretained, 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 }

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是否尚未初始化

  • 登出时调用

    Declaration

    Objective-C

    - (void)logout;

    Swift

    func logout()

Multicast

  • 增加PLVSocketManagerProtocol协议的监听者

    Declaration

    Objective-C

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

    Swift

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

    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