从 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 中检索此类信息。
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]。
请注意,您可以有多个用户同时发言。
如果您对主动发言者用户感兴趣,还有另一个有用的回调:它是 MobileRTCVideoServiceDelegate 中的 onSinkMeetingActiveVideoForDeck
根据文档,每次有新发言人时都应该触发它。它被 ZOOM UI 用于更改当前发言人用户周围的黄色框。
我已经实施了 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 中检索此类信息。
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]。
请注意,您可以有多个用户同时发言。
如果您对主动发言者用户感兴趣,还有另一个有用的回调:它是 MobileRTCVideoServiceDelegate 中的 onSinkMeetingActiveVideoForDeck
根据文档,每次有新发言人时都应该触发它。它被 ZOOM UI 用于更改当前发言人用户周围的黄色框。