云视频会议Mac UI-SDK提供了一套用于入视频会议的接口集合,开发者可以通过调用Alimeeting UI SDK(下面统一简称SDK),可以在自己的Mac软件中快速集成带UI的云视频会议。
1 概述
云视频会议Mac UI-SDK提供了一套用于入视频会议的接口集合,开发者可以通过调用Alimeeting UI SDK(下面统一简称SDK),可以在自己的Mac软件中快速集成带UI的云视频会议。
SDK主要功能点包括:
1.加入音视频会议
2.会议UI界面定制
3.会议信息&&SLS定制
4.会议状态回调
5.人员入离会状态回调
本文面向有一定Cocoa以及objectiveC基础的开发者,旨在引导读者快速接入SDK。
2 SDK文件结构
SDK&&SDK-Sample附件下载地址:
首先,下载解压SDK文件压缩包,可以看到以下文件:
AliMeetingUISDK.framework:UI-SDK库
SDKSample:使用AliMeetingUISDK.framework的Demo代码
3 快速入门教程
3.1 开发环境准备
在接入SDK前需要以下环境:
名称 | 要求 |
---|---|
macOS版本 | macOS 10.11及以上 |
Xcode版本 | Xcode 10.3及以上 |
3.2 创建项目
3.2.1 创建流程
1. 创建Cocoa App
2. 创建好的工程结构如下
3. 添加SDK库和第三方依赖库
4. 配置plist工程属性,添加音视频会议所需要的权限
5. 关闭应用的沙盒模式
6. 关闭应用Hardened Runtime模式
注:如果确实需要Hardened Runtime模式,可以进行如下设置
3.3 业务代码集成
3.3.1入会参数配置
1. 构建入会信息
构建入会信息,添加各项入会参数,详细信息请参考3.5.1会议配置枚举或SDK中的头文件AMUISDKMeetingConfig.h
NSDictionary*meetingConfig =@{
AMUISDKMeetingConfigClientAppId:clientAppId,
AMUISDKMeetingConfigSlsInfo:slsInfo,
AMUISDKMeetingConfigMeetingUUID:meetingUUID,
AMUISDKMeetingConfigMemberUUID:memberUUID,
AMUISDKMeetingConfigMeetingToken:meetingToken,
AMUISDKMeetingConfigMeetingDomain:meetingDomain,
AMUISDKMeetingConfigUserId:userId
};
注:meetingConfig以下参数需要从ISV服务端获取:
(关于云视频会议的开发流程请参考文档:https://help.aliyun.com/document_detail/145896.html )
AMUISDKMeetingConfigClientAppId
AMUISDKMeetingConfigSlsInfo
AMUISDKMeetingConfigMeetingUUID
AMUISDKMeetingConfigMemberUUID
AMUISDKMeetingConfigMeetingToken
AMUISDKMeetingConfigMeetingDomain
2. 构建企业定制信息
构建界面定制信息,添加各项界面参数,详细信息请参考3.5.2UI配置枚举或参考SDK中的头文件AMUISDKGUIConfig.h
NSDictionary*uiConfig =@{
AMUISDKGuiConfigLogoBanner:logoBannerName,
AMUISDKGuiConfigMeetingTopic:meetingTopic,
AMUISDKGuiConfigMeetingCode:meetingCode,
AMUISDKGuiConfigMeetingRateUrl:meetingRateUrl
};
3.3.2 回调配置
1. 会议状态回调
详细信息请参考3.5.3回调状态码枚举或SDK中的头文件AMUISDKMeetingEventDelegate.h
@interfaceMeetingCallBack:NSObject<AMUISDKMeetingEventDelegate>
@end
@implementationMeetingCallBack
//已成功进入会议回调
-(void) onMeetingJoined{
NSLog(@"onMeetingJoined");
//DO SOMETHING
}
// 会议正常结束回调
-(void) onMeetingFinish:(AMUISDKMeetingFinishCode) code reason:(NSString*) reason{
NSLog(@"onMeetingFinish");
//DO SOMETHING
}
// 入会异常回调
-(void) onError:(AMUISDKMeetingErrorCode) code reason:(NSString*) reason{
NSLog(@"onError");
//DO SOMETHING
}
//(可选)邀请成员回调
-(void) onInviteClicked:(NSString*) reason{
NSLog(@"onInviteClicked");
//DO SOMETHING
}
// (可选)成员加入/离开消息回调
-(void) onMeetingUserStatusChange:(AMSDKMeetingUser*)meetingUser event:(AMSDKUserStatusEvent)event{
NSLog(@"onMeetingUserStatusChange");
//DO SOMETHING
}
2. 本地日志回调
@interface demoLogger :NSObject<AMSDKLoggerProtocol>
@end
@implementation demoLogger
+(void)action:(nonnull NSString*)module point:(nonnull NSString*)monitorPoint params:(NSDictionary*_Nullable)params{
}
+(void)debug:(nonnull NSString*)tag msg:(nonnull NSString*)msg {
NSLog(@"%@ : %@", tag, msg);
}
+(void)error:(nonnull NSString*)tag msg:(nonnull NSString*)msg {
NSLog(@"%@ : %@", tag, msg);
}
+(void)error:(nonnull NSString*)module point:(nonnull NSString*)monitorPoint params:(NSDictionary*_Nullable)params{
}
+(void)event:(nonnull NSString*)module point:(nonnull NSString*)monitorPoint params:(NSDictionary*_Nullable)params{
}
+(void)info:(nonnull NSString*)tag msg:(nonnull NSString*)msg {
NSLog(@"%@ : %@", tag, msg);
}
+(void)warn:(nonnull NSString*)tag msg:(nonnull NSString*)msg {
NSLog(@"%@ : %@", tag, msg);
}
@end
3.3.3 新建窗体,入会
//新建主窗体,传入各项参数和回调
_win =[[AMUISDKMeetingMainWindow alloc] initWithUIConfig:uiConfig meetingConfig:meetingConfig delegate:self];
//设置日志回调
[AMSDKLogger setLoggerPrinter:[demoLogger class]];
//加入会议
[_win joinMeeting];
3.4 编译、运行
3.5 枚举回调定义
3.5.1 会议配置枚举
//! 会议初始化配置项类型
typedefNSString*AMUISDKMeetingConfigKey;
//! 【Required】产品ID,类型NSString
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigClientAppId;
//! 【Required】SLS信息,类型NSString
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigSlsInfo;
//! 【Required】设置会议UUID,类型NSString
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigMeetingUUID;
//! 【Required】设置会议 Publisher UUID,类型NSString
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigMemberUUID;
//! 【Required】设置会议Token,类型NSString
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigMeetingToken;
//! 【Required】设置会议域名,类型NSString
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigMeetingDomain;
//! 【Required】设置人员UserId,类型NSString
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigUserId;
//! 【Optional】入会时是否静音,类型BOOL,默认NO
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigMuteAudio;
//! 【Optional】入会时是否开启扬声器,类型BOOL,默认YES
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigSpeakerEnabled;
//! 【Optional】入会时是否默认关闭本地摄像头,类型BOOL,默认NO
externAMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigMuteVideo;
//! 【Optional】入会是不开视频,只需要音频,不需要视频
AMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigAudioOnly=@"audioOnly";
//! 【Optional】入会时没有检测到麦克风是否允许入会,类型BOOL,默认 YES
AMUISDKMeetingConfigKeyconstAMUISDKMeetingConfigAllowNoMic=@"allowNoMic";
3.5.2 UI配置枚举
//! UI初始化配置项类型
typedefNSString*AMUISDKGuiConfigKey;
//! 【Optional】会议产品Logo文件地址,类型NSString
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigAppLogo;
//! 【Optional】企业Logo文件地址,类型NSString
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigLogoBanner;
//! 【Optional】本场会议名称,类型NSString
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigMeetingTopic;
//! 【Optional】本场会议时间区间,类型NSString
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigMeetingTime;
//! 【Optional】本场会议口令信息,类型NSString
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigMeetingCode;
//! 【Optional】本场会议分享URL,类型NSString
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigMeetingUrl;
//! 【Optional】 会议结束后的评价页开放URL,需要传入一个评价页的h5
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigMeetingRateUrl;
//! 【Optional】入会时是否开启会议成员邀请回调,类型BOOL,默认NO
externAMUISDKGuiConfigKeyconstAMUISDKGuiConfigInviteMember;
3.5.3 回调状态码枚举
typedef NS_ENUM(NSInteger,AMUISDKMeetingErrorCode)
{
//! 非法参数,接口调用参数不正确
AMUISDKMeetingErrorCodeIllegalParameters=0,
//! 会议初始化失败,如无法获取会议信息,拉去配置
AMUISDKMeetingErrorCodeInitializedFailed=1,
//! 设备无权限
AMUISDKMeetingErrorCodeDevicePermissionNotGranted=2,
//! 无麦克风设备
AMUISDKMeetingErrorCodeNoDevice=3,
//! 无法连接媒体服务
AMUISDKMeetingErrorCodeMediaServerConnectFailed=4,
//! 会议并发满了
AMUISDKMeetingErrorCodeRoomFull=5,
//! 入会超时
AMUISDKMeetingErrorCodeJoinMeetingTimeout=6,
//!网络不可用
AMUISDKMeetingErrorCodeNetworkUnAvailable=7,
//!媒体协商失败
AMUISDKMeetingErrorCodeMediaNegotiationFailed=8
};
typedef NS_ENUM(NSInteger,AMUISDKMeetingFinishCode)
{
//!主动退出会议
AMUISDKMeetingFinishCodeLeaveBySelf=0,
//!被动退出会议
AMUISDKMeetingFinishCodeLeaveByKick=1,
//!挂断所有人
AMUISDKMeetingFinishCodeLeaveByHangupAll=2,
//!同一个UserID的用户进入了会议
AMUISDKMeetingFinishCodeOtherClientJoined=3,
//!会议评价完成
AMUISDKMeetingFinishCodeMeetingRateComplete=4,
//!系统挂起
AMUISDKMeetingFinishCodeSystemWillSleep=5
};
typedef NS_ENUM(NSInteger,AMSDKUserStatusEvent){
//! 成员上线
AMSDKUserStatusEventOnline=0,
//! 成员离线
AMSDKUserStatusEventOffline=1,
//!静音
AMSDKUserStatusEventAudioMute=2,
//!取消静音
AMSDKUserStatusEventAudioUnMute=3,
//!禁视频
AMSDKUserStatusEventVideoMute=4,
//!打开视频
AMSDKUserStatusEventVideoUnMute=5,
//!说话中
AMSDKUserStatusEventStartTalking=6,
//!结束说话
AMSDKUserStatusEventStopTalking=7,
//!主讲人切换
AMSDKUserStatusEventMainSpeaker=8,
};
SDK ReleaseNote
1.0.0.1(2020-01-17)
sdk 初始化版本
1.0.0.2(2020-03-17)
增加成员加入、离开消息回调
增加可配置邀请成员回调
增加无麦克风可入会
关闭摄像头时关摄像头灯
1.0.0.3(2020-04-27)
修复了会议token无效的问题
- 本页导读 (0)