多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ![](https://box.kancloud.cn/ca9e75e702af52c51703b5cde3c9081b_472x213.png) ## 第一步:获取appid appid是第三方应用集成讯飞开放平台SDK的身份标识,SDK静态库和appid是绑定的,每款应用必须保持唯一,否则会出现10407错误码。appid在开放平台申请应用时可以获得,下载SDK后可从SDK中sample文件夹的Demo工程里找到(例如: /sample/MSCDemo/MSCDemo/Definition.h 的APPID_VALUE) ## 第二步:工程配置 ### 添加库 将开发工具包中lib目录下的iflyMSC.framework添加到工程中。同时请将Demo中依赖的其他库也添加到工程中。 按下图示例添加 SDK 所需要的 iOS系统库: ![](https://box.kancloud.cn/2df1d43b23bfc1c1c07d6605b911fe40_236x344.png) |库名称 |添加范围 |功能 | | :---: | :---: | --- | |iflyMSC.framework |必要 |讯飞开放平台静态库。 | | libz.tbd | 必要 |用于压缩、加密算法。 | | AVFoundation.framework |必要 |用于系统录音和播放 。 | |SystemConfiguration.framework |系统库 | 用于系统设置。 | | Foundation.framework | 必要 | 基本库。 | |CoreTelephoney.framework |必要 |用于电话相关操作。 | |AudioToolbox.framework | 必要 |用于系统录音和播放。 | |UIKit.framework | 必要 | 用于界面显示。 | | CoreLocation.framework | 必要 | 用于定位。 | |Contacts.framework |必要 |用于联系人。 | | AddressBook.framework |必要 | 用于联系人。 | | QuartzCore.framework |必要 |用于界面显示。 | | CoreGraphics.framework | 必要 |用于界面显示。 | |libc++.tbd | 离线识别,Aiui必要 | 用于支持C++。 | |Libicucore.tbd | Aiui必要 | 系统正则库。 | **注意**: 1. 添加iflyMSC.framework时,请检查工程BuildSetting中的framwork path的设置,如果出现找不到framework的情况,可以将path清空,在Xcode中删除framework,然后重新添加。 2. iflyMSC.framework最低支持iOS 8.0。 3. 如果使用了离线识别,还需要增加libc++.tbd。 4. 如果使用aiui,需要添加libc++.tbd,libicucord.tbd。 ### 设置Bitcode 在Xcode 7,8默认开启了Bitcode,而Bitcode 需要工程依赖的所有类库同时支持。MSC SDK暂时还不支持Bitcode,可以先临时关闭。后续MSC SDK支持Bitcode 时,会在讯飞开放平台上进行SDK版本更新,QQ支持群中同时会有相关提醒,请关注。关闭此设置,只需在Targets - Build Settings 中搜索Bitcode 即可,找到相应选项,设置为NO。 ![](https://box.kancloud.cn/7e7bff849e338cbdb47f78d7ebe04a8f_1714x428.jpg) ### 用户隐私权限配置 iOS 10发布以来,苹果为了用户信息安全,加入隐私权限设置机制,让用户来选择是否允许。 隐私权限配置可在info.plist 新增相关privacy字段,MSC SDK中需要用到的权限主要包括麦克风权限、联系人权限和地理位置权限: ~~~ <key>NSMicrophoneUsageDescription</key> <string></string> <key>NSLocationUsageDescription</key> <string></string> <key>NSLocationAlwaysUsageDescription</key> <string></string> <key>NSContactsUsageDescription</key> <string></string> ~~~ 即在Info.plist 中增加下图设置: ![](https://box.kancloud.cn/5d88e0a5a9f759ab8cca27e17486250d_517x77.png) ## 第三步:初始化 初始化示例: ~~~ //Appid是应用的身份信息,具有唯一性,初始化时必须要传入Appid。 NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@", @"YourAppid"]; [IFlySpeechUtility createUtility:initString]; ~~~ | 参数 | 说明 | 必填 | | :---: | --- | :---: | | appid |8位16进制数字字符串,应用的唯一标识,与下载的SDK一一对应。 |是 | | usr | 开发者在云平台上注册的账号。 |否 | | pwd | 账号对应的密码,与账号同时存在。 |否 | **注意**: 初始化是一个异步过程,可放在App启动时执行初始化,具体代码可以参照Demo的MSCAppDelegate.m。 #### **AIUI初始化** 如果使用的是aiui的业务,那么需要执行aiui的初始化模块。具体可以参照demo的AiuiService。 初始化的配置文件是aiui.cfg,请关注demo的具体内容。 注意:调用aiui初始化的代码文件,请修改成.mm的形式。 ~~~ //包含头文件 #include "iflymsc/AIUI.h" #include "iflymsc/AIUIConstant.h" //aiui初始化,请aiui.cfg和meta_vad_16k.jet文件,需要从demo中获取。 void AiuiInitialize() { //读取配置参数 NSString *appPath = [[NSBundle mainBundle] resourcePath]; NSString *cfgFilePath = [[NSString alloc] initWithFormat:@"%@/aiui.cfg",appPath]; NSString *cfg = [NSString stringWithContentsOfFile:cfgFilePath encoding:NSUTF8StringEncoding error:nil]; //设置模型vad的资源路径 NSString *vadFilePath = [[NSString alloc] initWithFormat:@"%@/meta_vad_16k.jet",appPath]; //将cfg里的vad_res_path字符串替换成模型vad的资源路径 NSString *cfgString = [cfg stringByReplacingOccurrencesOfString:@"vad_res_path" withString:vadFilePath]; const char *cfgBuffer = [cfgString UTF8String]; m_angent = IAIUIAgent::createAgent(cfgBuffer, &m_listener); if (NULL != m_angent) { IAIUIMessage * wakeupMsg = IAIUIMessage::create(AIUIConstant::CMD_WAKEUP); m_angent->sendMessage(wakeupMsg); wakeupMsg->destroy(); } } ~~~ #### **添加AIUI结果解析文件** 解析aiui结果时需要在工程中添加**结果解析文件**,否则编译会报错。 文件在Demo中的位置:MSCDemo -> tools -> jsoncpp。 ## 第四步:启动服务 所有的服务皆遵循如下的流程,如下图: ![](https://box.kancloud.cn/0586f5bdde0889b27631fad869411ee9_231x210.png) 所有服务的API详细说明可参见:http://mscdoc.xfyun.cn/ios/api/ AIUI的API详细说明可参见:http://mscdoc.xfyun.cn/aiui/develop_manual.pdf