GJDigitalSDK.framework、WebRTC.framework 下载:下载Demo
开发⼯具: Xcode
framework
GJDigitalSDK.framework
WebRTC.framework
改为Embed & Sign
<key>NSLocalNetworkUsageDescription</key>
<string>获取本地网络权限</string>
<key>NSMicrophoneUsageDescription</key>
<string>需要录音权限来语音识别</string>
<key>NSCameraUsageDescription</key>
<string>需要相机权限</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>需要相机权限保存图片到相册</string>
/*
* SDK初始化
* - Parameters:
* - appId: appId
* - appKey: appkey
* - block: 回调初始化成功-执行toStart
*/
- (void)initWithAppId:(NSString *)appId appKey:(NSString *)appKey block:(void (^) (BOOL isSuccee, NSString *errorMsg))block;
/*
* 开始初始化通讯并且是否开启本地摄像头
*/
-(void)toStart;
/*
* 结束通讯
*/
-(void)toStop;
/*
* 客户端控制开启、关闭asr识别
* isOpen yes:打开,no:关闭
*/
- (void)changeAsrEvent:(BOOL)isOpenAsr;
/*
*给中控发送文本
* @param content 文本内容
* @param interrupt 是否打断上一句
*/
- (void)commandEvent:(NSString *)content interrupt:(BOOL)interrupt;
/*
*发送说话内容给中控
* @param content 文本内容
* @param wavPath 音频地址
* @param interrupt 是否打断上一句
*/
- (void)commandEvent:(NSString *)content wavPath:(NSString *)wavPath interrupt:(BOOL)interrupt;
@protocol DigitalViewDelegate <NSObject>
@optional
/*
*错误信息返回码
*/
- (void)onError:(NSInteger)errorCode errorMsg:(NSString *)errorMsg;
/*
*远程视频通讯完成
*/
- (void)onRTCReomteSuccess;
/*
*中控获取到渲染端信息后通知客户端
*@param ID id
*@param name name
*/
- (void)onRender:(NSString *)ID name:(NSString *)name;
/*
*识别出来的asr数据 vad 开始信息和结束信息
*@param asrText asr识别文本
*@param vad vad[@"state"] 1开始播放 0播放结束
*/
-(void)detectedSpeech:(NSString*)asrText vad:(NSDictionary *)vad;
/*
*一句话开始播放和停止播放状态
*dic[@"state"] == playStart 开始播放, ==playStop 播放结束
*dic[@"content"] 播放文本
*/
-(void)playState:(NSDictionary *)dic;
/*
*播放异常 可重试播放或终止
*/
- (void)playException:(NSString *)wavUrl content:(NSString *)content;
/*
*webrtc连接状态回调
*@param state RTCIceConnectionState
*/
- (void)didIceConnectionChange:(RTCIceConnectionState)state;
/*
*中控结束通话,发送bye事件
*/
- (void)onByeBye;
/*
*是否成功加载数字人
*/
- (void)onVideoShow:(BOOL)isSuccess :(float)progress;
/*
*获取本地视频的视频流
*/
- (void)capturer:(RTCVideoCapturer *)capturer didCaptureVideoFrame:(RTCVideoFrame *)frame;
/*
提问后获取答案成功
- Parameters:
- answerStr: 答案
- filePath: filepath
*/
- (void)answerWithAnserStr:(NSString *)answerStr filePath:(NSString *)filePath;
/*
提问后获取答案失败
- Parameters:
- errorMsg: 错误
*/
- (void)answerWithErrorMsg:(NSString *)errorMsg;
@end
详细⻅Demo终代码,:
//初始化
[[GJAccess manager] getCamerapermissions:^(bool isPermis) {
if (isPermis) {
[DigitalConfig shareConfig].conversationId = conversationId;
[[DigitalManager manager] initWithAppId:appId appKey:appKey block:^(BOOL isSuccee, NSString *errorMsg) {
if (isSuccee) {
[[DigitalManager manager] toStart];
} else {
NSLog(@"errorMsg==%@",errorMsg);
}
}];
}
}];
//提问
- (void)startQuestion:(NSString *)userQuestion {
[[DigitalManager manager] questionCommandEvent:userQuestion userId:@"123"];
}
//给中控发送文本&语音
- (void)vcCommandEvent:(NSString *)content wavPath:(NSString *)wavPath interrupt:(BOOL)interrupt {
[[DigitalManager manager] commandEvent:content wavPath:wavPath interrupt:interrupt];
}
#pragma mark -DigitalViewDelegate
//问题回答
- (void)answerWithQuestion:(NSString *)question anserStr:(NSString *)answerStr filePath:(NSString *)filePath errorMsg:(NSString *)errorMsg {
if (errorMsg.length == 0) {
[self vcCommandEvent:answerStr wavPath:filePath interrupt:YES];
}
}
/// 错误信息返回
- (void)onError:(NSInteger)error_code errorMsg:(NSString *)errorMsg {
if (error_code == 50001) {
//错误或者空的appId
} else if (error_code == 50002) {
//资源检查失败,请联系管理员
} else if (error_code == 50003) {
//资源占用中,请检查后再试~
} else if (error_code == 50004) {
//human请求超时~
} else if (error_code == 50005) {
//从资源组中获取资源异常
} else if (error_code == 50006) {
//签名失败
} else if (error_code == 50007) {
//资源总并发不足,请检查后再试~
} else if (error_code == 50009) {
//资源超时或未配置~
}
NSLog(@"errorMsg==%@",errorMsg);
}
///识别出来的asr内容
- (void)detectedSpeech:(NSString*)asrText vad:(NSDictionary *)vad {
if (vad.count > 0) {
return;
}
if (asrText.length == 0) {
return;
}
[self startQuestion:asrText];
}
/// 显示视频是否加载完成
- (void)onVideoShow:(BOOL)isSuccess progress:(float)progress {
if (isSuccess) {
} else {
//可做加载进度
}
}
- (void)playState:(NSDictionary *)dic {
NSString * state=dic[@"state"];
if ([state isEqualToString:@"playStart"]) {
NSLog(@"一句话开始播放");
} else if([state isEqualToString:@"playStop"]) {
NSLog(@"一句话结束播放");
}
}