# 实现视频通话
本文档为您展示 实现视频通话(访客侧)的相关步骤,帮助您在远程银行和视频客服的场景下实现智能排队、屏幕共享、全景录像、访客管理的相关能力。
当您成功获取 Juphoon Guest Plugin 之后,您可以快速集成视频通话服务,同时体验本产品的基本业务流程。
TIP
我们所有的方法都建议在主线程调用,否则可能会出现异常无法正常使用,回调接口也都在主线程上报。
# 快速搭建 Plugin
# 1. 登录
登录菊风账号,调用 login (opens new window) ,登录过程中进行初始化登录配置。
/**
* @brief 初始化并登录,登录结果通过 {@link JCCCommonCallback#onLogin:reason: onLogin} 回调通知
* @param config 初始化和登录的基本配置信息
* @return 接口调用结果
* - YES 表示调用成功
* - NO 表示调用异常
*/
- (BOOL)login:(JCCLoginParam *)param;
初始化参数详见 JCCLoginParam (opens new window) 。
/// 初始化相关参数
@interface JCCLoginParam : NSObject
/// appKey(必填)
@property (nonatomic, copy) NSString *appKey;
/// 服务器地址(必填)
@property (nonatomic, copy) NSString *server;
/// 应用名(选填)
@property (nonatomic, copy) NSString *appName;
/// 设置SDK信息存储目录,该目录下的log目录为日志目录(选填)
@property (nonatomic, copy) NSString *sdkInfoDir;
/// 用户名(必填)
@property (nonatomic, copy) NSString *userName;
/// 用户昵称(选填)
@property (nonatomic, copy) NSString *nickName;
/// 终端登录类型,支持多终端登录,默认所有终端相同会导致互踢(选填)
@property (nonatomic, copy) NSString *terminalType;
/// 设备id(选填)
@property (nonatomic, copy) NSString *deviceId;
/// token校验类型(选填)
@property (nonatomic, copy) NSString *tokenType;
/// token(选填)
@property (nonatomic, copy) NSString *token;
/// S3国密密钥(选填)
@property (nonatomic, copy) NSString *certificate;
/// 帐户分录, 如果支持国密S3则需要设置certificate,否则不设置(选填)
@property (nonatomic, copy) NSString *accountEntry;
/// 屏幕共享插件groupId
@property (nonatomic, copy) NSString *shareGroupId;
/// 屏幕共享插件bundle id
@property (nonatomic, copy) NSString *shareExtension;
/// 加速云KEY
@property (nonatomic, copy) NSString *accelerateKey;
/// 加速云KEY密钥
@property (nonatomic, copy) NSString *accelerateKeySecret;
/// 是否控制台日志输出, 默认true
@property (nonatomic, assign) bool logConsole;
/// 是否本地文件日志输出, 默认true
@property (nonatomic, assign) bool logLocalFile;
/// 是否开启 RPC 抗信令丢包控制(70%的上下行信令丢包), 默认false
@property (nonatomic, assign) bool looseTimeoutControl;
@end
示例代码:
JCCLoginParam *config = [[JCCLoginParam alloc] init];
config.appKey = @"appkey";
config.server = @"server";
config.userName = @"userName";
config.appName = @"菊风访客";
BOOL ret = [JCCRoomManager.shared login:config];
# 2. 获取登录状态
调用 getClientLoginState (opens new window) 获取登录状态,返回登录状态详见 JCCClientState (opens new window) 。
/**
* @brief 获取当前登录状态
* @return 当前登录状态
*/
- (JCCClientState)getClientLoginState;
# 3. 加入房间
调用 join (opens new window) 方法,加入房间进行通话。
/**
* 加入房间
*
* 该方法让用户加入通话房间,在同一个房间内的用户可以互相通话。<br>
* 如果用户已在房间中,必须退出当前房间,即处于空闲状态,才能进入其他房间,否则将直接返回 false,且不会收到回调通知。
* @param roomId 房间号
* @param joinParam JRTCRoomJoinParam 对象,传 nil 则使用默认配置
* @return 接口调用结果
* - true: 接口调用成功,会收到 {@link JCCRoomCallback.onJoin:reason} 回调
* - false: 接口调用异常
*/
- (bool)join:(NSString* __nonnull)roomId joinParam:(JCCRoomJoinParam * __nullable)joinParam;
示例代码:
JCCRoomJoinParam *param = [JCCRoomJoinParam new];
param.isUploadLocalAudio = YES;
param.isUploadLocalVideo = YES;
...
[JCCRoomManager.shared join:@"roomId" joinParam:param];
# 4. 建立通话
# 5. 离开房间
/**
* 离开房间
* @return 接口调用结果
* - true: 接口调用成功,非空闲状态下,会收到 {@link JCCRoomCallback.onLeave} 回调
* - false: 接口调用异常
*/
- (bool)leave;
# 6. 登出
/**
* @brief 登出并销毁
* @return 调用是否成功
*/
- (BOOL)logout;
示例代码:
JCCGuestManager.getInstance().logout();