
# 加入会议
#### joinConf
**接口描述**
该接口用于通过会议ID和密码加入已经存在的会议。加入会议的方式有两种：
- 会议ID+会议密码入会：手动输入会议ID和会议密码密码。
- 会议ID+Random入会：通过邮件会议通知中的会议链接入会时（会议链接如：https://bmeeting.huaweicloud.com/#/j/981924330/e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659），链接里面的是会议ID（即举例中的981924330）和会议的Random码（即举例中的e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659）。
**注意事项**
1. ID入会参数使用子类**HWMJoinConfParam** ，random入会参数使用子类**HWMRandomConfParam**
2. 在登录和未登录状态下都可以调用该接口。
3. 实际业务处理结果在对应的callback回调中。
**方法定义**
```
- (void)joinConf:(HWMBaseJoinConfParam * _Nonnull)param callback:(_Nonnull HWMSDKCompleteHandler)callback;
```
**参数描述**
表1HWMBaseJoinConfParam 
| 参数           | 是否必须 | 类型          | 描述                                    |
|:---|:---|:---|:---|
| confId       | 是    | NSString \* | 会议ID。                                 |
| nickname     | 否    | NSString \* | 会议昵称。在已登录状态下可为空，已登录时为空将使用登录的用户名作为会场名。 |
| isCameraOn   | 是    | BOOL        | 是否打开摄像头，默认关闭。                         |
| isMicOn      | 是    | BOOL        | 是否打开麦克风，默认打开。                         |
| isSpeakerOff | 否    | BOOL        | 是否关闭扬声器，默认不关闭。                        |
   
 表2HWMJoinConfParam参数说明，继承HWMBaseJoinConfParam 
| 参数                  | 是否必须 | 类型          | 描述                                                                        |
|:---|:---|:---|:---|
| password            | 否    | NSString \* | 会议密码。若希望以主持人身份入会，必须传入主持人密码。若希望以来宾身份入会，会议要求来宾密码时，必须传入来宾密码，会议不要求来宾密码时，可以为空。 |
| isStopConflictConf  | 否    | BOOL        | 强制结束和当前VMR会议资源冲突的会议（必须是vmr资源的拥有者才有权限，否则无效）。                               |
| isHidePasswordAlert | 否    | BOOL        | 是否隐藏密码弹窗，默认NO。                                                            |
   
 表3HWMRandomConfParam参数说明，继承HWMBaseJoinConfParam 
| 参数     | 是否必须 | 类型          | 描述           |
|:---|:---|:---|:---|
| random | 是    | NSString \* | random入会时传入。 |
| domain | 否    | NSString \* | 域名。离线入会时使用。  |
   
**示例代码**
```
/// 加入会议
- (void)joinMeeting {
    HWMJoinConfParam *param = [[HWMJoinConfParam alloc] init];
    param.confId = getConfId();
    param.password = getPassword();
    param.nickname = getNickName();
    param.isCameraOn = NO;
    param.isMicOn = YES;
    [[HWMSdk getOpenApi] joinConf:param callback:^(NSError * _Nullable error, id  _Nullable result) {
        if (error) {
            NSLog(@"入会失败%@", error.localizedDescription);
        }else{
            NSLog(@"入会成功");
        }
    }];
}
/// random入会
- (void)joinMeetingByRandom {
    HWMRandomConfParam *param = [[HWMRandomConfParam alloc] init];
    param.confId = getConfId();
    param.random = getRandom();
    param.nickname = getNickName();
    param.isCameraOn = NO;
    param.isMicOn = YES;
    [[HWMSdk getOpenApi] joinConf:param callback:^(NSError * _Nullable error, id  _Nullable result) {
        [self hideLoading];
        if (error) {
            NSLog(@"入会失败%@", error.localizedDescription);
        }else{
            NSLog(@"入会成功");
        }
    }];
}
```
