08 插件导航模块 - MiEcosystem/miot-plugin-sdk GitHub Wiki

miot/Package

扩展程序包参数, 主要来自于packageInfo.json 的配置与系统本身的特性

Export: public
Doc_name: 插件导航模块
Doc_index: 8
Doc_directory: sdk
Example

import {Package} from 'miot'
 import Package from 'miot/Package'

     Package.entrance
     Package.entryInfo
     Package.exitInfo={...}

    Package.pluginID
    Package.packageID
    Package.packageName
    Package.version
    Package.minApiLevel
    Package.buildType
    Package.isDebug
    Package.models

    Package.entry(App, ()=>{...});
    Package.exit({...});

module.exports ⏏

Kind: Exported member
Export:


module.exports.exitInfo : json

退出后返回给调用者的信息, 例如自定义场景

Kind: static property of module.exports
Example

//自定义trigger场景保存退出 finishCustomSceneSetupWithTrigger
var trigger = Package.entryInfo;
trigger.payload = { 'xxx': 'xxx' };//trigger payload 数据
Package.exitInfo = trigger;

//自定义action场景保存退出 finishCustomSceneSetupWithAction
var action = Package.entryInfo;
action.payload = { 'xxx': 'xxx' };//action payload 数据
Package.exitInfo = action;
...
Package.exit();

module.exports.rnVersion

获取React Native版本

Kind: static property of module.exports


module.exports.BLEAutoCheckUpgradeOptions

自动BLE/Mesh设备升级检查,即使设置了alertDialog为true,也仅仅会在直连完成后才弹窗,红点进插件就可以显示

Kind: static property of module.exports
Since: 10039

Param Description
redPoit 红点
alertDialog 弹窗
authType 蓝牙连接类型(0: 普通小米蓝牙协议设备(新接入设备已废弃该类型),1: 安全芯片小米蓝牙设备(比如锁类产品) 4: Standard Auth 标准蓝牙认证协议(通常2019.10.1之后上线的新蓝牙设备) 5: mesh 设备)

Example

Package.BLEAutoCheckUpgradeOptions = {
  enable: true,
  redPoint: true,
  alertDialog: true,
  authType: 5
}

module.exports.entrance : Entrance

入口类型,Main or Scene or 用户自定义(Host.ui.openPluginPage(did, pageName, pageParams) 中 pageName的值)

Kind: static constant of module.exports
Read only: true


module.exports.pageParams : object

入口类型参数, Host.ui.openPluginPage(did, pageName, pageParams) 中 pageParams的值

Kind: static constant of module.exports
Read only: true


module.exports.entryInfo : json

打开rn插件时,从native传递到RN的初始化数据信息

Kind: static constant of module.exports
Read only: true


module.exports.packageID : int

小米开放平台生成的插件包 ID

Kind: static constant of module.exports
Read only: true


module.exports.version : string

程序包的版本号, 来自于project.jsonversion

Kind: static constant of module.exports
Read only: true


module.exports.packageName : string

程序包名, 来自于project.jsonpackage_name

Kind: static constant of module.exports
Read only: true


module.exports.minApiLevel : int

扩展程序适用的最低 API level, 来自于project.jsonmin_api_level

Kind: static constant of module.exports
Read only: true


module.exports.buildType : string

发布类型, debug | release

Kind: static constant of module.exports
Read only: true


module.exports.isDebug : boolean

判断是否是调试版本

Kind: static constant of module.exports
Read only: true


module.exports.models : string

适配的固件 model, 来自于@link packageInfo.json 的

Kind: static constant of module.exports
Read only: true


module.exports.entry(RootComponent, afterPackageEntry)

系统入口

Kind: static method of module.exports

Param Type Description
RootComponent React.Component 入口的React Component模块
afterPackageEntry function 进入后, RootComponent 加载之前执行, 缺省为空

Example

import SceneMain from '...';
import App from '...';

import {Package, Entrance} from 'miot';

switch(Package.entrance){
  case Entrance.Scene:
     Package.entry(SceneMain, ()=>{...});
     break;
  default:
     Package.entry(App, ()=>{...});
     break;
}

module.exports.exit(info)

强制退出插件

Kind: static method of module.exports

Param Type Description
info JSON 如果不为空, 则等同于设置 Package.exitInfo SDK_10052 新增 animated字段 eg: Package.exit({'animated': false}) 表示退出时不使用动画 目前只在ios生效,默认为true

Example

Package.exit({...});

Example

Package.exitInfo = {...}
 Package.exit();

module.exports.installModule(moduleId) ⇒ json

since 10052 android only 部分插件用到的功能不会跟着米家APP一起安装,需要先安装再使用(请求安装的接口是installModule), 已经安装的模块多次调用installModule不会重复安装。 需要调用前需要安装的功能有: react-native-opencv 从10052开始引入,对应的moduleId为RnOpencv,Android平台需要先安装再使用,iOS则没这个要求

Kind: static method of module.exports
Returns: json - 返回值:安装成功或已安装返回{code:0,data:{installed:true}},安装失败返回{code:0,data:{installed:false}}

Param Type Description
moduleId string 可选值:RnOpencv(对应为react-native-opencv)

Example

const moduleId = 'RnOpencv';
Package.installModule(moduleId).then(res=>{
     if(res && res.data && res.data.installed){
       console.log(`module:${moduleId} is installed`).
     }
   }).catch(err=>{
      console.log('installeModule error:',JSON.stringify(err));
   })

module.exports~_packageActiveDate

RN活跃时间统计

Kind: inner property of module.exports


module.exports~Entrance : object

扩展程序调用的入口类型

Kind: inner namespace of module.exports


Entrance.Main

主入口

Kind: static constant of Entrance


Entrance.Scene

场景入口

Kind: static constant of Entrance


module.exports~PackageEvent : object

Package事件名集合

Kind: inner namespace of module.exports
Example

import {PackageEvent} from 'miot'
   const subscription = PackageEvent.packageWillPause.addListener(()=>{
         ...
    })
   ...
   subscription.remove()
   ...

"packageWillLoad"

插件将要加载

Kind: event emitted by PackageEvent


"packageDidLoaded"

插件加载完成事件

Kind: event emitted by PackageEvent


"packageWillPause"

插件将暂时退出前台事件

Kind: event emitted by PackageEvent


"packageDidResume"

插件将重回前台事件

Kind: event emitted by PackageEvent


"packageAuthorizationAgreed"

SDK弹出的隐私同意时的回调

Kind: event emitted by PackageEvent
Since: 10037


"packageAuthorizationCancel" (autoExit)

用户撤销隐私授权时的回调

Kind: event emitted by PackageEvent

Param
autoExit

"packageReceivedInformation"

插件接收到场景等通知消息

Kind: event emitted by PackageEvent


"packageWillExit"

插件将退出事件

Kind: event emitted by PackageEvent


"packageViewWillAppear"

从 Native 界面返回到插件,可以通过监听此事件更新已加载过的视图,或进行相应的事件处理。

Kind: event emitted by PackageEvent


"packageReceivedOutAppInformation"

插件收到外部APP跳转带过来的信息

Kind: event emitted by PackageEvent
Since: 10053


"packageViewWillDisappearIOS"

从插件页面离开到 Native 界面, iOS Only

Kind: event emitted by PackageEvent
Since: 10038


"packageWillStopAndroid"

插件进入后台(Android only) 在插件内,用户按下home键,米家进入后台会发送该通知

Kind: event emitted by PackageEvent
Since: 10048


module.exports~EVENT_TYPE : enum

JS端通知Native端的事件类型

Kind: inner enum of module.exports
Properties

Name Type Default Description
NAVIGATION_STATE_CHANGE number 1 插件路由发生变化

module.exports~extra : Object

entryInfo={entrance:scene|main,info:{json}}

Kind: inner constant of module.exports


module.exports~onPluginEvent(type, data)

在插件端发生某些事件,通知native端

Kind: inner method of module.exports

Param Type Description
type number 事件类型
data object 传入native的数据

⚠️ **GitHub.com Fallback** ⚠️