如何在OpenTok中获取并展示视频通话参会人员列表(iOS Swift场景)
OpenTok iOS SDK 获取视频通话参会人员名单方案
核心逻辑
OpenTok 中所有加入会话的用户都会对应一个 OTConnection 对象,当前活跃的 OTSession 实例会实时维护所有在线连接的列表,直接从该实例中提取数据即可,无需额外调用后端接口。
实现步骤
1. 维护会话实例
集成视频功能时你已经完成了 OTSession 的初始化,建议将其声明为当前视图控制器的全局属性,方便后续取用:
// 全局持有当前视频会话实例 var currentSession: OTSession?
2. 点击「参与者」按钮时提取名单
从 currentSession 中取已连接的用户数据,按需解析后渲染列表即可:
// 参与者按钮点击事件 @IBAction func tapParticipantButton(_ sender: UIButton) { guard let session = currentSession, let remoteConnections = session.connections as? [OTConnection] else { return } var participantList: [ParticipantInfo] = [] // 先添加当前用户自身信息(session.connections默认不包含本地连接) if let selfConnection = session.connection { let selfInfo = convertConnectionToUserModel(connection: selfConnection, isLocalUser: true) participantList.append(selfInfo) } // 添加其他参会者信息 for remoteConn in remoteConnections { guard remoteConn.connectionId != session.connection?.connectionId else { continue } let userInfo = convertConnectionToUserModel(connection: remoteConn, isLocalUser: false) participantList.append(userInfo) } // 此处调用你自己的列表弹窗逻辑展示participantList即可 showParticipantListView(dataList: participantList) } // 自定义工具方法:将OTConnection转换为你的业务用户模型 func convertConnectionToUserModel(connection: OTConnection, isLocalUser: Bool) -> ParticipantInfo { var userModel = ParticipantInfo() userModel.connectionId = connection.connectionId userModel.isCurrentUser = isLocalUser // 解析用户自定义信息:生成OpenTok Token时传入的自定义数据(如用户ID、昵称)会存在connection.data中 if let userDataStr = connection.data, let jsonData = userDataStr.data(using: .utf8), let userDict = try? JSONSerialization.jsonObject(with: jsonData) as? [String: Any] { userModel.userId = userDict["user_id"] as? String userModel.nickname = userDict["nickname"] as? String userModel.avatarUrl = userDict["avatar"] as? String } return userModel }
优化建议
- 可以通过监听
OTSessionDelegate的回调实时更新本地缓存的参会者列表,避免每次点击按钮都重新遍历:- 有新用户加入会话:
session:didConnect: - 有用户离开会话:
session:didDisconnect:
- 有新用户加入会话:
- 取数据前请确保会话已经连接成功,未完成连接的状态下
connections数组为空
内容的提问来源于stack exchange,提问作者Moula Moulali
相关产品推荐
相关产品推荐

