快速入门
支持平台
由于目前iFLYHOME OS应用仅支持Android平台,而开放平台必须依赖于iFLYHOME OS应用,所以开放平台目前仅支持在Android平台运行的应用。
集成方式
运行在Android平台的应用具体的呈现方式大致分为两类,集成方式也有所区别:
- Android 原生的展现方式,SDK为Android原生SDK;
- Web 形式的展示方式,SDK为JS文件。
其中Web形式按照承载方式分为以下两种:
- iFLYHOME OS应用内的Web页面(后面简称为应用内Web),指Web页面以iFLYHOME OS应用为承载框架,Web页面只需要按照SDK集成, 无需去实现客户端的加载。内部通信采用jsBridge的方式。
- iFLYHOME OS应用外的Web页面(后面简称为应用外Web),指第三方应用自行选择或者实现加载Web页面的框架,独立于iFLYHOME OS应用之外。内部通信方式采用类似webSocket的方式。 由于Web的上述两种实现方式不同,故SDK的JS文件也不同,具体集成和使用方式见下方说明。
前提条件
- 开放平台集成方需要在装有iFLYHOME OS应用的android系统设备上;
- 集成方要按照接入流程申请appid和对应的能力
具体的申请步骤:接入流程
Android 原生应用开发步骤
SDK介绍
SDK核心功能就是和iFLYHOME OS建立通信(AIDL方式),当集成方初始化SDK后,并处于前台,则SDK自动尝试建立通信,当应用切换到后台时,SDK自动断开iFLYHOME OS的连接,并存储状态。当应用再次处于前台时,自动恢复状态。
SDK及Demo下载
开发步骤
SDK集成
导入SDK 打开Android Studio,创建一个新的工程,将下载的压缩包中libs目录下OpenPlatformSDK_xxx.jar拷贝至Android工程的libs目录下。
添加用户权限 在工程AndroidManifest.xml文件中添加如下权限
<uses-permission android:name="iflytek.permission.OPEN_PLATFORM" />
<uses-permission android:name="android.permission.GET_TASKS" />
配置iFLYHOME OS分配的appid
初始化sdk, 传入 appid 值
XiriOPManager.getInstance().init(xxxx,"{appid}", xxx);
注意:如需在打包或者生成APK的时候进行混淆,请在proguard.cfg中添加如下代码:
-keep class com.iflytek.**{*;}
-keepattributes Signature
Android原生支持的功能
iFLYHOME OS应用内置Web集成开发步骤
SDK集成步骤
SDK通信方式
SDK进行了封装并为开发者提供了两个方法:
方法名 | 方法含义 |
---|---|
H5_call_native | H5调用宿主的方法,主要用于调用iFLYHOME OS的应用用于申请能力 |
native_call_H5 | 监听iFLYHOME OS的应用调用H5的方法,主要用于申请能力后,监听能力的结果回调 |
SDK接口说明见:SDK接口文档 SDK接口详细通信协议见:通信协议
Web端的鉴权
Web端采用token校验的机制,需要Web应用调用授权接口获取token以及token对应有效期,然后需要携带appid和token调用iFLYHOME OS的鉴权接口,等明确的鉴权结果返回后方可进行后续操作。
鉴权的方案以及授权接口协议见:鉴权协议
首先,注册鉴权接口结果的回调:
native_call_H5('h5_check_auth_result',function(data,responseCallback){//鉴权结果在data中})
然后,调用鉴权接口:
H5_call_native('native_check_auth',{"appid" :"xxx","token":"xxxxxxx"},function(res){})
使用开放能力
上述鉴权接口回调成功后,可以进行申请iFLYHOME OS开放能力的操作,并进行iFLYHOME OS能力回调的监听。 以开放ASR语音识别为例:
首先注册iFLYHOME OS能力回调:
native_call_H5('h5_send_asr_result',function(data,responseCallback){})
然后,调用申请开放平台能力接口
H5_call_native('native_open_asr',{"appid" :"xxx","token":"xxxxxxx"},function(res){})
此时按下按下语音键说完之后,可以在h5_send_asr_result 接口中收到用户说的识别文本结果。
在不需要使用该能力的关闭
H5_call_native('native_close_asr',{"appid" :"xxx","token":"xxxxxxx"},function(res){})
注意
申请的能力需要提前的申请表格中明确提出,不然调用其他申请的开放能力不会生效。
应用内置Web支持的功能
iFLYHOME OS外置Web应用开发步骤
SDK集成步骤
- 获取SDK,下载链接:点击下载SDK
- 创建一个Web应用工程,将下载的SDK拷到指定的目录下,在具体的页面添加对SDK的引用。
创建listener回调,用于接收数据
var listener = new Xiri.Listener(callback);
- 开始获取回调数据
listener.getCmd("open_xiri");
- 开始鉴权
详细通信协议见:鉴权协议
鉴权的通讯协议与内置Web相同,再通过回调收到鉴权结果且成功后,可以进入下面使用能力
鉴权结果示例listener.openFeatureFunc({"name":"native_check_auth","params":"{\"token\": \"abcd\", \"appid\": \"1234\"}"})
如果鉴权未成功,则等待回调收到鉴权通过的消息后,再进行后续操作{ "data":"{\"msgId\":\"bfecf293-c185-4c4e-93bd-ed42d3c97846\",\"params\":\"{\\\"authCode\\\":\\\"200\\\",\\\"description\\\":\\\"鉴权通过\\\"}\",\"name\":\"h5_check_auth_result\"}", "_action":"open_xiri", "_command":"_XIRI_PUSH" }
使用能力 例如:使用Asr能力
listener.openFeatureFunc(data);
data 数据格式如:
{ "name":"native_open_asr", "params":"{\"token\": \"abcd\", \"appid\": \"1234\"}" }
- 能力结果回调
如果能力使用成功,会有结果通过回调传出来,示例如下:
{ "data":"{\"msgId\":\"74748d82-24cc-4f8a-8649-acefb705e4ae\",\"params\":\"{\\\"token\\\":\\\"bcb8e1283742480388fcceb968a8e58e@2\\\",\\\"linkId\\\":\\\"227ab498-b5d9-4c0c-bd2a-1f3b2be90996\\\",\\\"text\\\":\\\"你好\\\"}\",\"name\":\"h5_send_asr_result\"}", "_action":"open_xiri", "_command":"_XIRI_PUSH" }
- 关闭能力
如果需要关闭能力,不再使用,需要调用 stopCmd 停止获取结果,并调用 unregist 释放开放平台能力
listener.stopCmd(); listener.unregist();