豹小秘场景 OPK 集成

最后更新: 2020/12/2

OPK 场景注册

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

修改方案:

  1. 继续使用 react-navigation 进行页面管理,但 OPK 内页面跳转不使用 trigger,使用 react-navigation 官方接口进行跳转,具体可查阅官方文档
  2. 场景注册时支持同时注册多个,可将 OPK 拆分为多个小场景注册到调度 OPK,跳转时使用 trigger 进行跳转,不再使用 react-navigation 进行页面管理