
# 房间功能
 #### joinRoom
```
- (int)joinRoom:(HWRtcJoinParam * _Nonnull)joinParam;
```
【**功能说明**】
加入房间。该方法让用户加入通话房间。如果已在通话中，用户必须调用[leaveRoom]退出当前通话，才能进入下一个房间。
【**请求参数**】
joinParam：用户信息，具体请参见[HWRtcJoinParam](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1565345782011)。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
会触发以下回调：
- [onConnStateChange](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section1996016185310)：连接状态发送改变。
- [onJoinSuccess](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section0958191814310)：加入房间成功。
- [onRemoteUserOnline](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section29591181032)：远端用户加入。
- [onJoinRoomFailure](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section3959718031)：加入房间失败。
 
 #### changeUserRole
```
- (int)changeUserRole:(HWRtcRole)role signature:(NSString *)authorization ctime:(long long)ctime;
```
【**功能说明**】
设置用户在本房间内/指定房间的角色，角色切换时使用。
【**请求参数**】
- role：用户角色，具体请参见[HWRtcRole](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section181001014124014)。
- authorization：鉴权信息，当填写null时，则切换角色不鉴权，同时会忽略ctime值。
- ctime：生成鉴权时使用的时间戳，必须匹配对应。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 加入房间后才可以切换角色，当前仅支持joiner和player角色切换。
- 切换成功触发[onUserRoleChange](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section09601818731)回调。切换失败会触发[onError](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section196114181732)回调，错误码[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)：HWRtcErrorCodeUserRoleChangeFail。
- 同一时间不同房间最多只能有一个joiner，player切换joiner的时候，需要将joiner先切换成player，再将当前用户切换成joiner。
 
 #### changeUserName
```
- (int)changeUserName:(NSString*)userName;
```
【**功能说明**】
修改用户昵称。
【**请求参数**】
userName：用户新的昵称。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 该接口仅支持房间内调用，更改的昵称会被实时同步到房间内其他用户的用户列表，退出房间不会保存，再次加入房间变更为加入房间时设置的昵称（参考[joinRoom]接口注意事项）。
- 会触发用户名变更通知的回调onUserNameChangedNotify。
 
 #### getRoomId
```
- (NSString *)getRoomId;
```
【**功能说明**】
获取当前房间的roomId。
【**请求参数**】
无
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### disableRejoinRoom
```
- (int)disableRejoinRoom:(BOOL)disable;
```
【**功能说明**】
禁止自动重入房间。
【**请求参数**】
disable：使能开关。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### leaveRoom
```
- (int)leaveRoom;
```
【**功能说明**】
离开房间。
【**请求参数**】
无
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 必须调用leaveRoom结束通话后才可以开始下一次通话。
- 会触发以下回调：
  - [connection:onLeaveRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section1395919185311)：离开房间回调。
  
  - [onConnStateChange](https://support.huaweicloud.com/csdk-rtc/rtc_05_0074.html#rtc_05_0074__section1996016185310)：连接状态回调。
   
 
