从 Zoom iOS SDK 自定义会议实施中获取当前活动用户

Get Current Active user from the Zoom iOS SDK Custom Meeting implementation

我已经实施了 Zoom iOS SDK 以使用自定义 UI。一切正常,但我一直无法弄清楚如何获取当前活动用户的用户 ID。

我已经实现了下面的委托方法,它告诉了当前活跃的视频用户,但不幸的是它显示了会议中除我之外的所有其他参与者。

func onSinkMeetingActiveVideo(_ userID: UInt) {
    if let service = MobileRTC.shared().getMeetingService(), let username = service.userInfo(byID: userID)?.userName {
        print("\(#function) : \(userID) : \(username)")
    }
}

即使是我在说话,我也需要知道谁是当前活跃用户。

我根据文档,为了获取当前活动视频用户信息,您应该使用以下内容class:MobileRTCMeetingUserInfo。

检查视频状态的文档class MobileRTCVideoStatus:https://marketplacefront.zoom.us/sdk/meeting/ios/interface_mobile_r_t_c_video_status.html

您会看到它与 MobileRTCMeetingUserInfo 相关: https://marketplacefront.zoom.us/sdk/meeting/ios/interface_mobile_r_t_c_meeting_user_info.html

在那class你会找到当前用户的信息。

希望你能解决你的问题! 问候! 加斯顿·蒙特斯。

您可以从会议服务 MobileRTCMeetingService 中检索此类信息。

MobileRTCMeetingService

func getActiveUserId() -> UInt? {
    if let meetingService = MobileRTC.shared().getMeetingService() {
        return meetingService.activeUserID()
    }
    return nil
}

额外说明:在 Zoom 中还有固定用户的概念,它会覆盖活动视频单元格中的活动用户。 可以通过这种方式检索固定的用户 ID:

func getPinnedUserId() -> UInt? {
    if let meetingService = MobileRTC.shared().getMeetingService(), let userList = meetingService.getInMeetingUserList(){
        for userId in userList {
            if let userId = userId as? UInt, meetingService.isUserPinned(userId) {
                return userId
            }
        }
        return nil
    }
    return nil
}

因此,为了确定哪个是活动视频单元格中视频的用户 ID,您必须检查两者,优先考虑固定用户。

let currentVideoUserId = getPinnedUserId() ?? getActiveUserId()

在会议期间,您永远不会成为您自己的视频单元中的活动用户,因为即使您正在发言,您也会继续在活动视频单元中看到其他人。

另一方面,如果您有兴趣知道谁在说话,那么您必须检索用户列表并检查 audioStatus [MobileRTCAudioStatus]。

MobileRTCAudioStatus

MobileRTCMeetingUserInfo

请注意,您可以有多个用户同时发言。

如果您对主动发言者用户感兴趣,还有另一个有用的回调:它是 MobileRTCVideoServiceDelegate 中的 onSinkMeetingActiveVideoForDeck

MobileRTCVideoServiceDelegate

根据文档,每次有新发言人时都应该触发它。它被 ZOOM UI 用于更改当前发言人用户周围的黄色框。