豹小秘场景 OPK 集成
最后更新: 2020/12/2OPK 场景注册
OPK 场景切换是由调度 OPK 进行管理执行,需要在插件 OPK 的入口文件(默认为 index.js)中进行注册
场景注册示例
AppRegistry.registerConfig([{
default: true,
appKey: 'advert',
component: () => AppAdvert,
appId: appid,
prepare:() => {return true;}
}]);
registerConfig 参数为数组,支持同时配置多个场景入口
default : 是否为 OPK 的默认场景,在 BO 后台配置语音指令时如果未填写 action,则启动 OPK 的默认场景,如果 OPK 有多个场景,选择其中一个设置为 true,其它的可不配置
appKey : 场景名称,在 BO 后台配置语音指令时,可将 appKey 填写到 action 里,对应的语音指令触发时,直接启动指定场景
component : 场景入口文件,场景触发时会直接执行该文件
appId : OPK 对应的 AppId
prepare : 非必选参数,可不设置,场景启动前的准备函数,场景启动前会先调用 prepare,检查下是否符合启动条件, 例如广告需要检查开关和广告数据, 执行结果为 true 会启动该场景,否则放弃启动
BO 后台配置页面

获取 OPK 配置
在 BO 后台可针对每个 OPK 进行参数及开关配置,OPK 可通过 AppManger 获取自身的配置
let config = AppManager.getAppConfig();
编译
插件 opk 的编译要求 orionos-cli 的版本不低于 1.10.9,请先通过以下指令检查下 orionos-cli 版本
orionos-cli -v
如果当前版本低于 1.10.9,请先进行升级, 升级完成后,通过以下指令进行编译
orionos-cli pack --multiBundle false --extraEnable true --type plugin
编译生成的 OPK,可在应用商店上架,安装到机器进行使用
场景跳转
场景的切换继续沿用 trigger 机制,可在业务对应的 trigger 中调用 this._trigger () 跳转到其它场景:
示例
import { Trigger, TriggerProtocol } from 'orionos-eve-core';
export class WeatherTrigger extends Trigger {
public constructor() {
super('weather');
}
public navSwitch = (from: string, to: string): void => {
};
public trigger = (protocol: TriggerProtocol): void => {
//appKey:场景注册的时候使用的appKey
//protocol: 场景跳转携带参数
this._trigger('appKey', protocol);
}
};
}
以下为官方标准 OPK 所包含的场景及其对应的 appKey, 如需跳转,可直接通过 trigger 及其对应的 appKey 执行跳转,第三方开发的 OPK 可直接使用其在场景注册时的 appKey 进行跳转:
注意:在开发时请避免与标准 OPK 中 appKey 重复
OPK 名称 | appKey | 描述 |
基础应用 (Portal) | wakeUp | 大表情页面 |
基础应用 (Portal) | home | 首页 |
问路引领 | queryLocation
| 问路引领,参数: let protocol = { result: { destination: ' 目标点 ', backtrack:' 返回点 ', distance: -1 // 距离 } }; |
访客接待 | reception | 访客接待 |
导航 | navigation | 导航,参数: let protocol = { result: { destination: ' 目标点 ', distance: -1 // 距离 } }; |
导览 | guide | 导览 |
广告 | advert | 广告 |
巡逻 | cruise | 巡逻 |
跳舞 | dance | 跳舞 |
拍照 | groupPhoto | 拍照 |
天气 | weather | 天气,不支持直接跳转 |
日历 | calendar | 日历,不支持直接跳转 |
注意事项
- 禁止修改 triggerManager 的导航器
如果 OPK 内部业务逻辑复杂,需要使用到 react-navigation 进行页面跳转,请不要调用 triggerManager.setNavigation (navigation) 修改 triggerManager 所持有的导航器,triggerManager 内的导航器为全局共用,被篡改后,会导致无法跳转其它 OPK
修改方案:
- 继续使用 react-navigation 进行页面管理,但 OPK 内页面跳转不使用 trigger,使用 react-navigation 官方接口进行跳转,具体可查阅官方文档
- 场景注册时支持同时注册多个,可将 OPK 拆分为多个小场景注册到调度 OPK,跳转时使用 trigger 进行跳转,不再使用 react-navigation 进行页面管理