华为云用户手册

  • 示例代码 1 2 3 4 5 6 7 8 9 10 /// 退出登录 - (void)logout { [[HWMSdk getOpenApi] logout:^(NSError * _Nullable error, id _Nullable result) { if (error == nil) { NSLog(@"登出成功"); } else { NSLog(@"登出失败"); } }]; }
  • 业务流程 若要创建个人会议ID的会议或者云会议室的会议,则需要先调用GetVmrList接口查询个人会议ID和云会议室信息,然后处理回调函数OnGetVmrList返回的数据,该数据可用于创建会议。 使用SDK创建立即会议时,先调用CreateConf接口,然后处理回调函数OnCreateConfResult和消息通知OnConfState、OnConfInfo。 接口调用 组装数据结构HwmCreateConfInfo。 组装数据结构HwmConfAttendee。 调用CreateConf开始创建,第1步中的数据作为参数。 处理回调函数 处理回调函数OnCreateConfResult。 处理消息通知 处理消息通知OnConfState。 处理消息通知 处理消息通知OnConfInfo。 处理消息通知 处理消息通知OnConfList。
  • Login 接口描述 该接口用于登录。登录分为华为云会议账户登录和AppID登录,由authType参数决定。 注意事项 创建会议,被邀入会等功能只有在登录后才能使用,若不登录,将无法体验完整会议功能。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode Login(HwmLoginInfo *loginInfo);
  • queryContactAvatarWithAccount:thirdUserId:number:completionBlock: 接口描述 该接口用于定制登录后的会中头像显示。 图1 生效后拦截头像显示效果 注意事项 未登录的头像不支持自定义。 方法定义 1 2 - (void)queryContactAvatarWithAccount:(NSString *)account thirdUserId:(NSString *)thirdUserId number:(NSString *)number completionBlock:(void(^)(NSError * _Nullable error, UIImage * _Nullable avatarImage))completionBlock; 参数描述 表1 参数 类型 描述 account NSString * 账号密码登录场景下优先使用此字段 thirdUserId NSString * appid登录场景下优先使用此字段 number NSString * 跨企业场景优先使用此字段 返回值 无 示例代码 1 2 3 4 5 6 7 /// 拦截头像显示 - (void)queryContactAvatarWithAccount:(NSString *)account thirdUserId:(NSString *)thirdUserId number:(nonnull NSString *)number completionBlock:(void(^)(NSError * _Nullable error, UIImage * _Nullable avatarImage))completionBlock { /// 根据account或者thirdUserId 设置图片,下面的仅为示例代码 UIImage *image = [UIImage imageNamed:@"custom_conf_setting"]; completionBlock(nil, image); }
  • LoginBySSO 接口描述 该接口用于通过SSO的方式登录和鉴权。需要先通过GetSSOAuthorizeUrl接口获取到鉴权code。GetSSOAuthorizeUrl通过传域名获取到鉴权网站,用户在网站上输入账号+密码或者扫码完成鉴权获取到临时code(使用code完成登录)。 注意事项 创建会议,被邀入会等功能只有在登录后才能使用,若不登录,将无法体验完整会议功能。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode LoginBySSO(HwmSSOAuthInfo *ssoAuthInfo);
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 /// 登录处理 /// 认证鉴权用的账号密码建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 - (void)login { NSString *account = getAccount(); NSString *password = getPassword(); [[HWMSdk getOpenApi] login:account password:password callback:^(NSError * _Nullable error, HWMLoginResult * _Nullable result) { if (error == nil) { NSLog(@"登录成功"); }else{ NSLog(@"登录失败"); } }]; }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 /** * 注销 */ void demoMainMenuDlg::OnBnClickedLogout() { //调用登录接口 int ret = hwmsdkagent::Logout(); if (hwmsdk::HWM_COMMON_SUCCESS != ret) { AfxMessageBox(_T("Logout error")); } }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /// AppId 登录接口 - (void)login { HWMAppIDLoginParam *appidInfo = [[HWMAppIDLoginParam alloc] init]; appidInfo.thirdUserId = getThirdUserId(); appidInfo.expireTime = 1599618620; appidInfo.nonce = getNonce(); appidInfo.userName = getUserName(); appidInfo.signature = getSignature(); [[HWMSdk getOpenApi] login:appidInfo callback:^(NSError * _Nullable error, HWMLoginResult * _Nullable result) { if (error == nil) { NSLog(@"登录成功"); }else{ NSLog(@"登录失败"); } }]; }
  • 典型场景接口的调用顺序及生命周期 图1 典型场景接口调用时序图 1、建议在项目启动时,优先检查浏览器兼容性(checkSystemRequirements)。 2、从入会,会议控制,到离会,操作结果都是通过事件通知用户,所以建议在入会前创建事件监听(createEventListener),并选择所需的事件建立监听通道。 3、所有接口调用,都会返回Promise对象,用户可以根据链式调用,处理调用成功/失败的场景;以举手为例,调用成功仅代表该接口调用成功,真正举手动作完成,以收到的conf_config_change事件为准。 4、离会时,需要调用SDK的离开接口(leaveConf),如果强制结束进程或者关闭网页,可能会导致该离会用户在其他用户的与会者列表中,仍存在一小段时间。
  • 头像拦截显示 接口描述 该接口用于定制登录后的头像显示。 调用场景: 图1 画中画模式 图2 画廊模式 图3 悬浮窗 注意事项 未登录的头像不支持自定义。 方法定义 1 public Bitmap queryContactAvatar(String account, String thirdUserId, String sipNumber) 参数描述 表1 参数 类型 描述 account String 账号密码登录场景下优先使用此字段 thirdUserId String appid登录场景下优先使用此字段 sipNumber String 跨企业场景优先使用此字段 返回值 表2 参数 类型 描述 bitmap Bitmap 头像位图类 示例代码 sdkConfig.setQueryContactInfoStrategy(new IQueryContactInfoStrategy() { @Override public Bitmap queryContactAvatar(String account, String thirdUserId, String sipNumber) { Log.i(TAG, "setQueryContactInfoStrategy account: " + account + " thirdUserId: " + thirdUserId + " sipNumber: " + sipNumber); // 第三方查询通讯录,返回对应用户的头像图片,这里返回一张默认图片作为示例代码 return BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher); } }); 父主题: 界面定制
  • 业务流程 使用SDK预约会议前,处理用户界面输入的预约会议信息,调用bookConf接口,然后处理回调hwmCallback和消息通知BizNotificationHandler的onConfListChanged。 接口调用 组装数据结构BookConfParam。 调用bookConf开始创建预约会议,第1步中的数据作为参数。 处理回调函数 处理回调函数hwmCallback。 处理消息通知 处理消息通知onConfListChanged。
  • Logout 接口描述 该接口用于注销已登录的华为云会议账号。 注意事项 请在已登录的场景下调用。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode Logout(); 回调函数 1 virtual void OnLogoutResult(hwmsdk::HwmErrCode ret, const char* reason, const HwmLogoutResult* logoutResult) {}; 参数描述 无。 返回值 表1 返回值 类型 描述 HwmErrCode 成功返回0,其他值表示失败。失败返回值见错误码参考。 HwmLogoutResult 登出结果信息。 表2 结构体HwmLogoutResult参数说明 参数 类型 描述 userUuid char[] UUID(由系统分配的真实的唯一用户标识)。 account char[] 账号。 thirdAccount char[] 第三方账号。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 /** * 注销 */ void demoMainMenuDlg::OnBnClickedLogout() { //调用注销接口 int ret = hwmsdkagent::Logout(); if (hwmsdk::HWM_COMMON_SUCCESS != ret) { AfxMessageBox(_T("Logout error")); } }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 /// 登录处理 /// 认证鉴权用的账号密码建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 - (void)login { NSString *account = @"******"; NSString *password = getPassword(); [[HWMSdk getOpenApi] login:account password:password callback:^(NSError * _Nullable error, HWMLoginResult * _Nullable result) { if (error == nil) { NSLog(@"登录成功"); }else{ NSLog(@"登录失败"); } }]; }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** * 登录处理 */ int demoLoginDlg::Login() { int ret; //设置App ID登录参数 /** *.此处省略第三方服务器做的数据转换,最后获取到nonce和signature */ strncpy_s(loginParam.appIdAuthInfo.thirdUserId, GetUserId.c_str(), HWM_MAX_USER_ID_LEN); strncpy_s(loginParam.appIdAuthInfo.userName, GetUserName.c_str(), HWM_MAX_USER_NAME_LEN); strncpy_s(loginParam.appIdAuthInfo.signature, GetSignature().c_str(), HWM_MAX_SIGNATURE_LEN); strncpy_s(loginParam.appIdAuthInfo.nonce, GetNonce().c_str(), HWM_APPID_NONCE_LEN ); strncpy_s(loginParam.appIdAuthInfo.email, GetEmail.c_str(), HWM_MAX_EMAIL_LEN); strncpy_s(loginParam.appIdAuthInfo.phoneNumber, GetPhoneNumber.c_str(), HWM_MAX_PHONE_NUM_LEN); loginParam.appIdAuthInfo.expireTime = 1598398920; // utc时间,单位s loginParam.authType = hwmsdkagent::HWM_AUTH_TYPE_APPID; //调用登录接口 ret = hwmsdkagent::Login(&loginParam); return ret; } 1 2 3 4 5 6 7 8 9 10 11 /** * 登录接口回调 */ void demoCallbackProc::OnLoginResult(hwmsdk::HwmErrCode ret, const char* msg) { CString codeStr; codeStr.Format(_T("%d"), ret); string msgStr = CTools::UTF82MultiByte(msg); CString tips = _T("OnLoginResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str()); AfxMessageBox(tips); }
  • 80.7.5更新内容 1.新增显示设置界面接口ShowSettingWindow,接口详见显示设置窗口 2.Config接口新增字段moveall_to_waitingroom,支持全员移入等候室可隐藏,详见界面配置 3.Config接口新增字段participant_detail,支持与会者头像点击注入,详见界面配置,点击注入OnClickInjectBtn通知里面按钮类型里面增加HWM_CLICK_INJECT_BTN_PARTICIPANT_DETAIL 与会者详情按钮,data信息是HwmConfAttendee,详见注入点击 4.HwmSettingWindowConfig 添加 HwmScreenSettingTab 屏幕设置项,将双屏设置从 HwmNormalSettingTab 移到 HwmScreenSettingTab,接口详见自定义设置界面 5.会中信息通知(OnConfInfo)中HwmConfInfo参数新增字段isOtherCorpConf bool 是否是外部企业的会议,详见会议信息 6.企业信息变更通知(OnUserCorpInfo)中HwmUserCorpInfoNotifyType参数新增枚举值HWM_USER_CORP_INFO_NOTIFY_TYPE_USER_NAME_CHANGE 用户名变更和HWM_USER_CORP_INFO_NOTIFY_TYPE_USER_STATUS_CHANGE 用户状态变化,详见企业信息变更 7.会中邀人(AddAttendee)接口HwmConfAttendee参数新增字段accountId华为云会议账号,接口详见添加与会者 8.新增错误码,详见常见错误码 9.增加会议结束原因错误码,与会方超出专用VMR套餐的最大与会人数HWM_CONF_END_REASON_NUM_OF_PAR_EXCEEDS_UPPER_LIMIT,接口详见会议状态 10.新增通话结束通知OnCallRecordInfo 父主题: 版本更新内容
  • 参数描述 表1 结构体HwmConfEndInfo参数说明 参数 类型 描述 nickName char[] 与会者名称。 number char[] 号码。如果填分配给账号的sip号码(如+99111244216210249)则呼叫该账号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一,账号密码鉴权时使用。 thirdUserId char[] 第三方用户ID。与number二选一,App ID鉴权时使用。 accountId char[] 华为云会议账号 isLocal bool 是否本端 audioStatus HwmLowNetWorkStatusInfo 音频网络状态 videoStatus HwmLowNetWorkStatusInfo 视频网络状态 shareStatus HwmLowNetWorkStatusInfo 共享网络状态 表2 结构体HwmLowNetWorkStatusInfo参数说明 参数 类型 描述 packetLoss unsigned int 丢包 delay unsigned int 延迟 jitter unsigned int 抖动 status HwmLowNetWorkStatus 状态 表3 枚举HwmLowNetWorkStatus说明 枚举值 描述 LOW_NET_WORK_STATUS_NORMAL 网络正常 LOW_NET_WORK_STATUS_BAD 网络差 LOW_NET_WORK_STATUS_VERY_BAD 网络非常差
  • 操作步骤 下载SDK和Demo源码 按照“SDK下载”章节,下载SDK的ZIP包。 解压ZIP包,得到如下文件及目录。 图1 SDK包的目录结构 申请App ID,并替换Demo中的App ID App ID申请步骤请参考“App ID鉴权介绍”。申请审批完成后将获得一个App ID。 将 HWMAppKeyManager中的appId替换为申请到的App ID。如下图所示: 图2 修改Demo默认App ID 编辑和运行 修改bundle identifier、安装对应的证书。换成自己公司的对应证书。 修改Xcode Preferense的Build Location改成Custom 图3 Xcode Build location修改 编译运行。 使用Demo 以创建1个即时会议为例: 点击“初始化”按钮,初始化SDK。 图4 Mac Demo首界面 登录 账号密码登录方式:点击“登录”按钮进入“登录页面”,在“登录页面”输入账号密码后点击“登录”。 图5 Mac Demo登录界面 点击“创建会议”按钮,进入创建会议界面,创建会议。 图6 Mac Demo创建会议界面 图7 Mac Demo会中界面
  • 描述 通过邮件会议通知中的会议链接入会时(会议链接如:https://bmeeting.huaweicloud.com/#/j/981924330/e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659),链接里面的是会议ID(即举例中的981924330)和会议的Random码(即举例中的e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659)。 在华为云会议账号登录后或者登录前,都可以使用该接口通过分享会议链接中的会议ID和48位密码映射值Random加入会议。
  • 业务流程 使用SDK加入已经存在的会议时,先调用JoinConfByRandom接口,然后处理回调函数OnJoinConfByRandom和消息通知OnConfState、OnConfInfo 接口调用 组装数据结构HwmJoinConfByRandomInfo。 调用JoinConfByRandom开始入会,第1步中的数据作为参数。 处理回调函数 处理回调函数OnJoinConfByRandomResult。 处理消息通知 处理消息通知OnConfState。 处理消息通知 处理消息通知OnConfInfo。
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 通过会议ID和Random加入会议 int demoJoinConfByRandomDlg::clickJoinConfByRandom() { // 填写会议ID和密码映射值等;Random入会时,支持配置会场名称 hwmsdkagent::HwmJoinConfByRandomInfo data; memset(&data, 0, sizeof(hwmsdkagent::HwmJoinConfByRandomInfo)); strncpy_s(data.confId, GetMeetingID().c_str(), HWM_MAX_CONF_ID_LEN); strncpy_s(data.random, GetAccessCode().c_str(), HWM_MAX_RANDOM_LEN); strncpy_s(data.name, GetParticipantName().c_str(), HWM_MAX_DISPLAY_NAME_LEN); int ret = hwmsdkagent::JoinConfByRandom(&data); return ret; }
  • 典型场景接口的调用顺序及生命周期 图1 典型场景接口调用时序图 1、一般应用升级前需要结束进程,为了便于升级管理,如果是windows 64位平台,初始化之前请修改HwmSdk文件夹下HwmSdk.exe文件的名称为用户自己的名称。(仅针对windows 64位平台,其他平台不涉及) 2、登录不是必须的步骤,在不登录的情况下也能通过会议ID和密码加入已经创建好的会议。 3、离开会议、结束会议等接口,当前SDK的UI上已经提供了对应的功能,如果第三方的App不需要程序控制这些功能则无需调用对应接口。 4、会议开始后,订阅的会议信息onConfInfoNotify通知会上报多次。
  • 3类接口描述 Electron SDK的接口分为主动调用同步接口、主动调用异步接口、订阅消息通知接口。 主动调用同步接口:App主动调用SDK的接口,用于完成某项任务。比如初始化接口Init。 主动调用异步接口:App主动调用接口和SDK内部任务处理采用异步处理方式,所有SDK某项任务处理完成后,以接口回调的方式通知App。比如创建会议接口,入参包含创会需要的参数和创会的结果回调onCreateConfResult。 订阅消息通知接口:由华为云会议服务端触发或SDK内部触发的事件通知,调用对应的订阅接口后,SDK以消息通知接口的形式通知给App。比如订阅会议列表通知接口setOnConfListChangedCB。
  • 示例代码 1 2 3 4 5 6 7 8 9 10 /// 退出登录 - (void)logout { [[HWMSdk getOpenApi] logout:^(NSError * _Nullable error, HWMLogoutResult * _Nullable result) { if (error == nil) { NSLog(@"登出成功"); } else { NSLog(@"登出失败"); } }]; }
  • 操作步骤 下载SDK和Demo源码 参考“SDK下载”章节,下载SDK的ZIP包。 解压ZIP包到DEMO文件夹下,得到如图1所示的文件及目录。 Demo示例工程的目录结构如图2所示。 图1 SDK ZIP包解压后的目录结构 拷贝SDK aar文件 拷贝SDK aar资源目录下的所有aar资源到Demo工程的libs文件夹中,如图2所示 图2 Demo示例工程的目录结构 编辑和运行 打开Android Studio 打开Demo示例工程,如图3所示。 打开后如图4所示。 图3 工程目录 图4 工程目录 打开gradle-wrapper.properties,确认是否可以下载到gradle,如果不可以则可以手动到该网址下载,配置成本地依赖. 图5 配置gradle-wrapper.properties 图6 配置本地gradle 打开build.gradle,查看是否可以连接到google,如果不可以则注释掉其他,并且添加自己可用的maven仓。 图7 配置maven 编译并运行demo工程 申请App ID App ID申请步骤请参考“App ID鉴权介绍”。申请审批完成后将获得一个App ID。 将配置文件userinfo.properties中的APP_ID替换为申请到的App ID。如下图所示: 图8 替换App ID 使用demo 登录 点击“登录”按钮,并输入华为云会议账号和密码。 图9 Android Demo登录前后界面 创建会议 点击“创建会议”按钮,创建会议。 图10 Android Demo创建会议界面 会中界面 图11 Android Demo会中界面
  • 常见错误码 表1 SDKError枚举说明 变量 值 描述 UISDK_COMMON_ERROR 430100001 通用错误 UISDK_API_INVALID_PARAMETERS 430100002 参数错误 USG_ERR_PASSWORD 206010000 账号或密码错误 SDK_LOGIN_ACCOUNT_LOCKED 412100010 账号被锁定 SDK_LOGIN_AUTH_ACCOUNT_DIACTIVE 412100015 账号或企业未激活 USG_APPID_AUTH_EXPIRE 206010057 APPID认证过期 USG_APPID_ACCOUNT_DISABLED 206010007 账号未激活,无权限登录 CMS_CONF_AUTHEN_NEED_PASSWORD 111070009 会议密码不能为空 CMS_CONF_NOT_FOUND_OR_AUTH_FAILED 111072065 会议不存在或密码错误 CMS_CONF_LOCKED 111072050 会议被锁定 UISDK_NOT_IN_CONF_OR_CALL 430400008 不在会议或呼叫中 CMS_VMR_ONLY_ALLOW_CHAIR_START_CONF 111071004 VMR会议不允许来宾在主持人入会前入会 UISDK_SHARE_LOCKED 430400015 共享被锁定 UISDK_NOT_IN_DATACONF 430400016 不在数据会议中 CMS_CONF_ONLY_ALLOW_USER_IN_ORG 111071074 会议只允许企业内用户呼入 CMS_CONF_ONLY_ALLOW_USER_INVITED 111071075 会议只允许被邀请用户呼入 UISDK_ALREADY_EXIST_CONF_OR_CALL 430400009 已存在一路会议或呼叫 CMS_CONF_ANONYMOUS_LOGIN_LOCKED 111071052 匿名登录锁定,请稍后重试 CMS_CONF_LINK_LOGIN_LOCKED 111071053 链接登录锁定,请稍后重试 CMS_CONF_IS_CLOSED 111072006 会议已结束 USG_VMR_PWD_SAME_AS_CHAIRMAN_PWD 201080006 主持人密码和来宾密码不能相同 请确认输入参数 CMS_CONF_PORTAL_PARTICIPANT_VMR_LOGIC_RESOURCE_NOT_ENOUGH 111076003 超出VMR最大方数 CMS_CONF_PORTAL_PARTICIPANT_RESOURCE_NOT_ENOUGH 111076004 企业并发数不足 CMS_CONF_NOT_ON_LOCAL_STATION 111100012 会议不在本站点 CMS_LOGICRES_PNUM_RESOURCE_NOT_ENOUGH 115022001 企业并发资源不足 CMS_CONF_DATA_NOT_FOUND 111070005 会议不存在 CMS_VMR_DATA_NOT_FOUND 111070006 个人云会议室不存在 CMS_CONF_ROLE_AUTHENTICATION_FAILED 111070010 权限不足,无法查看会议 CMS_ONLINE_CONF_IN_COMMUNAL 111071106 云会议室已有会议正在召开 CMS_CONF_MODIFY_FAIL_AS_CONF_ALREADY_STARTED 111071065 正在召开会议,无法编辑会议详情 CMS_ORG_CONCURRENT_PARTICIPANTS_NUMBER_IS_ZERO 111071060 企业未配置并发会议资源,无法使用个人会议ID和随机会议ID发起会议 CMS_CONF_USER_NOT_VMR_OWNER 111071063 非云会议室拥有者 CMS_CONF_CANCEL_FAIL_AS_CONF_STARTED 111071067 会议正在召开中,不允许取消会议 CMS_CONF_START_TIME_LESS_THAN_CURRENT_TIME 111071013 会议开始时间不能早于系统当前时间 CMS_CONF_START_TIME_OVER_MAX_SCHEDULE_TIME 111071014 会议开始时间超出最大预订时间范围 USG_VMR_PWM_SAME_AS_MEETING_PWD 201080017 和会议密码相同 CMS_PARTICIPANT_CONF_NOT_SUPPORT 111084013 不支持该会议 CMS_CONF_ATTENDEES_NUMBER_EXCEED_LIMIT 111071066 与会方数量超出上限 CMS_VMR_DATA_STATUS_ILLEGAL 111073007 VMR套餐状态非法 CMS_WAIT_APPLY_RESOURCE 115029006 等待申请资源中 SDK_SVN_DETECT_FAILED 411000017 svn端口探测不通 SDK_ERR_RTC_NOT_SUPPORT_STG 411000019 RTC不支持STG模式 CMS_OVER_MAX_PARTICIPANT_NUMBER 111072101 超过设置的会议方数 CMS_AUDIENCE_VMR_LOGIC_RESOURCE_NOT_ENOUGH 111072202 观众数超过VMR套餐中的观众最大并发资源数 CMS_PARTICIPANT_VMR_LOGIC_RESOURCE_NOT_ENOUGH 111072203 主持人与嘉宾超过VMR套餐中的最大并发资源数 CMS_PARTICIPANT_CONF_NOT_EXIST 111081002 会场所在会议不存在或已结束 USG_VMR_RESOURCE_UNAVAILABLE 201080000 云会议资源不可用 USG_ACCOUNT_IS_UNBOUND 206010075 账号已经解绑 RTC_SDK_JOIN_ROOM_FAIL 990000018 加入房间失败 RTC_SDK_JOIN_ROOM_STATUS_BUSY 990000019 非空闲状态 RTC_SDK_JOIN_ROOM_SERVER_ERROR 990000020 加入房间失败,服务器异常 RTC_SDK_JOIN_ROOM_AUTH_FAIL 990000022 加入房间失败,鉴权失败 RTC_SDK_JOIN_ROOM_URL_NOT_RIGHT 990000025 加入房间失败,url错误 SDK_LOGIN_CA_VERIFY_FAILED 412100012 服务器CA证书校验失败 SDK_LOGIN_CURLE_EXTERN_CONNECT_TIMEOUT 412100017 代理通信超时,tcp建链失败,大概率是代理配置错误 SDK_LOGIN_CURLE_EXTERN_CLOSED_BY_PROXY 412100018 链接被代理断开,大概率是服务器地址配置错误 SDK_LOGIN_CURLE_COULDNT_RESOLVE_PROXY 412100024 认证鉴权过程失败,无法解析网关 SDK_LOGIN_CURLE_COULDNT_RESOLVE_HOST 412100025 认证鉴权过程失败,无法解析主机 UISDK_TIMEOUT 430100004 超时 UISDK_IN_PROCESS 430100005 接口正在处理中 UISDK_UNLOGIN_ERROR 430200001 未登录 UISDK_NOT_INITED_END 430100006 未初始化或初始化尚未完成 UISDK_NOT_SUPPORT_END 430100007 此版本不支持 UISDK_OPERATION_INTERRUPT 430100008 操作中断 UISDK_CONTACT_NOT_FOUND 430100009 联系人不存在 UISDK_ARGS_LENGTH_OVERRUN 430100010 参数长度超限 UISDK_APPID_INFO_ILLEGAL 430100011 APPID 信息入参不合法 UISDK_E2EENCRYPT_ALGORITHM_ERROR 430100012 端到端加密算法不对称 UISDK_REPEATED_LOGIN_ERROR 430200002 重复登录 UISDK_PASSWORD_OR_ACCOUNT_EMPTY 430200005 账号或密码不能都为空 UISDK_CALL_ACCOUNT_EMPTY 430300002 点对点呼叫账号为空 UISDK_CALL_NICKNAME_EMPTY 430300003 点对点呼叫名字为空 UISDK_INVALID_GUEST_PASSWORD_PARAMETER 430400007 来宾密码非法 UISDK_CONFID_EMPTY 430400010 会议id不能为空 UISDK_SUBJECT_TOO_LONG 430400011 会议主题长度不能超过50 UISDK_VMR_HOST_PASSWORD_LENGTH_LEGAL 430400012 主持人密码长度不合法 UISDK_VMR_NAME_EMPTY 430400013 VMR名字为空 父主题: 其他说明
  • 移动端无法发起桌面共享 针对免费企业的用户,移动端SDK默认不支持发起桌面共享,发起共享时提示如下: 图1 移动端App无法发起共享的提示 如果免费企业的用户需要在移动端端发起桌面共享,请单独申请: 华为云账号完成企业实名认证 请参考:“企业实名认证”。 图2 进入账号中心 图3 企业实名认证入口 联系华为销售人员或者400客服开通免费企业的移动端桌面共享 申请开通时请提供如下的企业实名认证截图: 图4 企业实名认证 父主题: 常见问题
  • 参数描述 表1 结构体HwmP2PConfRecordInfo参数说明 参数 类型 描述 callerInfo HwmCallMemberInfo 主叫方信息。 calleeInfo HwmCallMemberInfo 被叫方信息。 startTime int 呼叫开始时间,精度秒(0时区)。 endTime int 呼叫结束时间,精度秒(0时区)。 isCallOut bool 是否为主动呼出。 mediaType HwmMediaType 媒体类型。 resultCode HwmErrCode 错误码。 resultMsg char[] 错误描述。 isCallEstablished bool 呼叫是否建立。 表2 结构体HwmCallMemberInfo参数说明 参数 类型 描述 number char[] 号码。 nickName char[] 成员名称。 thirdUserId char[] 第三方账号。
  • StartP2pConf 接口描述 该接口用于发起立即会议。 注意事项 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode StartP2pConf(const HwmP2PStartCallInfo *startCallInfo); 回调函数 1 virtual void OnStartP2pConfResult(hwmsdk::HwmErrCode ret, const char* reason, HwmConfInfo *confInfo) {}; 参数描述 参数 是否必须 类型 描述 startCallInfo 是 HwmP2PStartCallInfo 发起立即会议信息。 表1 结构体HwmP2PStartCallInfo参数说明 参数 是否必须 类型 描述 callerInfo 是 HwmCallerInfo 主叫信息。 calleeInfo 是 HwmCalleeInfo 被叫信息。 mediaType 是 HwmMediaType 媒体类型。 表2 结构体HwmCallerInfo参数说明 参数 是否必须 类型 描述 nickName 否 char[] 主叫名称。 表3 结构体HwmCalleeInfo参数说明 参数 是否必须 类型 描述 nickName 否 char[] 被叫名称。 number 是 char[] 号码。如果填分配给账号的sip号码(如+99111244216210249)则呼叫该账号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一,账号密码鉴权时使用。 thirdUserId 是 char[] 第三方用户ID。与number二选一,App ID鉴权时使用。 userUuid 否 char[] 与会者uuid 返回值 表4 返回值 类型 描述 HwmErrCode 成功返回0,其他值表示失败。失败返回值见错误码参考。 HwmConfInfo 会议信息。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** * 发起立即会议 */ int demoStartP2pConfDlg::clickStartP2pConf() { hwmsdkagent::HwmP2PStartCallInfo data{}; //设置主叫信息 string callerNickName = CTools::UNICODE2UTF(CString("主叫名称")); strncpy_s(data.callerInfo.nickName, callerNickName.c_str(), HWM_MAX_DISPLAY_NAME_LEN); //设置被叫信息 string calleeNickName = CTools::UNICODE2UTF(CString("被叫名称")); strncpy_s(data.calleeInfo.nickName, calleeNickName.c_str(), HWM_MAX_DISPLAY_NAME_LEN); string calleeNumber = CTools::UNICODE2UTF(CString("123456")); strncpy_s(data.calleeInfo.number, calleeNumber.c_str(), HWM_MAX_NUMBER_LEN); string calleeThirdUserId = CTools::UNICODE2UTF(CString("123456")); strncpy_s(data.calleeInfo.calleeThirdUserId, calleeThirdUserId.c_str(), HWM_MAX_USER_ID_LEN); //设置媒体类型 data.mediaType = hwmsdkagent::HWM_MEDIA_TYPE_VIDEO //调用SDK接口 int ret = hwmsdkagent::StartP2pConf(&data); return ret; }
  • uploadSelfAvatar: success: fail: 接口描述 该接口用于上传用户自己头像。 注意事项 传入头像文件路径path。 大小限制200k。 只支持jpg、png。 为了头像展示效果,建议图片宽高比为1:1。 回调success表示成功,fail表示失败,error错误信息。 方法定义 1 - (void)uploadSelfAvatar:(NSString *)path success:(void (^)(void))success fail:(void (^)(NSError *error))fail; 参数描述 表1 参数 是否必须 类型 描述 path 是 NSString 图片的全路径 返回值 无 示例代码 1 2 3 4 5 6 7 8 /// 上传用户个人头像 - (void)uploadSelfAvatar { [[HWMBizSdk getBizOpenApi] uploadSelfAvatar:path success:^{ NSLog(@"set succeeded"); } fail:^(NSError *_Nonnull error) { NSLog(@"%@", error.description); }]; }
  • onClickInjectParticipantItemBtnNotify 接口描述 该接口用于定制与会者列表的子项点击事件。 方法定义 1 - (void)onClickInjectParticipantItemBtnNotify:(HWMUISDKInjectParticipantItemBtnInfoModel *)injectBtnInfo; 参数描述 表1 参数说明 参数 是否必须 类型 描述 injectBtnInfo 是 HWMUISDKInjectParticipantItemBtnInfoModel 显示设置窗口信息 表2 结构体HWMUISDKInjectParticipantItemBtnInfoModel参数说明 参数 类型 描述 injectBtn HWMUISDKClickInjectParticipantItemBtn 按钮类型 participantInfo HWMUISDKParticipantItemInfoModel 与会者子项信息 btnId NSString * 按钮Id 表3 枚举HWMUISDKClickInjectParticipantItemBtn说明 枚举值 描述 HWMUISDKClickInjectParticipantItemBtnCallOtherNum 呼叫其他号码按钮 HWMUISDKClickInjectParticipantItemBtnParticipantDetail 查看与会者详情 表4 结构体HWMUISDKParticipantItemInfoModel参数说明 参数 类型 描述 number NSString * 号码 nickName NSString * 与会者昵称 thirdUserId NSString * 与会者三方账号,appId登录时使用 accountId NSString * 华为云会议账号 返回值 无 示例代码 1 2 3 4 5 - (void)onClickInjectParticipantItemBtnNotify:(HWMUISDKInjectParticipantItemBtnInfoModel *)injectBtnInfo { // 收到通知后,对上报信息进行处理,示例代码处理方式为打印上报信息 NSString *info = [injectBtnInfo yy_modelDescription]; [HWMConsoleManager shareInstance].console = [NSString stringWithFormat:@"participant: %@", info]; }
共100000条