-
Notifications
You must be signed in to change notification settings - Fork 188
01 原生模块
扩展程序运行时的宿主环境 所有由宿主APP直接提供给扩展程序的接口均列在这里. 主要包括原生业务页面、本地数据访问、系统提供的能力等 系统的能力主要包括: 音频(audio.js) 文件存储(file.js) 本地KV存储(storage.js) 编解码(crypto.js) 系统基本信息(locale.js) 米家APP提供的能力主要包括: 米家APP提供的UI能力(ui.js)
Export: public
Doc_name: 原生模块
Doc_index: 1
Doc_directory: host
Example
import {Host} from 'miot'
Host.type // ios/ android/ tv
Host.isIOS
Host.isAndroid
Host.version
Host.apiLevel
Host.isDebug
Host.ui.openDeviceListPage()
Host.ui.openShopPage(100)
Host.locale.language
Host.locale.timezone
Host.locale.currentTimeMillis.then(time=>{})
Host.locale.getCurrentCountry().then(country=>{})
Host.locale.getPlaceMark().then(place=>{})
Host.locale.getGPS().then(gps=>{})
Host.file.readFile(path).then(file=>{})
Host.file.writeFile(path, file).then(ok=>{})
Host.storage.get(key)
Host.storage.set(key, value)
-
miot/Host
-
static
-
.displayCutoutTop :
int
-
.type :
string
-
.systemInfo :
object
-
.isAndroid :
boolean
-
.isIOS :
boolean
-
.isPad :
boolean
-
.isIphoneXSeries :
boolean
-
.version :
string
-
.apiLevel :
int
-
.isDebug :
boolean
.applicationEdition :int
-
.appConfigEnv :
int
- .ui
- .locale
- .storage
- .file
- .audio
- .crypto
-
.getWifiInfo() ⇒
[ 'Promise' ].<object>
-
.getAppName() ⇒
[ 'Promise' ].<string>
-
.getPhoneScreenInfo() ⇒
[ 'Promise' ].<object>
.getCurrentCountry() ⇒-
.getOperatorsInfo() ⇒
Promise
-
.createBackgroundExecutor(jx, initialProps) ⇒
[ 'Promise' ].<IExecutor>
.phoneHasNfcForAndroid() ⇒[ 'Promise' ].<json>
-
.connectWifiWithSsid(ssid) ⇒
[ 'Promise' ].<JSON>
- .bindProcessToNetwork(type)
-
.pageShouldAdapterSoftKeyboard(shouldAdapter) ⇒
[ 'Promise' ].<boolean>
-
.checkAndroidLocationServerIsOpen() ⇒
[ 'Promise' ].<Object>
-
.getIOSLocationAuthorizationStatus() ⇒
[ 'Promise' ].<Object>
-
.jumpToThirdpartyApplication(scheme, params, passThrough) ⇒
[ 'Promise' ].<Object>
-
.checkAbilityOfJumpToThirdpartyApplication(scheme) ⇒
[ 'Promise' ].<bool>
-
.displayCutoutTop :
- inner
-
static
获取Android 官方提供的打孔屏api提供的打孔屏高度。 ios手机一律返回0.
Kind: static property of miot/Host
Read only: true
Since: 10042
返回本地环境的类型, ios|android
Kind: static constant of miot/Host
系统信息 包含sysVersion 系统版本名称 mobileModel 手机型号
Kind: static constant of miot/Host
判断是否是 android
Kind: static constant of miot/Host
判断是否 iOS,和上面那个方法二选一即可
Kind: static constant of miot/Host
判断是否 Pad大屏设备
Kind: static constant of miot/Host
判断是否 iOS 刘海屏 包括iPhoneX系列, iPhoneXS, iPhoneXS Max 系列, iPhone 11系列 Android返回false
Kind: static constant of miot/Host
Since: 10044 在10047 添加对iPhone 12系列的支持
APP 的版本, 例如"1.0.0"
Kind: static constant of miot/Host
APP 的 apiLevel
Kind: static constant of miot/Host
判断是否是调试版本
Kind: static constant of miot/Host
Read only: true
Deprecated
是否是国际版APP 国内版1 国际版2 欧洲版3
Kind: static constant of miot/Host
Read only: true
获取 米家APP中 我的-->开发者设置-->其他设置, AppConfig接口拉取preview版数据 是否选中的状态 1:表示选中, preview ; 0:表示未选中, release 如果选中,Service.smarthome.getAppConfig 获取的数据为preview版数据, 反之为release版数据
Kind: static constant of miot/Host
Read only: true
Since: 10024
可调起的host业务页面
Kind: static constant of miot/Host
See: module:miot/host/ui
host 的本地化设置, 包括语言,地区,城市等等
Kind: static constant of miot/Host
See: module:miot/host/locale
本地数据存储服务模块
Kind: static constant of miot/Host
See: module:miot/host/storage
本地文件服务模块
Kind: static constant of miot/Host
See: module:miot/host/file
音频 播放,录制,转码相关模块
Kind: static constant of miot/Host
See: module:miot/host/audio
加密解密模块
Kind: static constant of miot/Host
See: module:miot/host/crypto
获取手机wifi信息; 在Android上,从Android 9开始,获取WiFi信息需要申请定位权限,因此插件在调用该接口需要先判断是否有定位权限,没有就提示用户授权;否则就拿不到WiFi信息
Kind: static method of miot/Host
Returns: [ 'Promise' ].<object>
- 成功时:{BSSID:xxx, SSID:xxx}
失败时:返回的是错误信息,字符串格式
Example
Host.getWifiInfo()
.then(res => console.log("ssid and bssid = ", res.SSID, res.BSSID))
.catch((error)=>{
console.log(error)
});
获取APP名称
Kind: static method of miot/Host
获取Android手机屏幕相关信息(包括状态栏高度)
Kind: static method of miot/Host
Returns: [ 'Promise' ].<object>
- 手机屏幕相关信息 {'viewWidth':xxx, 'viewHeight':xxx, 'viewWidthPixel':xxx, 'viewHeightPixel':xxx}
viewWidth和viewHeight返回的都是dp值,若想使用px值还得使用PixelRatio.getPixelSizeForLayoutSize方法转化为px值
但是在Pad小窗上时由于修改了scale值,所以转换出来的px值会偏小
所以10056新增两个返回值viewWidthPixel和viewHeightPixel表示当前ReactView的宽高像素值,若想使用px值建议直接使用这两个值,不必再转换dp值
Since: 10012
Deprecated
获取当前登陆用户的服务器国家
Kind: static method of miot/Host
Returns: Promise 返回国家编码,如:‘CN’
Since: 10010
获取手机运营商信息 返回值中: name 运营商名称-与手机语言一致 simOperator 运营商 国家编码(三位)+网络编码 参考 https://en.wikipedia.org/wiki/Mobile_country_code countryCode 运营商国家码,ISO 3166-1 country code
Kind: static method of miot/Host
Returns: Promise
- 运营商信息 {'1':{name:'',simOperator:'',,countryCode:''},'2':{...}}
Since: 10021
后台执行文件, 后台最多同时运行三个线程, 超过将销毁最早创建的 executor
Kind: static method of miot/Host
Since: 10002
Param | Type | Description |
---|---|---|
jx | * |
可执行的纯 js 文件, 不使用任何高级语法, 如要使用 es6, 请自行编译通过. |
initialProps | json |
用于脚本初始化的数据, 在jx文件中为 'initialProps' 对象,使用方法参考样例 或者sampleProject中 ‘com.xiaomi.demo/Main/tutorial/JSExecutor.js’ |
Example
var myexecutor = null;
Host.createBackgroundExecutor(require('./test.jx'), {name1:"testName"})
.then(executor=>{
myexecutor = executor;
executor.execute("myFunc", 1,2,'a')
.then(result=>{
console.log(result);
})
//支持使用initialProps或者在jx中直接使用
executor.execute("myFunc2", "initialProps.name1").then(res =>{...})
//支持使用obj与arr
executor.execute("SomeObject.myFunc3", {"name":"hello"}, ["a1","a2"]).then(res =>{...})
})
.then(err=>{...})
....
myexecutor&&myexecutor.remove();
Deprecated
android 手机是否有NFC功能
Kind: static method of miot/Host
Returns: [ 'Promise' ].<json>
- {hasNfc:true/false}
Since: 10021
Example
Host.phoneHasNfcForAndroid().then((result)=>{
console.log(result.hasNfc);
}))
android 连接指定ssid得wifi,要求该wifi之前已经连接过 使用此api不需要特别权限
Kind: static method of miot/Host
Since: 10036
Param | Description |
---|---|
ssid | 需要去掉字串两端的引号。在native层会自己增加"" |
Example
Host.connectWifiWithSsid().then((result)=>{
console.log(result);
}))
Kind: static method of miot/Host
Since: 10037
Param | Description |
---|---|
type | 0 for mobile 1 for wifi 2 for null equal to android's bindProcessToNetwork |
页面有输入框,需要打开软键盘,页面适配软键盘
Kind: static method of miot/Host
Returns: [ 'Promise' ].<boolean>
- 设置成功返回true(iOS没有实现这个接口,直接返回true)
Since: 10027 (10050 后开始支持iOS)
Param | Type | Description |
---|---|---|
shouldAdapter | boolean |
Android: true: 表示进行适配,建议UI用ScrollView包裹起来,当输入框在屏幕的下半部分时,只会触发ScrollView滚动; false: 整个页面滚动, demo可参考SoftKeyboardAdapterTestDemo.js iOS : true 表示进行适配,整个页面会跟随滑动,false: 表示不进行适配,整个页面不会跟随键盘滑动,默认true (10050 后开始支持iOS) |
检测Android系统位置服务(不同于权限)是否打开 only Android
Kind: static method of miot/Host
Returns: [ 'Promise' ].<Object>
- 成功时:{"code":0, "data":{locationServerIsOpen: true/false}}
失败时:{"code":-1, "message":"xxx" }
Since: 10038
获取iOS定位授权的权限状态 only iOS
Kind: static method of miot/Host
Returns: [ 'Promise' ].<Object>
- 成功时:{LocationAuthStatus}
失败时:{"message":"xxx" }
Since: 10038
跳转到其他App
Kind: static method of miot/Host
Since: 10039
Param | Type | Description |
---|---|---|
scheme | string |
其他App的Scheme 如 mihome://plugin |
params | Object |
传给其他App的参数 |
passThrough | Object |
从其他App回来时原封不动带回来的参数(部分App支持) 成功时:{"code":0, "data":{// 第三方app返回的数据}} 失败时:{"code":-1, "message":"xxx" } |
判断是否可以跳到其他App
Kind: static method of miot/Host
Result: "code":0, "data":true/false
Since: 10039
Param | Type | Description |
---|---|---|
scheme | string |
跳转其他App时使用的scheme |
Host事件集合
Kind: inner namespace of miot/Host
Example
import { HostEvent } from 'miot/host';
const subscription = HostEvent.cellPhoneNetworkStateChanged.addListener(
(event)=>{
...
}
)
...
subscription.remove()
...
手机网络状态变更事件
Kind: event emitted by HostEvent
Param{object}: 接收到的数据 {networkState: xxx}
networkState可取值如下:
-1 :DefaultState
0 :网络不可用
1 :蜂窝网络 2G 3G 4G
2 :WiFi网络
Since: 10031
Example
可查看HostEventDemo.js
jx执行器
Kind: inner typedef of miot/Host
Since: 10002
Properties
Name | Type | Description |
---|---|---|
isReady | boolean |
是否可用 |
isRunning | boolean |
是否运行中 |
execute(method, | * |
...args) - 执行某个函数 |
remove() | 删除 |