开发讯飞语音插件--iOS

您可自由转发此文, 但请保留出处:Ionic在线学习网站  http://www.ioniconline.com

 

1.安装Plugman

打开本地终端,执行命令: sudo npm install –g plugman 安装成功后,输入plugman help即可看到各项操作命令。

2.创建自定义Plugin

执行命令:sudo plugman create --name xunfeiPlugin --pluginid xunfeiPlugin --pluginversion 0.0.1 创建成功,在当前目录会看到项目文件xunfeiPlugin

3.进入项目文件,创建对应platforms文件

执行命令:sudo plugman platform add --platform_name ios 这时在src目录可以看到ios目录生成

4接下来开始代码编写

4.1创建xunfeiPulgin.h文件 再在两文件中添加对应的代码

xunfeiPulgin.h内容
#import <Cordova/CDV.h>
#import "iflyMSC/IFlyMSC.h"    ///引入讯飞语音头文件
@interface xunfeiPlugin : CDVPlugin<IFlyRecognizerViewDelegate>
{
    IFlyRecognizerView      *_iflyRecognizerView;   ///声明讯飞语音view
}
- (void)initAppid:(CDVInvokedUrlCommand*)command;    //初始化讯飞语音
- (void)initRecognizerView:(CDVInvokedUrlCommand*)command;  //语音识别函数
@end
xunfeiPulgin.m内容
- (void)initAppid:(CDVInvokedUrlCommand*)command
{
    //将“12345678”替换成您申请的APPID。
    NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@"12345678"];
    [IFlySpeechUtility createUtility:initString];
}

- (void)initRecognizerView:(CDVInvokedUrlCommand*)command
{
    //初始化语音识别控件
    _iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.webView.superview.center];
    _iflyRecognizerView.delegate = self;
    [_iflyRecognizerView setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
    //asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents
    [_iflyRecognizerView setParameter:@"asrview.pcm " forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];
    //启动识别服务
    [_iflyRecognizerView start];
}

/*识别结果返回代理
 @param resultArray 识别结果
 @ param isLast 表示是否最后一次结果
 */
- (void)onResult: (NSArray *)resultArray isLast:(BOOL) isLast
{
    NSMutableString * strForResult=[[NSMutableString alloc]init];
    for (NSString * str in resultArray) {
        strForResult = [NSMutableString stringWithFormat:@"%@;%@",strForResult, str];
    }

    [self.commandDelegate evalJs:strForResult];
}
/*识别会话错误返回代理
 @ param  error 错误码
 */
- (void)onError: (IFlySpeechError *) error
{
}

以上objective_c函数基本完成。

4.2看下plugin.xml文件

<plugin id="xunfeiPlugin" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>xunfeiPlugin</name>
<js-module name="xunfeiPlugin" src="www/xunfeiPlugin.js"><clobbers target="cordova.plugins.xunfeiPlugin" /></js-module>
<platform name="ios">
<config-file parent="/*" target="config.xml">
<feature name="xunfeiPlugin">
<param name="ios-package" value="xunfeiPlugin" />
  </feature>
</config-file>
<source-file src="src/ios/xunfeiPlugin.m" />
</platform>
</plugin>

以上可以看出在platform以上是plugin基本信息 id、名称、js文件等。 我们只添加了ios 平台,android平台添加类似。 接下来我们需要给plugin.xml文件在config-file下面添加第三方framework和objective_c文件:

<header-file src="scr/ios/xunfeiPlugin.h"/>
<source-file src="src/ios/xunfeiPlugin.m"/>
<source-file src="src/ios/iflyMSC.framework" framework="true" />

添加依赖的系统framework

<framework src="QuartzCore.framework" weak="true" />
            <framework src="AudioToolbox.framework" weak="true" />
            <framework src="SystemConfiguration.framework" weak="true" />
            <framework src="CoreGraphics.framework" weak="true" />
            <framework src="Foundation.framework" weak="true" />
            <framework src="AVFoundation.framework" weak="true" />
            <framework src="UIKit.framework" weak="true" />
            <framework src="CoreTelephony.framework" weak="true" />
            <framework src="AddressBook.framework" weak="true" />
<framework src="CoreLocation.framework" weak="true" />
            <framework src="libz.tbd" weak="true" />

4.3打开xunfeiPlugin.js添加js方法

var exec = require('cordova/exec');
var FFxunfeiPlugin =function(){};
FFxunfeiPlugin.initAppid = function(){
    exec(null,null,"xunfeiPlugin", "initAppid", null);
};
FFxunfeiPlugin.initRecognizerView = function(){
    exec(null,null,"xunfeiPlugin", "initRecognizerView", null);
};
module.exports = FFxunfeiPlugin;

其中exec函数是串起js和obcective_c, 如: 
cordova.exec(successCallback, failCallback, service, action, actionArgs); // successCallback : 成功回调方法

// failCallback : 失败回调方法

// server : 所要请求的服务名字

// action : 所要请求的服务具体操作

// actionArgs : 请求操作所带的参数

可以参考 http://www.cnblogs.com/luoguoqiang1985/p/3574738.html

以上一个插件基本完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值