iOS_SDK集成

一、下载和导入SDK

官网下载 全链路SDK并导入到您的工程中。

Minion

第一步:将下载的libddsios.a和include头文件导入到您的工程中
Minion

1)设置Header search paths 指向include头文件 TARGETS-->Build Settings-->Header Search Paths


Minion

2)设置library search paths 指向.a库 TARGETS-->Build Settings-->Library Search Paths


Minion

第二步:添加依赖库和编译器选项

1)使用cocoapod 导入使用的第三方库(或直接下载导入源码到工程中)。

  # https://github.com/ZipArchive/ZipArchive

   pod 'SSZipArchive', '~> 2.1.1'

 

# https://github.com/tonymillion/Reachability

   pod 'Reachability', '~> 3.2'

注:如果预编译文件PrefixHeader.pch编译有问题,请将预加载的OC类加判断标识,如下:

#ifdef __OBJC__
    #import <xxx/xxx.h>
#endif

2)TARGETS-->Build Phases-->Link Binary With Libraries--> + -->libc++.tbd libz.1.2.8.tbd

Minion

3)other linker flag中添加 -lc++ -ObjC $(inherited)。(运行模拟器 debug 需要额外添加 -pagezero_size 10000 -image_base 100000000 ,注意,只需要对模拟器添加参数,针对release不能添加,否则apple不会通过审核。)


Minion

4)设置Bitcode为No TARGETS-->Build Settings-->Enable Bitcode。

Minion

第三步:添加资源文件

添加dds.bundle与package资源包(将package.zip解压后放入工程并对应K_DUICORE_ZIP与K_CUSTOM_ZIP)。


Minion

第四步:设置访问录音机的权限
在info.plist文件中,设置麦克风权限、网络服务权限。

Minion

二、快速集成

2.1.参数与配置

2.1.1 基本配置项

SDK所需要用的资源,可通过下面的配置项传入语音库。

参数名 取值 说明 是否必须 默认值
K_PRODUCT_ID 产品ID字符串 产品ID 必须 N/A
K_ALIAS_KEY prod/test/(自定义分支) 产品分支 必须 N/A
K_USER_ID 用户ID字符串 用户ID(用户唯一标识,数字、字母任意组合) 必须 N/A
K_DUICORE_ZIP 文件名字符串 预置在工程目录下的DUI产品配置资源包名 必须 N/A
K_CUSTOM_ZIP 文件名字符串 预置在工程目录下的DUI产品配置资源包名 必须 N/A
K_DEVICE_ID 设备ID 用于授权认证的原始设备ID。若不填,则SDK自己收集设备ID 非必须 N/A

2.1.2 参数与配置

授权分为API Key授权,以及Oauth授权(暂未启用)。

参数名 取值 说明 是否必须 默认值
K_AUTH_TYPE 字符串profile 授权类型,profile是采用API Key授权,须要输入产品对应的API Key 必须 N/A
K_API_KEY 产品的API Key字符串 创建产品时,获取的API Key 必须 N/A
K_PRODUCT_KEY 产品Product Key 用于设备注册请求签名,来源:DUI控制台-产品接入-授权管理 必须 N/A
K_PRODUCT_SECRET 产品Product Secret 用于设备注册请求签名,来源:DUI控制台-产品接入-授权管理 必须 N/A

2.2 处理授权

在SDK初始化时,可以设置DDSManagerDelegate 来监听授权的情况。

SDK初始化完毕后,您可以使用 onAuthSuccess 来判断当前是否授权成功。SDK初始化完毕后,SDK会默认调用startAuth方法做一次授权。

授权操作需要连接到互联网,若因网络原因导致的授权失败,待网络恢复后,可重新调用授权接口进行授权。

授权过程中可能会有0-N次onAuthFailed的回调,直至onAuthSuccess为止。

Profile文件的错误码范围从 "070601“ – "070622",处理流程请参考对应的描述。(iOS 详细接口指南 3.错误码描述)

startAuth

//开启授权(SDK初始化完毕后,SDK会默认调用startAuth方法做一次授权)
[[DDSManager shareInstance] startAuth];

2.2.1 API Key授权

采用API Key授权,在SDK初始化时,直接将授权类型(profile)、API Key、以及产品ID传入SDK。在创建产品可获取产品ID,授权管理时获取API Key。

2.3 权限说明

SDK需要的权限有:

权限 用途
Privacy - Microphone Usage Description 授权访问麦克风,用于采集音频
App Transport Security Settings 下添加 Allow Arbitrary Loads类型Boolean,值设为 YES 授权开启网络服务,用于访问DUI服务

2.4 Log开关

使用Log测试请先在程序入口处调用如下代码,打开Log开关。

Log开关在[manager startWithdelegate:self DDSConfig:paramDic]方法前设置,日志保存在Documents/SDKLog.log。

Log开关设置

// 设置是否在控制台输出sdk的log信息, 默认NO(不输出log)
[DDSManager setLogEnabled:YES];
  
  
// 设置是否将sdk的log信息写入文件, 默认NO(不写入)
[DDSManager setLogWriteToFile:YES];

2.5 SDK初始化

使用以下方法来初始化SDK:

//设置音频策略
- (void)setAudioConfig{
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
}
   
//初始化DDSManager
- (void)initDDSManager{
    NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];
    [paramDic setObject:@"xxx" forKey:K_PRODUCT_ID];
    [paramDic setObject:@"prod" forKey:K_ALIAS_KEY];
    [paramDic setObject:@"usergroup" forKey:K_USER_ID];
    [paramDic setObject:@"2f0d470ac76d319fcc4a1d777bf65e08.zip" forKey:K_DUICORE_ZIP];
    [paramDic setObject:@"product.zip" forKey:K_CUSTOM_ZIP];
  
    //API Key授权
    [paramDic setObject:@"profile" forKey:K_AUTH_TYPE];
    [paramDic setObject:@"xxx" forKey:K_API_KEY];
    [paramDic setObject:@"xxx" forKey:K_PRODUCT_KEY];
    [paramDic setObject:@"xxx" forKey:K_PRODUCT_SECRET];
    DDSManager *manager = [DDSManager shareInstance];
    [manager startWithdelegate:self DDSConfig:paramDic];
}
   
//完成回调
-(void)onInitComplete:(BOOL)isFull {
    if(isFull){
        NSLog(@"onInitComplete DUI init");
        //使用H5
        dispatch_async(dispatch_get_main_queue(), ^{
            NSString *path = [[DDSManager shareInstance] getValidH5Path];
            url = [[NSURL alloc] initWithString:path];
            self.request = [[NSURLRequest alloc] initWithURL:url];
            self.web.delegate = self;
            self.web.allowsInlineMediaPlayback = YES;
            self.web.mediaPlaybackRequiresUserAction = NO;
            [self.web loadRequest:self.request];
        });
    }
    else{
        NSLog(@"DUI init faied");
    }
}
 
   
//授权回调
-(void)onAuthSuccess{
    NSLog(@"onAuthSuccess is successed");
    //开唤醒
    [[DDSManager shareInstance] enableWakeup];
}
 
 
-(void)onAuthFailed:(int)what Error:(NSString*)error{
//授权失败,可以重新调用授权接口
    [[DDSManager shareInstance] startAuth];
    NSLog(@" onAuthFailed is failed");
}

2.6 释放重启SDK

使用以下方法来释放重启SDK:

/*!

 断开连接,释放SDK

*/

[[DDSManager shareInstance] stop];
//监听SDK释放完成通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopComplete) name:@"stopComplete" object:nil];

注意:收到这个通知后才可以重启语音库