华为云用户手册

  • changeVmrInfo 接口描述 该接口用于修改云会议室信息。 注意事项 尽量只修改来宾密码 方法定义 1 - (void)changeVmrInfo:(HWMModifyVMRParam *)info callback:(_Nonnull HWMSDKCompleteHandler)callback; 参数描述 表1 HWMModifyVMRParam参数说明 参数 是否必须 类型 描述 vmrId 是 NSString * 云会议室唯一ID guestPwd 是 NSString * 来宾密码 chairPwd 是 NSString * 主持人密码 vmrName 是 BOOL 云会议室名称 allowGuestStartConf 是 BOOL 是否允许来宾提前启动会议 confAllowJoinUser 否 HWMJoinConfRestrictionType 允许入会范围 isOpenWaitingRoom 否 BOOL 是否启用等候室 表2 枚举HWMJoinConfRestrictionType说明 参数 描述 HWMJoinConfRestrictionAll 所有用户 HWMJoinConfRestrictionCompany 企业内用户 HWMJoinConfRestrictionInvited 被邀请用户 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /// 修改云会议信息 - (void)changeVmrInfo { HWMModifyVMRParam * vmrInfo = [[HWMModifyVMRParam alloc] init]; vmrInfo.guestPwd = getGuestPwd(); vmrInfo.chairPwd = getChairPwd(); vmrInfo.vmrName = @"云会议室名称" vmrInfo.vmrId = @"8a8d0d8a718d87d50171a9f6b8de0f40"; vmrInfo.allowGuestStartConf = YES; [[HWMBizSdk getBizOpenApi] changeVmrInfo:vmrInfo callback:^(NSError * _Nullable error, id _Nullable result) { if (error) { NSLog(@"%@", error.localizedDescription); } else { NSLog(@"修改成功"); } }]; }
  • setLocalRecordPath 接口描述 用于自定义本地录制文件的存储路径。 注意事项 如果用户调用该接口指定了录制文件夹,则开启沙盒后不能重新创建,会写到默认路径。 方法定义 1 - (void)setLocalRecordPath:(NSURL *)url; 示例代码 1 2 3 4 5 6 7 8 9 NSOpenPanel *select = [NSOpenPanel openPanel]; select.canChooseFiles = NO; select.canChooseDirectories = YES; select.prompt = @"确定"; [select beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse result) { if (result == 1) { [[HWMSdk getOpenSDK] setLocalRecordPath:select.URL]; } }];
  • setShareScreenPermission 接口描述 该接口用于设置共享权限。 注意事项 该接口返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回 方法定义 1 - (BOOL)setShareScreenPermission:(BOOL)isPermission; 参数描述 表1 参数说明 参数 是否必须 类型 描述 isPermission 是 bool 是否允许。 返回值 无 示例代码 1 2 /// 设置共享权限 [[HWMSdk getOpenApi] setShareScreenPermission:isPermission];
  • changeVmrInfo 接口描述 该接口用于修改云会议室信息。 注意事项 尽量只修改来宾密码 方法定义 1 - (void)changeVmrInfo:(HWMModifyVMRParam *)info callback:(_Nonnull HWMSDKCompleteHandler)callback; 参数描述 表1 HWMModifyVMRParam参数说明 参数 是否必须 类型 描述 vmrId 是 NSString * 云会议室唯一ID guestPwd 是 NSString * 来宾密码 chairPwd 是 NSString * 主持人密码 vmrName 是 NSString * 云会议室名称 allowGuestStartConf 是 BOOL 允许来宾在主持人之前入会 confAllowJoinUser 否 HWMCallInRestrictionType 允许入会范围 isOpenWaitingRoom 否 BOOL 是否启用等候室 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /// 修改云会议信息 - (void)changeVmrInfo { HWMModifyVMRParam * vmrInfo = [[HWMModifyVMRParam alloc] init]; vmrInfo.guestPwd = @"******"; vmrInfo.chairPwd = @"******"; vmrInfo.vmrName = @"云会议室名称" vmrInfo.vmrId = @"8a8d0d8a718d87d50171a9f6b8de0f40"; [[HWMBizSdk getBizOpenApi] changeVmrInfo:vmrInfo callback:^(NSError * _Nullable error, id _Nullable result) { if (error) { NSLog(@"%@", error.localizedDescription); } else { NSLog(@"修改成功"); } }]; }
  • endConf 接口描述 该接口用于结束会议。 注意事项 不在会议中不应调用此接口。 只有主持人可以结束会议。 调用该接口,会议将结束,无法再次加入该会议。 方法定义 1 - (void)endConf:(HWMSDKCompleteHandler)callback; 参数描述 无。 返回值 无 示例代码 1 2 3 4 /// 结束会议 [[HWMSdk getOpenApi] endConf:^(NSError * _Nullable error, id _Nullable result) { [UIUtil showMessage:@"结束会议成功" error:error]; }];
  • editConf 接口描述 该接口用于编辑未开始的预约会议。 注意事项 会议未开始前且自己是主持人才可以调用接口。 预约会议中携带的与会者在编辑会议时需要传入userUuid(会议详情中每个与会者带有该参数)。 开启自动录制会议时必须开启录制会议。 所有字段必填,编辑修改的字段可来源于用户输入,其他不想修改的属性通过会议详情参数获取。 方法定义 1 - (void)editConf:(HWMOrderConfParam *_Nonnull)param callback:(_Nonnull HWMSDKCompleteHandler)callback; 参数描述 表1 HWMOrderConfParam参数说明,其余参数参见预约会议 参数 是否必须 类型 描述 confId 是 NSString * 会议ID。 isLiveOn 否 BOOL 是否开启直播。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /// 编辑会议 - (void)editConf { HWMOrderConfParam * param = [[HWMOrderConfParam alloc] init]; param.confSubject = @"会议名称"; param.startTime = 1598759580; param.duration = 15; param.confType = HWMConfTypeVideo; param.isNeedConfPwd = YES; param.isRecordOn = NO; param.timeZone = 56; param.vmrId = @"";// vmr会议需要传入vmrId param.callInRestrictionType = HWMCallRestrictionAll; param.confId = @"986927771"; [[HWMBizSdk getBizOpenApi] editConf:param callback:^(NSError *_Nullable error, id _Nullable result) { if (error) { NSLog(@"编辑会议失败:%@", error.localizedDescription); } else { NSLog(@"编辑会议成功"); } }]; }
  • setNetworkMode 接口描述 如华为云会议的媒体节点下沉部署到企业,并且管理节点也是通过企业内的代理访问,需要将网络模式设置成“企业内外接入”。 企业内的App无法直接访问公网(即媒体节点下沉和管理节点代理下沉场景)的情况下才需要调用该接口。 注意事项 该接口非必需调用,若不设置,则使用默认模式。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 IHwmNetwork.getInstance().setNetworkMode(networkInfo) 参数描述 表1 NetWorkModeInfo说明 参数 是否必须 类型 描述 networkInfo 是 NetWorkModeInfo 网络模式信息 表2 结构体NetWorkModeInfo参数说明 参数 是否必须 类型 描述 accessType 是 NetWorkAccessType 网络接入类型 表3 枚举NetworkAccessType参数说明 值 描述 ACCESS_TYPE_AUTO 默认值,目前和企业外网接入模式一致。 ACCESS_TYPE_INNER 企业内网接入,用于媒体和信令下沉场景,app从内网接入,信令/媒体消息走代理服务器才能访问云会议服务端。 ACCESS_TYPE_OUTER 企业外网接入,用于非媒体和信令下沉场景,互联网接入,信令/媒体信息可以直接访问云会议服务端 表4 返回值 值 描述 int 成功返回0,其他值表示失败。 示例代码 1 2 3 NetWorkModeInfo netWorkModeInfo = new NetWorkModeInfo(); netWorkModeInfo.setAccessType(NetworkAccessType.enumOf(NetworkAccessType.ACCESS_TYPE_AUTO)); NativeSDK.getNetworkApi().setNetworkMode(netWorkModeInfo);
  • 共享vmr信息变化 接口描述 收到该通知时,表示共享vmr信息发生变化。 方法定义 1 2 3 4 5 6 /** * 共享云会议室刷新 * * @param shareVmrInfo 共享云会议室信息 */ void onShareVmrInfoNotify(ShareVmrInfo shareVmrInfo); 参数描述 表1 参数说明 参数 类型 描述 shareVmrInfo ShareVmrInfo 共享云会议室信息 表2 ShareVmrInfo说明 参数 类型 描述 isEnableShareVmr boolean 共享vmr是否可用 返回值 无。 父主题: 业务消息通知
  • CancelConf 接口描述 该接口用于取消已预约的会议。 注意事项 该接口在登录状态下才能调用。 调用该接口时,仅能取消尚未开始的会议,若会议已召开,则接口返回失败。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode CancelConf(const char confId[HWM_MAX_CONF_ID_LEN]); 回调函数 1 virtual void OnCancelConfResult(hwmsdk::HwmErrCode ret, const char* reason) {}; 参数描述 参数 是否必须 类型 描述 confId 是 char[] 会议ID。 返回值 表1 返回值 类型 描述 HwmErrCode 成功返回0,其他值表示失败。失败返回值见错误码参考。 示例代码 1 2 3 4 5 6 7 8 /** * 取消会议接口 */ int demoConfListDlg::OnBnCancelConf(hwmsdk::HwmErrCode ret, const char* msg) { string confId= CTools::UNICODE2UTF(CString("989156631")); return hwmsdkagent::CancelConf(confId); }
  • initAsyncWithConfig:callback: 接口描述 用于启动并且子线程初始化SDK。 注意事项 该接口用于启动并初始化SDK,在调用其他接口之前必须先调用初始化接口。 返回值只代表接口是否调用成功。 方法定义 1 + (void)initAsyncWithConfig:(HWMOpenSDKConfig *)config callback:(_Nonnull HWMSDKInitCompleteHandler)callback;
  • 共享Bundle Id相关说明 ScreenShareExtension插件bundle Id格式: 主App bundle Id + ScreenShareExtension ScreenShareExtensionSetupUI插件bundle Id格式: 主App bundle Id + ScreenShareExtensionSetupUI 例: 主App bundle Id:com.xx.xx ScreenShareExtension插件bundIe Id:com.xx.xx.ScreenShareExtension ScreenShareExtensionSetupUI插件bundIe Id:com.xx.xx.ScreenShareExtensionSetupUI iOS端屏幕共享需要添加iOS Extension并实现相关代码,以下步骤用于说明如何集成SDK进行屏幕共享Extension的开发。
  • 示例代码 1 2 3 4 5 6 7 /// 初始化 HWMOpenSDKConfig *config = [[HWMOpenSDKConfig alloc] init]; config.appId = getAppId();// 传入申请到的企业AppId BOOL result = [HWMSdk initWithConfig:config]; if (result) { NSLog(@"初始化成功"); } 典型场景和接口参考中的示例代码仅作为示例用的伪代码,不能直接使用。
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /// 预约会议 - (void)bookConf { HWMOrderConfParam * param = [[HWMOrderConfParam alloc] init]; param.confSubject = @"会议名称"; param.startTime = 1598759580; param.duration = 15; param.isAutoRecord = NO; param.timeZone = 56; param.vmrId = @""; param.callInRestrictionType = HWMJoinConfRestrictionAll; [[HWMBizSdk getBizOpenApi] bookConf:param callback:^(NSError *_Nullable error, id _Nullable result) { if (error) { NSLog(@"预约会议失败:%@", error.localizedDescription); } else { NSLog(@"预约会议成功"); } }]; }
  • disableVoicePrompts: 接口描述 禁用会议提示音。 注意事项 该接口非必需调用,若不设置,则使用默认模式,不禁用会议提示音。 返回值只代表接口是否调用成功。 方法定义 1 - (HWMSDKERR)disableVoicePrompts:(HWMSDKVoicePromptsModel *)voicePrompts; 参数描述 表1 HWMSDKVoicePromptsModel说明 参数 是否必须 类型 描述 disableMutePrompt 是 BOOL 主持人静音与会者提示音 返回值 接口是否调用成功 示例代码 1 2 3 HWMSDKVoicePromptsModel * model = [[HWMSDKVoicePromptsModel alloc] init]; model.disableMutePrompt = YES; [[HWMBizSdk getBizOpenApi] disableVoicePrompts:model];
  • setNetworkModeWithNetworkInfo: 接口描述 如华为云会议的媒体节点下沉部署到企业,并且管理节点也是通过企业内的代理访问,需要将网络模式设置成“企业内外接入”。 企业内的App无法直接访问公网(即媒体节点下沉和管理节点代理下沉场景)的情况下才需要调用该接口。 注意事项 该接口非必需调用,若不设置,则使用默认模式。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 - (HWMSDKERR)setNetworkModeWithNetworkInfo:(HWMSDKNetWorkModeInfoModel *)networkInfo; 参数描述 表1 HWMSDKNetWorkModeInfoModel说明 参数 是否必须 类型 描述 accessType 是 HWMNetworkAccessType 网络类型 表2 枚举HWMNetworkAccessType说明 值 描述 HWMSDKAccessTypeAuto 默认值 HWMSDKAccessTypeInner 内网接入 HWMSDKAccessTypeOuter 外网接入 返回值 无 示例代码 1 2 3 HWMSDKNetWorkModeInfoModel *networkInfo = [[HWMSDKNetWorkModeInfoModel alloc] init]; networkInfo.accessType = HWMSDKAccessTypeAuto; HWMSDKERR ret = [[HWMSDKNetworkService shareInstance] setNetworkModeWithNetworkInfo:networkInfo];
  • 示例代码 1 2 3 4 5 6 7 8 9 10 /** * 退出sdk */ async exitSdk(){ const apiService = await new ApiService(); let setResult = await apiService.exit(); if(setResult != 0){ window.electron.ipcRenderer.send("show-error-alert", "exit error = " + setResult); } }
  • editCycleConf 接口描述 该接口用于编辑周期会议。 注意事项 该接口在已登录状态下才能调用。 所有字段必填,编辑修改的字段可来源于用户输入,其他不想修改的属性一定要取会议详情对应字段来赋值。 方法定义 1 - (void)editCycleConf:(HWMBookCycleConfParam *_Nonnull)param callback:(_Nonnull HWMSDKCompleteHandler)callback 参数描述 表1 HWMBookCycleConfParam参数说明 参数 是否必须 类型 描述 confParam 是 HWMOrderConfParam 普通会议参数 cycleConfParam 是 HWMCycleConfParam 周期会议参数 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 /// 编辑周期会议 - (void)editCycleConf{ HWMOrderConfParam * orderConfParam = [[HWMOrderConfParam alloc] init]; orderConfParam.confSubject = @"我的预约会议"; orderConfParam.isAutoRecord = YES; orderConfParam.startTime = 1633017600; //utc时间戳,单位秒,如果获取的时间是本地时间,需要转换成utc时间 orderConfParam.duration = 30; //会议持续时长(分钟) orderConfParam.timeZone = 56; orderConfParam.callInRestrictionType = HWMCallRestrictionAll; HWMAttendeeInfo * attendeeInfo = [[HWMAttendeeInfo alloc] init]; attendeeInfo.name = @"Mike"; attendeeInfo.number = @"+991116003543"; attendeeInfo.isMute = YES; orderConfParam.attendee = @[attendeeInfo]; HWMCycleConfParamModel * cycleConfParamModel = [[HWMCycleConfParamModel alloc] init]; cycleConfParamModel.startDate = 1633017600; //utc时间戳,单位秒,如果获取的时间是本地时间,需要转换成utc时间; cycleConfParamModel.endDate = 1636560000; cycleConfParamModel.cycleType = HWMSDKCycleTypeWeek; cycleConfParamModel.preRemindDays = 1; HWMBookCycleConfParam *param = [[HWMBookCycleConfParam alloc] init]; param.confParam = orderConfParam; param.cycleConfParam = cycleConfParamModel; [[HWMBizSdk getBizOpenApi] editCycleConf:param callback:^(NSError * _Nullable error, id _Nullable result) { if (!error) { NSLog(@"book cycle conf success"); }else{ NSLog(@"book cycle conf fail errorCode : %zd",error.code); } }]; }
  • bookCycleConf 接口描述 该接口用于预约周期会议。 注意事项 不在登录状态下,不应调用该接口。 会议开始时间必须晚于当前时间,会议时长应大于15分钟。 个人会议或者云会议室的时候要传入vmrId。 携带与会者入会的时候需要传入attendees。 周期会议最大跨度一年,会议数量不超过50,超过则只预约前50个会议 callback中的result返回会议详情信息(HWMConfDetail) 方法定义 1 - (void)bookCycleConf:(HWMBookCycleConfParam *_Nonnull)param callback:(_Nonnull HWMSDKCompleteHandler)callback; 参数描述 表1 HWMBookCycleConfParam参数说明 参数 是否必传 类型 描述 confParam 是 HWMOrderConfParam 预约会议参数 cycleConfParam 是 HWMCycleConfParam 周期子会议参数 表2 HWMCycleConfParam参数说明 参数 是否必须 类型 描述 startDate 是 NSTimeInterval 开始日期-时间戳,精度秒(0时区) endDate 是 NSTimeInterval 结束日期-时间戳,精度秒(0时区) cycleMode 是 HWMCycleMode 周期类型 interval 是 NSUInteger 周期区间。 1、周期类型选择了按天,表示每几天召开一次,取值范围[1,15]; 2、周期类型选择了Week,表示每几周召开一次,取值范围[1,5]; 3、周期类型选择了Month,interval表示隔几月,取值范围[1,3] listPoints 是 NSString * 周期内的会议召开点。仅当按周和月时有效。数据格式(中间用逗号隔开):1,3,5,7 preRemindDays 是 NSUInteger 周期子会议提前通知天数。 表3 枚举HWMCycleMode说明 值 说明 HWMCycleModeDay 以天为周期 HWMCycleModeWeek 以周为周期 HWMCycleModeMonth 以月为周期 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 /// 预约周期会议 - (void)bookCycleConf{ HWMOrderConfParam * orderConfParam = [[HWMOrderConfParam alloc] init]; orderConfParam.confSubject = @"我的预约会议"; orderConfParam.isAutoRecord = YES; orderConfParam.startTime = 1633017600; //utc时间戳,单位秒,如果获取的时间是本地时间,需要转换成utc时间 orderConfParam.duration = 30; //会议持续时长(分钟) orderConfParam.timeZone = 56; orderConfParam.callInRestrictionType = HWMCallRestrictionAll; HWMAttendeeInfo * attendeeInfo = [[HWMAttendeeInfo alloc] init]; attendeeInfo.name = @"Mike"; attendeeInfo.number = @"+991116003543"; attendeeInfo.isMute = YES; orderConfParam.attendee = @[attendeeInfo]; HWMCycleConfParamModel * cycleConfParamModel = [[HWMCycleConfParamModel alloc] init]; cycleConfParamModel.startDate = 1633017600; //utc时间戳,单位秒,如果获取的时间是本地时间,需要转换成utc时间; cycleConfParamModel.endDate = 1636560000; cycleConfParamModel.cycleType = HWMSDKCycleTypeWeek; cycleConfParamModel.preRemindDays = 1; HWMBookCycleConfParam *param = [[HWMBookCycleConfParam alloc] init]; param.confParam = orderConfParam; param.cycleConfParam = cycleConfParamModel; [[HWMBizSdk getBizOpenApi] bookCycleConf:param callback:^(NSError * _Nullable error, id _Nullable result) { if (!error) { NSLog(@"book cycle conf success"); }else{ NSLog(@"book cycle conf fail errorCode : %zd",error.code); } }]; }
  • EditConf 接口描述 该接口用于编辑已预约的会议。 注意事项 该接口在已登录状态下才能调用。 调用该接口时,仅能编辑尚未开始的会议,若会议已召开,接口将返回失败。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 所有字段必填,编辑会议前需要查询会议详情,不需要变更的数据请使用查询会议详情返回的数据赋值。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode EditConf(const HwmEditConfParam *confParam); 回调函数 1 virtual void OnEditConfResult(hwmsdk::HwmErrCode ret, const char* reason) {}; 参数描述 表1 结构体HwmEditConfParam参数说明 参数 是否必须 类型 描述 confId 是 char[] 会议ID。 subject 是 char[] 会议主题。 startTime 是 long long 会议开始时间时间戳(utc时间),second。 duration 是 int 会议时长,minute。 confType 是 HwmConfMediaType 会议类型。默认视频会议。 isNeedConfPwd 是 bool 是否需要密码。默认不需要密码。 isRecordOn 是 bool 录制会议开关。(字段即将废弃,不建议使用) isLiveOn 否 bool 保留。编辑会议时透传会议详情此字段。 isAutoRecordOn 是 bool 会议自动录制开关。 timeZone 是 int 时区码,请参考时区表。 vmrFlag 是 bool 是否是vmr会议。不可修改,填入会议详情返回值 vmrId 否 char[] 云会议室唯一ID。不可修改,填入会议详情返回值 joinConfRestrictionType 是 HwmJoinConfPermissionType 允许入会范围限制。默认所有用户。 isSmsOn 是 bool 发送短信通知开关,企业配置里面需要开启,否则不生效。 isMailOn 是 bool 发送邮件通知开关。 isEmailCalendarOn 是 bool 发送邮件日历开关。 attendees 是 HwmAttendeeInfo* 与会者列表。 attendeeLen 是 unsigned int 与会者列表长度。 vmrConfIdType 是 HwmVmrConfIdType 云会议室的会议ID类型。不可修改,会议详情中vmrConferenceId非空,填入HWM_VMR_CONF_ID_TYPE_FIXED;会议详情中vmrConferenceId为空,填入HWM_VMR_CONF_ID_TYPE_RANDOM isOpenWaitingRoom 否 bool 等候室开启开关 说明: 需要等候室功能开通后才能生效 allowGuestStartConf 否 bool 是否允许来宾提前启动会议。 说明: 仅针对随机会议ID的会议生效。 固定会议ID的会议,请使用修改云会议室信息接口设置。 allowGuestStartConfTime 否 unsigned int 允许来宾提前入会时间范围(单位:分钟) :0-随时,n-提前n分钟启动会议。 concurrentParticipants 否 unsigned int 会议方数,会议最大与会人数限制。 注:不填则不限制 customInfo 否 char[] 自定义扩展信息 返回值 表2 返回值 类型 描述 HwmErrCode 成功返回0,其他值表示失败。失败返回值见错误码参考。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /** * 编辑会议接口 */ int demoEditConfDlg::EditConf() { hwmsdkagent::HwmConfDetail confDetail{0}; //从缓存中得到会议详情数据赋予confDetail hwmsdkagent::HwmEditConfParam editConfParam{ 0 }; //根据实际需求拷贝confDetail的数据 strncpy_s(editConfParam.confId, confDetail.confListInfo.confId, HWM_MAX_CONF_ID_LEN); editConfParam.vmrFlag = confDetail.vmrFlag; strncpy_s(editConfParam.vmrId, confInfo.vmrId, HWM_MAX_VMR_CONF_ID_LEN); // 此处省略部分赋值代码 editConfParam.timeZone = 56; // 本地时区,用户依据自身情况自己调整,56东八区 editConfParam.isRecordOn = false; editConfParam.isAutoRecordOn = false; editConfParam.startTime = 1598398920; //utc时间戳 editConfParam.duration = 0 * 60 + 30;//会议时长 editConfParam.joinConfRestrictionType = hwmsdkagent::HwmJoinConfPermissionType::RESTRICTION_CALL_IN_ALL; //取编辑会议上面的允许入会用户类型 // vmrConferenceId非空是固定ID,为空则是随机id editConfParam.vmrConfIdType = (strlen(confInfo.confListInfo.vmrConferenceId) != 0) ? hwmsdkagent::HwmVmrConfIdType::HWM_VMR_CONF_ID_TYPE_FIXED : hwmsdkagent::HwmVmrConfIdType::HWM_VMR_CONF_ID_TYPE_RANDOM; return hwmsdkagent::EditConf(&editConfParam); }
  • 集成虚拟背景 使用场景 集成完虚拟背景后在会中可以开启该功能,不仅可以虚化、修改背景,还支持自定义背景图。 实现步骤 将virtualbackgroundlibs文件夹中的HWMVirtualBackground-release.aar拷贝到工程目录的libs文件夹下 图1 虚拟背景aar 在app/build.gradle中添加依赖: 1 implementation(name: 'HWMVirtualBackground-release', ext: 'aar') 若已使用自定义菜单功能,请在对应的位置添加虚拟背景按钮: confMenus.add(new VirtualBackgroundMenu()) 父主题: 基础配置
  • 注意事项 1 收到该通知的前提需要打开 7.5.3.1 表2 frame对象介绍 中的isUseExternalConfInfoWnd开关为true。 2 通知方法OnShowExternalConfInfoWnd中添加线程切换,抛到用户自己线程中,再显示用户自定义的 会议信息框(会议信息框显示需做置顶操作)。 3 显示用户自定义的会议信息框接口中,需要添加定时器检测(2s): 鼠标若未移入自定义会议信息框区域,定时器时间到则销毁会议信息框。 鼠标若移入自定义会议信息框区域,则待鼠标移出信息框区域直接销毁会议信息框。 (若未添加3处理,无法覆盖所有的场景销毁会议信息框)
  • 业务流程 接口调用 创建入会参数JoinConfParam。 会议id加入会议使用PasswordJoinConfParam。 会议random加入会议使用RandomJoinConfParam。 1 2 3 4 5 6 7 //加入会议对象 PasswordJoinConfParam passwordJoinConfParam = new PasswordJoinConfParam() .setConfId(getConfId()) //加入会议ID .setNickname(getNickname()) //设置昵称 .setCameraOn(true) //是否开启摄像头 .setMicOn(true); //是否开启麦克风 .setPassword(true) //入会密码 调用joinConf接口加入会议,第1步中的数据作为参数。 处理回调 处理回调中的结果。
  • setWaterMark 接口描述 该接口用于自定义共享时的水印。 方法定义 1 - (void)setWaterMark:(nullable NSAttributedString *)waterMarkString; 参数描述 水印要展示的内容。 返回值 无 示例代码 NSAttributedString *waterMarkString = [[NSAttributedString alloc] initWithString:@"水印内容"]; [[HWMSdk getOpenApi] setWaterMark:waterMarkString];
  • ModifySubCycleConf 接口描述 该接口用于编辑周期子会议。 注意事项 该接口在已登录状态下才能调用。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode ModifySubCycleConf(const HwmModifySubCycleConfParam *modifySubCycleConfParam); 回调函数 1 virtual void OnModifySubCycleConfResult(hwmsdk::HwmErrCode ret, const char* reason) {}; 参数描述 表1 结构体HwmModifySubCycleConfParam参数说明 参数 是否必须 类型 描述 confId 是 char[] 会议id subConfID 是 char[] 子会议唯一标识UUID confMediaType 否 HwmConfMediaType 会议媒体类型 startTime 否 long long 会议开始时间(UTC时间),单位为秒 confLen 否 unsigned int 会议持续时长,单位分钟 isAutoRecord 否 bool 会议开始后是否自动开启录制 recordAuthType 否 unsigned int 录播鉴权方式 0:可通过连接观看/下载(不拼接nonce)1:企业用户可观看/下载 2:与会者可观看/下载 callInRestriction 否 HwmJoinConfPermissionType 呼入限制 allowGuestStartConf 否 bool 允许来宾启动会议 allowGuestStartConfTime 否 unsigned int 允许来宾提前入会时间范围(单位:分钟) 0-随时,n-提前n分钟启动会议 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /** * 编辑周期子会议接口 */ int demoConfListDlg::ModifySubCycleConf() { hwmsdkagent::HwmModifySubCycleConfParam SubCycleConfParam{}; strcpy_s(SubCycleConfParam.confId, sizeof(SubCycleConfParam.confId), confId.c_str()); strcpy_s(SubCycleConfParam.subConfID, sizeof(SubCycleConfParam.subConfID), subConfUuid.c_str()); SubCycleConfParam.confMediaType = 1; SubCycleConfParam.startTime = 1633017600; SubCycleConfParam.confLen = 60; SubCycleConfParam.isAutoRecord = false; SubCycleConfParam.callInRestriction = 0; SubCycleConfParam.allowGuestStartConf = false; SubCycleConfParam.allowGuestStartConfTime = 0; return hwmsdkagent::ModifySubCycleConf(&SubCycleConfParam); }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /// 预约会议 - (void)bookConf { HWMOrderConfParam * param = [[HWMOrderConfParam alloc] init]; param.confSubject = @"会议名称"; param.startTime = 1598759580; param.duration = 15; param.confType = HWMConfTypeVideo; param.isNeedConfPwd = YES; param.isRecordOn = NO; param.timeZone = 56; param.vmrId = @""; param.callInRestrictionType = HWMJoinConfRestrictionAll; [[HWMBizSdk getBizOpenApi] bookConf:param callback:^(NSError *_Nullable error, id _Nullable result) { if (error) { NSLog(@"预约会议失败:%@", error.localizedDescription); } else { NSLog(@"预约会议成功"); } }]; }
  • 获取SDK版本号 接口描述 调用此接口,可以获取到当前SDK使用的版本号 方法定义 1 getSdkVersion():string 参数描述 无 返回值 表1 返回值 类型 描述 string sdk版本号 示例代码 const sdkVersion = HWMeeting.getVersion(); // 显示结果 console.log("getSdkVersion", sdkVersion ); 父主题: 基础配置
  • editSubCycleConf 接口描述 该接口用于编辑周期子会议。 注意事项 该接口在已登录状态下才能调用。 方法定义 1 - (void)editSubCycleConf:(HWMSDKModifySubCycleConfParamModel *_Nonnull)param callback:(_Nonnull HWMSDKCompleteHandler)callback; 参数描述 表1 HWMSDKModifySubCycleConfParamModel参数说明 参数 是否必须 类型 描述 confId 是 NSString * 会议id subConfID 是 NSString * 子会议唯一标识UUID confMediaType 否 HWMConfMediaType 会议媒体类型 startTime 否 NSInteger 会议开始时间(UTC时间),单位为秒 confLen 否 NSInteger 会议持续时长,单位分钟 isAutoRecord 否 BOOL 会议开始后是否自动开启录制 recordAuthType 否 NSUInteger 录播鉴权方式 0:可通过连接观看/下载(不拼接nonce)1:企业用户可观看/下载 2:与会者可观看/下载 callInRestriction 否 HWMConfAllowJoinUserType 呼入限制 allowGuestStartConf 否 BOOL 允许来宾启动会议 allowGuestStartConfTime 否 NSInteger 允许来宾提前入会时间范围(单位:分钟) 0-随时,n-提前n分钟启动会议 表2 枚举HWMConfMediaType说明 枚举 值 说明 HWMConfMediaTypeAudio 0 音频会议 HWMConfMediaTypeVideo 1 视频会议 表3 枚举HWMConfAllowJoinUserType说明 值 描述 HWMConfAllowJoinUserTypeAnyone 任何人 HWMConfAllowJoinUserTypeLoginedUser 已登录用户 HWMConfAllowJoinUserTypeInCompanyUser 企业内用户 HWMConfAllowJoinUserTypeInvitedUser 被邀请用户 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /// 编辑周期会议 - (void)editSubCycleConf{ HWMSDKModifySubCycleConfParamModel * modifySubCycleConfParamModel = [[HWMSDKModifySubCycleConfParamModel alloc] init]; modifySubCycleConfParamModel.confId = confId; modifySubCycleConfParamModel.subConfID = subConfID; modifySubCycleConfParamModel.confMediaType = HWMConfMediaTypeVideo; modifySubCycleConfParamModel.startTime = 1633017600; modifySubCycleConfParamModel.confLen = 60; modifySubCycleConfParamModel.isAutoRecord = NO; modifySubCycleConfParamModel.callInRestriction = HWMConfAllowJoinUserTypeAnyone; modifySubCycleConfParamModel.allowGuestStartConf = NO; modifySubCycleConfParamModel.allowGuestStartConfTime = 0; [[HWMBizSdk getBizOpenApi] editSubCycleConf:modifySubCycleConfParamModel callback:^(NSError * _Nullable error, id _Nullable result) { if (!error) { NSLog(@"编辑周期子会议会议成功"); }else{ NSLog(@"编辑周期子会议失败:%zd %@", error.code, error.localizedDescription); } }]; }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 /** * 配置邀请按钮 */ int hwmSDKConfigUI::hwmSDKStartUIConfig() { //配置“邀请”按钮 CString inviteBtn = ("{\"frame\":{\"confMenu\" : {\"toolBar\":{\"button\":[{\"id\":\"invite\",\"showAsAction\" : \"ifRoom\",\"isCustomizedClick\" : true}]}}}}"); string uiConfig CTools::UNICODE2UTF(inviteBtn); ret = hwmsdkagent::Config(uiConfig); return ret; } 1 2 3 4 5 6 7 8 9 10 11 /** * 配置接口回调 */ void demoCallbackProc::OnConfigResult(hwmsdk::HwmErrCode ret, const char* msg) { CString codeStr; codeStr.Format(_T("%d"), ret); string msgStr = CTools::UTF82MultiByte(msg); CString tips = _T("OnConfigResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str()); AfxMessageBox(tips); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 按钮点击消息通知 */ void notifyProc::OnClickInjectBtn(hwmsdkagent::HwmClickInjectBtn injectBtn, void* data, const char* id) { INT_PTR nRes; switch (injectBtn) // “邀请”按钮点击消息通知 case hwmsdkagent::HWM_CLICK_INJECT_BTN_INVITE: { // 显示带通讯录的邀请与会人界面 hwm_ui_demo_inviteDlg inviteDlg; nRes = inviteDlg.DoModal(); break; } }
  • 业务流程 使用SDK实现“邀请”功能时,在SDK初始化完成后先调用Config接口,然后处理回调函数OnConfigResult。会议中,在“邀请”按钮单击后,再处理消息通知OnClickInjectBtn。 接口调用 在SDK初始化后,调用Config进行“邀请”按钮的定制。 处理回调函数 处理回调函数OnConfigResult。 处理消息通知 当“邀请”按钮单击后,再处理消息通知OnClickInjectBtn
  • 清除界面配置 设置相关的代理后如果需要清除对应代理,可以置为nil,根据需求在对应位置设置。 1 2 3 4 [HWMSdk getSdkConfig].socialShareHandler = nil; [HWMSdk getSdkConfig].confUIHandler = nil; [HWMSdk getSdkConfig].contactUIHandler = nil; [HWMSdk getSdkConfig].headPortraitApiHandler = nil; 父主题: 界面定制
共100000条