华为云用户手册

  • videoWindowDockIcon 接口描述 该接口用于定制视频通话时,视频窗口最小化dock栏图标以及共享情况下吸附窗口显示的图标。 方法定义 1 - (NSImage *)videoWindowDockIcon; 参数描述 无 返回值 无 示例代码 - (NSImage *)videoWindowDockIcon { return [NSImage imageNamed:@"iconMeeting"]; }
  • downloadHeadPortraitWithThirdAccount: account: number: completionBlock: 接口描述 该接口用于定制登录后的头像显示。 图1 生效后拦截头像显示效果 注意事项 未登录的头像不支持自定义。 头像支持两种情况:一种主动上传,见上传个人头像接口;一种为注入实现,若两种都实现只会进行拦截的实现,不会从服务端下载上传的头像。 方法定义 1 - (void)downloadHeadPortraitWithThirdAccount:(NSString *)thirdAccount account:(NSString *)account number:(NSString *)number completionBlock:(void (^)(NSError * _Nullable, NSString * _Nullable))completionBlock 参数描述 表1 参数 类型 描述 thirdAccount NSString appid登录场景下优先使用此字段 account NSString 账号密码登录场景下 优先使用此字段 number NSString 跨企业场景优先使用此字段 返回值 无 示例代码 - (void)downloadHeadPortraitWithThirdAccount:(NSString *)thirdAccount account:(NSString *)account number:(NSString *)number completionBlock:(void (^)(NSError * _Nullable, NSString * _Nullable))completionBlock { if (completionBlock) { /// 将图片路径返回给SDK NSInteger index = arc4random() % 3; NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:[NSString stringWithFormat:@"head_icon_%lu", index] ofType:@"png"]; completionBlock(nil, path); } }
  • 社交分享定制 - (NSView *)socialShareView:(HWMSDKMeetingInfoModel* )confInfo; 接口描述 该接口用于分享会议拦截处理。实现代理后会拦截SDK调起分享界面的方法,如下图红框标注。 图1 分享拦截SDK弹窗 注意事项 如果实现该协议方法,则会中调用分享功能,会回调到该方法。窗口的位置以及界面的显示隐藏都有SDK内部控制。 示例代码 - (NSView *)socialShareView:(HWMSDKMeetingInfoModel *)meetingInfo { if (!self.socialView) { self.socialView = [[HWMSocialView alloc] initWithFrame:NSMakeRect(0, 0, 500, 300)]; self.socialView.wantsLayer = YES; self.socialView.layer.backgroundColor = [NSColor whiteColor].CGColor; } self.socialView.meetingInfo = meetingInfo; return self.socialView; } - (NSView *)socialShareView:(HWMConfStateInfo *)confInfo; 接口描述 该接口用于分享会议拦截处理。实现代理后会拦截SDK调起分享界面的方法,如下图红框标注。 图2 分享拦截SDK弹窗 注意事项 如果实现该协议方法,则会中调用分享功能,会回调到该方法。窗口的位置以及界面的显示隐藏都有SDK内部控制。 示例代码 - (NSView *)socialShareView:(HWMConfStateInfo *)confDetail { if (!self.socialView) { self.socialView = [[HWMSocialView alloc] initWithFrame:NSMakeRect(0, 0, 500, 300)]; self.socialView.wantsLayer = YES; self.socialView.layer.backgroundColor = [NSColor whiteColor].CGColor; } self.socialView.confDetail = confDetail; return self.socialView; } 父主题: 界面定制
  • 清除界面配置 设置相关的代理后如果需要清除对应代理,可以置为nil,根据需求在对应位置设置。 1 2 3 4 [HWMSdk getSdkConfig].socialShareHandler = nil; [HWMSdk getSdkConfig].confUIHandler = nil; [HWMSdk getSdkConfig].contactUIHandler = nil; [HWMSdk getSdkConfig].headPortraitApiHandler = nil; 父主题: 界面定制
  • 界面配置 设置自定义界面的代理,根据需求在对应位置设置代理。可以在初始化SDK的时候配置,也可以在使用时配置。 1 2 3 4 [HWMSdk getSdkConfig].socialShareHandler = 代理对象; // 可选,社交分享定制代理,用于定制会中分享能力 [HWMSdk getSdkConfig].confUIHandler = 代理对象; // 可选,会中部分UI代理 [HWMSdk getSdkConfig].contactUIHandler = 代理对象; // 可选,会中邀请联系人UI 定制代理 [HWMSdk getSdkConfig].headPortraitApiHandler = 代理对象; // 可选,头像拦截显示定制代理 父主题: 界面定制
  • 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); }]; }
  • logout 接口描述 该接口用于退出已登录的会议账号。 注意事项 请在已登录的场景下调用。 回调error表示错误信息,nil表示成功。。 方法定义 1 - (void)logout:(_Nonnull HWMSDKCompleteHandler)callback; 参数描述 无。 返回值 表1 退出返回HWMLogoutResult 参数 类型 描述 userUuid NSString * 账号uuid account NSString * 登录账号 thirdAccount NSString * appid登录的三方账号 示例代码 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(@"登出失败"); } }]; }
  • loginBySSO: 接口描述 该接口用于通过SSO的方式登录和鉴权。 注意事项 除匿名入会外,在使用其他业务之前必须进行成功登录。 方法定义 1 - (void)loginBySSO:(HWMSSOLoginParam *)param callback:(HWMSDKLoginCompleteHandler)callback; 参数描述 表4 HWMSSOLoginParam参数说明 参数 是否必须 类型 描述 domain 是 NSString * 企业 域名 userTicket 是 NSString * code authServerType 是 HWMOpenAuthServerType 鉴权服务器类型 表5 枚举HWMOpenAuthServerType说明 值 描述 HWMOpenAuthServerTypeOauth2 单点登录 返回值 参考:表登录返回HWMLoginResult 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /// SSO 登录接口 - (void)login { HWMSSOLoginParam *param = [[HWMSSOLoginParam alloc] init]; param.domain = domain; param.code = code; param.authServerType = HWMOpenAuthServerTypeOauth2; [[HWMSdk getOpenApi] loginBySSO:param callback:^(NSError * _Nullable error, HWMLoginResult * _Nullable result) { if (error == nil) { NSLog(@"登录成功"); }else{ NSLog(@"登录失败"); } }]; }
  • login:password: 接口描述 该接口用于通过账号密码鉴权登录。 注意事项 创建会议,被邀入会等功能只有在登录后才能使用,若不登录,将无法体验完整会议功能。 回调error表示错误信息,nil表示成功。 方法定义 1 - (void)login:( NSString * _Nonnull )account password:( NSString * _Nonnull )password callback:(_Nonnull HWMSDKLoginCompleteHandler)callback;
  • 示例代码 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(@"登出失败"); } }]; }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /// 编辑会议 - (void)editConf { HWMOrderConfParam * param = [[HWMOrderConfParam alloc] init]; param.confSubject = @"会议名称"; param.startTime = 1598759580; param.duration = 15; param.isAutoRecord = NO; param.timeZone = 56; param.vmrId = @"";// vmr会议需要传入vmrId param.callInRestrictionType = HWMJoinCallRestrictionAll; param.confId = @"986927771"; [[HWMBizSdk getBizOpenApi] editConf:param callback:^(NSError *_Nullable error, id _Nullable result) { if (error) { NSLog(@"编辑会议失败:%@", error.localizedDescription); } else { 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(@"预约会议成功"); } }]; }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /// 加入会议 - (void)joinMeeting { HWMJoinConfParam *param = [[HWMJoinConfParam alloc] init]; param.confId = @"989156631"; param.password = getPassword(); param.nickname = @"杭州会场"; param.isCameraOn = NO; param.isMicOn = YES; [[HWMSdk getOpenApi] joinConf:param callback:^(NSError * _Nullable error, id _Nullable result) { if (error) { NSLog(@"入会失败%@", error.localizedDescription); } else { NSLog(@"入会成功"); } }]; } 在未登录状态下调用该接口时,nickname参数必填。
  • 示例代码 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 /// 创建会议 - (void)creatMeeting { HWMCreateConfParam *param = [[HWMCreateConfParam alloc] init]; param.subject = @"会议标题"; param.isCameraOn = YES;// 是否打开摄像头, 默认关闭 param.isMicOn = YES;// 是否打开麦克风, 默认打开 param.isAutoRecord = NO;// 是否打开会议录制, 默认关闭 param.callInRestrictionType = HWMJoinConfRestrictionAll;// 允许入会范围 // 与会者列表 if (self.selectedMemebrs) { __block NSMutableArray *members = [[NSMutableArray alloc] init]; [self.selectedMemebrs enumerateObjectsUsingBlock:^(HWMContactSelectedModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { HWMAttendeeInfo *member = [[HWMAttendeeInfo alloc] init]; member.accountId = obj.accountId; member.number = obj.number; member.name = obj.name; member.thirdUserId = obj.thirdUserId; [members addObject:member]; }]; param.members = members; } [[HWMSdk getOpenApi] createConf:param callback:^(NSError * _Nullable error, HWMCreateConfResult * _Nullable result) { [self hideLoading]; if (error) { NSLog(@"创会失败%@", error.localizedDescription); }else{ NSLog(@"创会成功"); } }]; } 与会者列表可以携带与会者创建会议,创建会议成功后服务端会呼叫携带的与会人入会,不需要可以不传。
  • 示例代码 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 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 /// 初始化 HWMOpenSDKConfig *config = [[HWMOpenSDKConfig alloc] init]; config.appId = getAppId();// 传入申请到的企业AppId BOOL result = [HWMSdk initWithConfig:config]; if (result) { NSLog(@"初始化成功"); } 典型场景和接口参考中的示例代码仅作为示例用的伪代码,不能直接使用。
  • 3类接口描述 Mac SDK的接口分为同步Api、异步Api、全局回调。 同步Api:App主动调用SDK的接口,用于完成某项任务。比如初始化接口initWithConfig。 异步Api:调用SDK接口的时候都会以callback回调方式请求结果。 全局回调:由华为云会议服务端或SDK内部触发的事件通知,SDK以 消息通知 接口的形式通知给App。比如会议来电通知onConfStatusChanged。
  • 参数描述 表1 参数说明 参数 类型 描述 status HWMSDKConfStatus 会议通话状态。 表2 枚举HWMSDKConfStatus说明 枚举值 描述 HWMSDKConfStatusIdle 空闲状态 (会议结束) HWMSDKConfStatusIncoming 正在来电 HWMSDKConfStatusCallingOut 正在呼出 HWMSDKConfStatusWaiting 正在等待 HWMSDKConfStatusConnected 已接通 HWMSDKConfStatusRecalling 正在重呼
  • 注意事项,使用通知前请查看 需要使用通知方法时,必须注册代理对象。 两种方式: 初始化时,对HWMOpenSDKConfig对象的属性赋值 1 2 3 HWMOpenSDKConfig *config = [[HWMOpenSDKConfig alloc] init]; //示例根据需求使用对应代理 config.globalHandler = [NotifyMessageHandler sharedInstance]; 使用前使用[HWMSdk getSdkConfig]获取初始化对象给属性赋值 1 2 //示例根据需求使用对应代理 [HWMSdk getSdkConfig].globalHandler = [NotifyMessageHandler sharedInstance]; 代理方法必须写在代理对象中 使用代理时保证代理对象存在 父主题: 通知参考
  • setLanguage:languageCode: 接口描述 该接口用于自定义设置SDK国际化语言,默认是中文。 注意事项 实现自定义语言,要求在 en.lproj 同级目录下创建对应的国际化文件。比如新增阿拉伯语则可以创建 ar.lproj/Localizable.strings。通过该接口设置的语言应与系统当前语言保持一致 方法定义 1 + (void)setLanguage:(HWMSdkLanguageType)language languageCode:(NSString *)languageCode;
  • initAsyncWithConfig:callback: 接口描述 用于启动并且子线程初始化SDK。 注意事项 该接口用于启动并初始化SDK,在调用其他接口之前必须先调用初始化接口。 返回值只代表接口是否调用成功。 方法定义 1 + (void)initAsyncWithConfig:(HWMOpenSDKConfig *)config callback:(_Nonnull HWMSDKInitCompleteHandler)callback;
  • 示例代码 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(@"登出失败"); } }]; }
  • 示例代码 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 = HWMJoinConfRestrictionAll; param.confId = @"986927771"; [[HWMBizSdk getBizOpenApi] editConf:param callback:^(NSError *_Nullable error, id _Nullable result) { if (error) { NSLog(@"编辑会议失败:%@", error.localizedDescription); } else { NSLog(@"编辑会议成功"); } }]; }
  • 示例代码 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(@"预约会议成功"); } }]; }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /// 加入会议 - (void)joinMeeting { HWMJoinConfParam *param = [[HWMJoinConfParam alloc] init]; param.confId = @"989156631"; param.password = getPassword(); param.nickname = @"杭州会场"; param.isCameraOn = NO; param.isMicOn = YES; [[HWMSdk getOpenApi] joinConf:param callback:^(NSError * _Nullable error, id _Nullable result) { if (error) { NSLog(@"入会失败%@", error.localizedDescription); } else { NSLog(@"入会成功"); } }]; } 在未登录状态下调用该接口时,nickname参数必填。
  • 示例代码 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 /// 创建会议 - (void)creatMeeting { HWMCreateConfParam *param = [[HWMCreateConfParam alloc] init]; param.subject = @"会议标题"; param.confType = HWMConfTypeVideoData; param.needPassword = YES;// 会议是否需要设置密码,默认不需要 param.isCameraOn = YES;// 是否打开摄像头, 默认关闭 param.isMicOn = YES;// 是否打开麦克风, 默认打开 param.isRecordOn = NO;// 是否打开会议录制, 默认关闭 param.joinConfRestrictionType = HWMJoinConfRestrictionAll;// 允许入会范围 // 与会者列表 if (self.selectedMemebrs) { __block NSMutableArray *members = [[NSMutableArray alloc] init]; [self.selectedMemebrs enumerateObjectsUsingBlock:^(HWMContactSelectedModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { HWMCreateConfMember *member = [[HWMCreateConfMember alloc] init]; member.accountId = obj.accountId; member.number = obj.number; member.name = obj.name; member.thirdUserId = obj.thirdUserId; [members addObject:member]; }]; param.members = members; } [[HWMSdk getOpenApi] createConf:param callback:^(NSError * _Nullable error, HWMCreateConfResult * _Nullable result) { [self hideLoading]; if (error) { NSLog(@"创会失败%@", error.localizedDescription); }else{ NSLog(@"创会成功"); } }]; } 与会者列表可以携带与会者创建会议,创建会议成功后服务端会呼叫携带的与会人入会,不需要可以不传。
  • 示例代码 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 /// 初始化 HWMOpenSDKConfig *config = [[HWMOpenSDKConfig alloc] init]; config.appId = getAppId();// 传入申请到的企业AppId config.appGroupIndentifier = getAppGroupIndentifier();//必须, 屏幕共享 extension的appGroup。用于屏幕共享时,共享进程和主进程通信,详情可参考苹果官方Extension相关文档 BOOL result = [HWMSdk initWithConfig:config]; if (result) { NSLog(@"初始化成功"); } 典型场景和接口参考中的示例代码仅作为示例用的伪代码,不能直接使用。
  • 3类接口描述 iOS SDK的接口分为同步Api、异步Api、全局回调。 同步Api:App主动调用SDK的接口,用于完成某项任务。比如初始化接口initWithConfig。 异步Api:调用SDK接口的时候都会以callback回调方式请求结果。 全局回调:由华为云会议服务端或SDK内部触发的事件通知,SDK以消息通知接口的形式通知给App。比如会议来电通知onConfStatusChanged。
共100000条