loginRoom method
- String roomID,
- ZegoUser user,
- {ZegoRoomConfig? config}
使用带配置进阶属性的方式登录房间,通过回调参数返回登录结果,推拉流前必须登录房间。
支持版本:2.18.0 及以上。
详情描述:如果房间不存在,loginRoom 会创建并登录房间。SDK 用"房间"概念来组织用户,用户必须首先登录某个房间,才能进行一系列关键操作,比如推流 startPublishingStream
、拉流startPlayingStream
、收发广播消息 sendBroadcastMessage
等。为了防止 App 被恶意用户模拟登录,可以在登录房间之前加上鉴权验证,即 config
参数传入的 ZegoRoomConfig 对象中的 token
参数。
业务场景:在同一个房间内用户可以进行直播、音视频通话等。
调用时机:在 createEngine 初始化 SDK 之后调用该函数。
使用限制:同一房间登录接口的调用频率 (QPS) 有一定限制,详情查阅 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。
注意事项:
- 使用不同 appID 的 App 不能互通。
- SDK 支持拉相同 appID 下非同一个房间的流,即跨房间拉流。由于 SDK 的房间信令的相关回调通知是以相同房间为单位,当开发者想要跨房间拉流时,开发者需自行维护相关的消息及信令通知。
- 强烈建议 userID 与业务 APP 的用户 ID 一一对应,即一个 userID 与一个真实用户是固定且唯一的,而不应该是以随机的 userID 的方式传给 SDK 的方式。因为唯一且固定的 userID 可以让 ZEGO 技术人员快速定位线上问题。
- 首次因网络原因登录失败或者房间断开连接之后,SDK 重连默认时间为 20min。 隐私保护申明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。 相关回调:
- 当用户开始登录房间、登录房间成功或登录房间失败后,将会触发 onRoomStateChanged (2.18.0 之前版本不支持,请使用 onRoomStateUpdate) 回调通知开发者当前用户连接房间的状态。
- 登录同一个房间的不同用户可以得到以相同房间为单位的房间信令通知(例如:onRoomUserUpdate, onRoomStreamUpdate 等),一个房间内的用户收不到另一个房间房间信令的通知。
- 如果由于网络质量原因导致网络临时中断,SDK 内部会自动进行重连。可通过监听 onRoomStateChanged (2.18.0 之前版本不支持,请使用 onRoomStateUpdate) 回调获取本端当前房间连接状态的变化情况,同时同房间其他用户会接收到 onRoomUserUpdate 回调通知。详情请参考 https://doc-zh.zego.im/faq/reconnect
- 一个房间发的消息(例如
setStreamExtraInfo
,sendBroadcastMessage
,sendBarrageMessage
,sendCustomCommand
等)在别的房间无法收到(例如 onRoomStreamExtraInfoUpdate, onIMRecvBroadcastMessage, onIMRecvBarrageMessage, onIMRecvCustomCommand 等),目前 ZegoExpressEngine 未提供跨房间消息的能力。开发者可以集成 IM 的 SDK 来实现。 相关接口: - 可调用 logoutRoom 退出登录,如果没有退出登录而重复调用登录接口(roomID 和 user 保持相同的情况下),控制台会报错,打印错误码 1002001。
- 如果需要登录多个房间,请在创建引擎前通过 ZegoRoomMode 选择多房间模式,然后调用 loginRoom 接口登录多房间。
- 调用 destroyEngine 也会使用户自动退出登录。
roomID
房间 ID,不得为空,最大长度小于 128 字节的字符串。 注意事项: 1.房间 ID 由您自己定义。- 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。
- 如果需要与 Web SDK 互通,请不要使用 '%'。
user
用户对象实例,配置用户 ID、用户名。 注意事项:注意用户 ID 需要在相同的 appID 下全局唯一,否则会出现后登录的用户踢掉先登录的用户的情况。config
房间进阶配置。- Returns 本次登录房间结果
Implementation
Future<ZegoRoomLoginResult> loginRoom(String roomID, ZegoUser user,
{ZegoRoomConfig? config}) async {
return await ZegoExpressImpl.instance
.loginRoom(roomID, user, config: config);
}