PLVLinkMicManager

Objective-C

@interface PLVLinkMicManager : NSObject

Swift

class PLVLinkMicManager : NSObject

连麦管理器

可配置项

  • delegate

    Declaration

    Objective-C

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

    Swift

    weak var delegate: PLVLinkMicManagerDelegate? { get set }
  • 连麦场景类型

    Declaration

    Objective-C

    @property (nonatomic) PLVLinkMicSceneType linkMicType;

    Swift

    var linkMicType: PLVLinkMicSceneType { get set }
  • 连麦类型 (YES:音频连麦 NO:视频连麦)

    Declaration

    Objective-C

    @property (nonatomic) BOOL linkMicOnAudio;

    Swift

    var linkMicOnAudio: Bool { get set }
  • 本地用户是否为参与者

    Declaration

    Objective-C

    @property (nonatomic) BOOL viewer;

    Swift

    var viewer: Bool { get set }
  • 参与者 是否被允许上麦

    Declaration

    Objective-C

    @property (nonatomic) BOOL viewerAllow;

    Swift

    var viewerAllow: Bool { get set }
  • 麦克风 是否默认开启

    Note

    仅在 [joinRtcChannelWithChannelId:] 方法调用前设置有效 YES:开启 NO:关闭;默认值 YES

    Declaration

    Objective-C

    @property (nonatomic) BOOL micDefaultOpen;

    Swift

    var micDefaultOpen: Bool { get set }
  • 摄像头 是否默认开启

    Note

    仅在 [joinRtcChannelWithChannelId:] 方法调用前设置有效 YES:开启 NO:关闭;默认值 NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL cameraDefaultOpen;

    Swift

    var cameraDefaultOpen: Bool { get set }
  • 摄像头 是否默认前置

    Note

    仅在 [joinRtcChannelWithChannelId:] 方法调用前设置有效 YES:前置 NO:后置;默认值 YES

    Declaration

    Objective-C

    @property (nonatomic) BOOL cameraDefaultFront;

    Swift

    var cameraDefaultFront: Bool { get set }
  • [重连时间] 单次重连时长

    Note

    单位秒,带小数,可精确至毫秒; 一次连麦中,可能有多次重连,此属性为 单次重连时长;

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval reconnectingThisTimeDuration;

    Swift

    var reconnectingThisTimeDuration: TimeInterval { get }
  • [重连时间] 全部重连累计时长

    Note

    单位秒,带小数,可精确至毫秒; 一次连麦中,可能有多次重连,此属性为 全部重连累计时长(包括当前此刻,无论是否 ’重连中‘ 或 ’重连结束‘);

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval reconnectingTotalDuration;

    Swift

    var reconnectingTotalDuration: TimeInterval { get }
  • 当前 流清晰度 (默认值:PLVBLinkMicStreamQuality180P)

    Declaration

    Objective-C

    @property (nonatomic, readonly) int streamQuality;

    Swift

    var streamQuality: Int32 { get }
  • 连麦时视频流宽高比 (默认值:PLVBLinkMicStreamScale16_9)

    Note

    仅支持在连麦前配置

    Declaration

    Objective-C

    @property (nonatomic) int streamScale;

    Swift

    var streamScale: Int32 { get set }

基础信息

  • 频道号ID(房间号)

    Declaration

    Objective-C

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

    Swift

    var channelId: String { get }
  • 本地用户(自己)连麦ID

    Declaration

    Objective-C

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

    Swift

    var userLinkMicId: String { get }

状态相关

  • 当前是否已加入RTC频道

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL hadJoinedRTC;

    Swift

    var hadJoinedRTC: Bool { get }
  • 当前 本地用户网络状态

    Declaration

    Objective-C

    @property (nonatomic, readonly) int networkQuality;

    Swift

    var networkQuality: Int32 { get }
  • 当前 已订阅远端流是否需要被禁用 (“禁用”指本地音视频;该值仅部分RTC类型下有意义)

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL subscribedRemoteStreamNeedMute;

    Swift

    var subscribedRemoteStreamNeedMute: Bool { get }

[ 方法 ]

  • 创建连麦管理器

    Note

    由外部根据频道信息获取到rtc类型值,并在调用此方法时传入;若传入的rtcType值无效,将创建失败,并返回 nil。

    Declaration

    Objective-C

    + (nonnull instancetype)linkMicManagerWithRTCType:(nonnull NSString *)rtcType;

    Swift

    convenience init(rtcType: String)

    Parameters

    rtcType

    rtc类型值

  • 更新互动学堂 RTC Token

    Note

    目前不支持声网,声网token过期会自动调用‘-updateLinkMicTokenWith:completion:'更新token

    Declaration

    Objective-C

    - (void)updateVClassRTCTokenWith:(nonnull PLVLinkMicGetTokenModel *)model
                          completion:(nullable void (^)(BOOL))completion;

    Swift

    func updateVClassRTCToken(with model: PLVLinkMicGetTokenModel) async -> Bool

    Parameters

    model

    连麦GetToken模型

    completion

    更新完成回调

  • 更新连麦Token

    Note

    加入RTC连麦频道前,必须调用此方法更新连麦Token。更新完成将通过 [completion:] 进行回调。 若回调 NO 则表示更新失败,此时不允许加入RTC连麦频道,调用 [joinRtcChannelWithChannelId:] 将失败。

    Declaration

    Objective-C

    - (void)updateLinkMicTokenWith:(nonnull PLVLinkMicGetTokenModel *)model
                        completion:(nullable void (^)(BOOL))completion;

    Swift

    func updateLinkMicToken(with model: PLVLinkMicGetTokenModel) async -> Bool

    Parameters

    model

    更新连麦Token所需数据模型

    completion

    更新完成回调 (YES: 更新成功, NO: 更新失败)

  • 加入RTC连麦频道

    Note

    成功加入将收到 [joinRTCChannelComplete] 回调;调用该方法,将立刻收到返回的 int 值, 小于0表示失败,等于0表示成功。

    Declaration

    Objective-C

    - (int)joinRtcChannelWithChannelId:(nonnull NSString *)channelId
                         userLinkMicId:(nonnull NSString *)userLinkMicId;

    Swift

    func joinRtcChannel(withChannelId channelId: String, userLinkMicId: String) -> Int32

    Parameters

    channelId

    频道号ID

    userLinkMicId

    用户连麦ID

  • 退出RTC连麦频道

    Note

    退出RTC连麦频道,成功退出将收到 [leaveRTCChannelComplete:] 回调;

    Declaration

    Objective-C

    - (void)leaveRtcChannel;

    Swift

    func leaveRtcChannel()
  • 配置讲师连麦ID,用于讲师连麦ID不为频道号时

    Declaration

    Objective-C

    - (void)setTeacherUserId:(nonnull NSString *)teacherId;

    Swift

    func setTeacherUserId(_ teacherId: String)
  • 角色切换

    Declaration

    Objective-C

    - (void)switchClientRoleTo:(id)role;

    Swift

    func switchClientRole(to role: Any!)
  • 添加RTC画面

    Declaration

    Objective-C

    - (void)subscribeStreamWithRTCUserId:(nonnull NSString *)rtcUserId
                            renderOnView:(id)renderSuperView
                               mediaType:(id)mediaType;

    Swift

    func subscribeStream(withRTCUserId rtcUserId: String, renderOnView renderSuperView: Any!, mediaType: Any!)
  • 根据流订阅方式 添加RTC画面

    Declaration

    Objective-C

    - (void)subscribeStreamWithRTCUserId:(nonnull NSString *)rtcUserId
                            renderOnView:(id)renderSuperView
                               mediaType:(id)mediaType
                           subscribeMode:(id)subscribeMode;

    Swift

    func subscribeStream(withRTCUserId rtcUserId: String, renderOnView renderSuperView: Any!, mediaType: Any!, subscribeMode: Any!)
  • 将某位用户的流渲染 进行移除

    Declaration

    Objective-C

    - (void)unsubscribeStreamWithRTCUserId:(nonnull NSString *)rtcUserId;

    Swift

    func unsubscribeStream(withRTCUserId rtcUserId: String)
  • 根据流订阅方式 将某位用户的流渲染 进行移除

    Declaration

    Objective-C

    - (void)unsubscribeStreamWithRTCUserId:(nonnull NSString *)rtcUserId
                             subscribeMode:(id)subscribeMode;

    Swift

    func unsubscribeStream(withRTCUserId rtcUserId: String, subscribeMode: Any!)
  • Undocumented

    Declaration

    Objective-C

    - (void)switchSubscribeStreamMediaTypeWithRTCUserId:(NSString *)rtcUserId mediaType:(PLVBRTCSubscribeStreamMediaType)toMediaType;

    Swift

    func switchSubscribeStreamMediaType(withRTCUserId rtcUserId: String, mediaType toMediaType: Any!)
  • 禁用或启用 全部已订阅远端流 的音视频

    Note

    仅在部分RTC类型下生效; 调用后,将改变 [subscribedRemoteStreamNeedMute] 值;未来有新流被订阅时,也将根据 [subscribedRemoteStreamNeedMute] 值同步生效处理; 该操作为本地操作,不会触发RTC房间内其他成员收到回调;

    Declaration

    Objective-C

    - (void)muteSubscribedRemoteStreamInLocalWithMute:(BOOL)mute;

    Swift

    func muteSubscribedRemoteStreamInLocal(withMute mute: Bool)

    Parameters

    mute

    禁用或启用

  • 连麦的本地观众用户第一画面发生改变

    Declaration

    Objective-C

    - (void)linkMicLocalUserFirstScreenDidChanged:(BOOL)firstScreen;

    Swift

    func linkMicLocalUserFirstScreenDidChanged(_ firstScreen: Bool)
  • 检测当前连麦状态

    Declaration

    Objective-C

    + (void)requestLinkMicStatusWithChannelId:(nonnull NSString *)channelId
                                   completion:(nonnull void (^)(NSString *_Nonnull,
                                                                NSString *_Nonnull))
                                                  completion
                                      failure:(nonnull void (^)(NSError *_Nonnull))
                                                  failure;

    Swift

    class func requestLinkMicStatus(withChannelId channelId: String, completion: @escaping (String, String) -> Void, failure: @escaping (Error) -> Void)

本地硬件管理

  • 配置 本地视频预览画面 的镜像类型

    Declaration

    Objective-C

    - (void)setupLocalVideoPreviewMirrorMode:(id)mirrorMode;

    Swift

    func setupLocalVideoPreviewMirrorMode(_ mirrorMode: Any!)

    Parameters

    mirrorMode

    本地视频预览画面的镜像类型 (默认值:PLVBRTCVideoMirrorMode_Auto)

  • 切换 本地用户 的前后置摄像头

    Declaration

    Objective-C

    - (void)switchLocalUserCamera:(BOOL)frontCamera;

    Swift

    func switchLocalUserCamera(_ frontCamera: Bool)

    Parameters

    frontCamera

    切换为 前置或后置 摄像头 (YES:前置;NO:后置)

  • 开启或关闭 本地用户 的摄像头

    Note

    开启:采集数据、渲染预览、取消停止本地视频流推送;关闭:停止采集数据、停止渲染预览、停止本地视频流推送; 将触发RTC房间内其他成员,收到回调;

    Declaration

    Objective-C

    - (void)openLocalUserCamera:(BOOL)openCamera;

    Swift

    func openLocalUserCamera(_ openCamera: Bool)

    Parameters

    openCamera

    开启或关闭 摄像头 (YES:开启;NO:关闭)

  • 开启或关闭 本地用户 的麦克风

    Note

    开启:采集数据、取消停止本地音频流推送;关闭:停止采集数据、停止本地音频流推送; 将触发RTC房间内其他成员,收到回调;

    Declaration

    Objective-C

    - (void)openLocalUserMic:(BOOL)openMic;

    Swift

    func openLocalUserMic(_ openMic: Bool)

    Parameters

    openMic

    开启或关闭 麦克风 (YES:开启;NO:关闭)

远端连麦用户管理

  • 允许远端用户上麦

    Note

    该方法 仅用于互动学堂 及 仅面向 ‘远端用户’。

    Declaration

    Objective-C

    - (void)joinResponseWithRemoteUserDict:(nonnull NSDictionary *)userDict
                                needAnswer:(BOOL)needAnswer
                                 completed:(nonnull void (^)(BOOL))completedBlock;

    Swift

    func joinResponse(withRemoteUserDict userDict: [AnyHashable : Any], needAnswer: Bool, completed completedBlock: @escaping (Bool) -> Void)

    Parameters

    userDict

    用户数据字典

    needAnswer

    是否需要答复(主动操作上麦为YES,被动操作上麦为NO)

    completedBlock

    请求发送结果Block

  • 挂断远端用户的连麦

    Note

    目前仅用于挂断视频连麦

    Declaration

    Objective-C

    - (void)closeLinkMicWithRemoteUserId:(nonnull NSString *)userId
                               completed:(void (^_Nullable)(BOOL))completedBlock;

    Swift

    func closeLinkMic(withRemoteUserId userId: String, completed completedBlock: ((Bool) -> Void)? = nil)

    Parameters

    userId

    连麦用户ID

    completedBlock

    请求发送结果Block

  • 禁用或取消禁用‘远端用户麦克风’

    Note

    该方法 仅用于互动学堂 及 仅面向 ‘远端用户’。

    Declaration

    Objective-C

    - (void)muteMicrophoneWithRemoteUserId:(nonnull NSString *)userId
                                      mute:(BOOL)mute
                                 completed:(void (^_Nullable)(BOOL))completedBlock;

    Swift

    func muteMicrophone(withRemoteUserId userId: String, mute: Bool, completed completedBlock: ((Bool) -> Void)? = nil)

    Parameters

    userId

    用户ID

    mute

    YES-禁用;NO-取消禁用

    completedBlock

    请求发送结果Block

  • 禁用或取消禁用‘远端用户摄像头’

    Note

    该方法 仅用于互动学堂 及 仅面向 ‘远端用户’。

    Declaration

    Objective-C

    - (void)muteCameraWithRemoteUserId:(nonnull NSString *)userId
                                  mute:(BOOL)mute
                             completed:(void (^_Nullable)(BOOL))completedBlock;

    Swift

    func muteCamera(withRemoteUserId userId: String, mute: Bool, completed completedBlock: ((Bool) -> Void)? = nil)

    Parameters

    userId

    用户ID

    mute

    YES-禁用;NO-取消禁用

    completedBlock

    请求发送结果Block

流管理

  • 配置 流清晰度

    Note

    该方法 仅用于互动学堂 及 仅面向 ‘远端用户’。

    Declaration

    Objective-C

    - (void)setupStreamQuality:(id)streamQuality;

    Swift

    func setupStreamQuality(_ streamQuality: Any!)

    Parameters

    streamQuality

    流清晰度