集成 SDK 之前请首先在 Xcode 创建您的项目,如果您已有 iOS 项目,可直接集成 SDK。
小鱼SDK实现音视频会议的 API 调用时序图如下:
1 :调用makeCall接口,传入会议号等参数发起呼叫;
1.1 :监听nemoSDKDidCall回调,呼叫入会过程会上报3个状态,NemoCallState_Connecting(正在呼叫入会)、NemoCallState_Connected(入会成功)、NemoCallState_DisConnected(会议断开),收到DisConnected之后代表会议断开,此时reason字段会返回断开原因,state:200表示无异常;
1.2 :入会成功后,SDK会回调 nemoSDKDidRosterChanged 方法,告知用户当前会议中的参会者信息;
2 :通过1.2拿到参会者信息之后,用户通过setCustomLayout接口选择性的请求视频流,如:只看某一个人的画面则只需要请求一路视频流,想看多路就请流多路,请求视频流需要传入参会者ID(participantId),从1.2中获得;
2.1 :调用setCustomLayout之后需要监听 nemoSDKDidVideoChanged 接口,此接口返回2中请求的参会者视频流信息;
3 :渲染,通过2.1拿到视频流信息(NemoLayout)之后,调用setupVideo接口传入对应的参数即可,或者调用updateVideo更新当前已经存在的画面
如果您已经完成准备工作中的内容,则可以参照以下说明传入初始化参数:
v2.29.6及以上版本
v2.29.6及以上版本,支持新鉴权和旧鉴权。
如果您使用新鉴权方式,在初始化时必须传入参数extID、clientID、clientSecret,其余参数可选;
如果您使用旧鉴权方式,在初始化时必须传入参数extID,其余参数可选。
v2.29.6以下版本
v2.29.6以下版本只支持旧鉴权方式,在初始化时必须传入参数extID,其余参数可选。
///初始化SDK,新鉴权方式
XYSettings *settings = [XYSettings settings];
settings.extID = @"您的企业ID";
settings.clientID = @"您的clientID";
settings.clientSecret = @"您的clientSecret";
settings.server = @"sdkapi.xylink.com"
[[NemoSDK sharedInstance] shareNemoSessionSettings:settings];
///初始化SDK,新旧鉴权方式
XYSettings *settings = [XYSettings settings];
settings.extID = @"您的企业ID";
settings.server = @"cloud.xylink.com"
[[NemoSDK sharedInstance] shareNemoSessionSettings:settings];
第三方登录接口
/// 登录外部用户(v3.3.4废弃,请使用三方账号登录2.0代替)
///
/// 登录之后才可以使用SDK提供的会议服务,为了避免重复登录,请您务必在登录前调用“- (BOOL)isLogon"接口检查当前是否已经登录
/// extUserId是SDK标识用户的唯一凭据,每位用户只能有唯一一个extUserId与之对应
///
/// 回调方法 ”- (void)nemoSDKDidLoginResult:(nullable XYUser *)user success:(BOOL)success“
///
/// @param extUserId 用户唯一id,最大50个字符,支持大小写英文字母、数字、上横线“-”、下横线“_”
/// @param userName 外部用户名
/// @param enterpriseId 企业ID
- (void)loginExternalAccount:(NSString * _Nonnull)extUserId
userName:(NSString * _Nullable)userName
enterpriseId:(NSString *)enterpriseId;
/// 三方账号登录2.0
/// @param extUserId 用户唯一id,最大50个字符,支持大小写英文字母、数字、上横线“-”、下横线“_”
/// @param authCode 认证授权码
/// @param displayName 用户名称
- (void)loginExtUserId:(NSString *)extUserId
authCode:(NSString *)authCode
displayName:(NSString *)displayName;
登录结果回调
/// 登录结果
///
/// 只有在调用登录接口后会触发回调,退出登录不会触发
///
/// @param user 登陆成功时返回用户信息,登录失败时返回对应的错误码
/// @param success 是否登录成功
- (void)nemoSDKDidLoginResult:(nullable XYUser *)user success:(BOOL)success;
用户信息参数
@interface XYUser : NSObject
@property (nonatomic, assign) long userId; ///<用户ID
@property (nonatomic, assign) long deviceId; ///<设备ID
@property (nonatomic, assign) int deviceType; ///<设备类型
@property (nonatomic, copy) NSString *callNumber; ///<号码
@property (nonatomic, copy) NSString *displayName; ///<用户名
@property (nonatomic, copy) NSString *accessToken; ///<鉴权token,请不要对外泄漏
@property (nonatomic, copy) NSString *refreshToken; ///<刷新token,请不要对外泄漏
@property (nonatomic, assign) long validDuration;; ///<accessToken的有效时长
@property (nonatomic, copy) NSString *error; ///<错误信息
@end
呼叫入会接口
/// 呼叫入会
///
/// 请监听nemoSDKDidConnectStateWithNemo:接口先查看是否连接服务器,再做呼叫操作。不要在nemoSDKDidLoginResult:之后直接调用呼叫操作
/// 调用此接口即可进入小鱼会议室,您需要监听会议状态回调接口来确认是否入会成功,根据返回的呼叫状态参数处理相应的逻辑
///
/// 回调方法”- (void)nemoSDKDidCallStateChange:(NemoMeetingStateInfo *)info“
/// NemoCallState_Connected = 0, ///<已连接,代表入会成功
/// NemoCallState_DisConnected, ///<未连接,代表会议结束
/// NemoCallState_Connecting, ///<正在连接,代表正在呼叫中
///
/// @param number 会议号或终端号,不可为空
/// @param password 会议密码或终端密码,可为空
/// @param config 会议配置参数
- (void)makeCall:(NSString *)number password:(NSString *)password config:(NemoCallConfig * _Nullable)config;
结束会议接口
/// 挂断当前会议
///
/// 回调方法 ”- (void)nemoSDKDidCallStateChange:(NemoMeetingStateInfo *)info“
///
- (void)hangup;