本地原生业务页面访问与处理
Example
import {Host} from 'miot'
...
//删除设备
Host.ui.openDeleteDevice()
//分享设备
Host.ui.openShareDevicePage
Methods
(static) addOrCopyIR(did, type, models, extra)
添加或者复制一个红外遥控器
Parameters:
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
did |
string | 设备did |
|||||||||||||||
type |
number | 0:添加遥控器;1:复制遥控器。默认0 |
|||||||||||||||
models |
array | 一组红外遥控器model,只传入一个model将直接跳转到相应的品牌列表或者机顶盒列表,支持的models见文档。默认空数组[] |
|||||||||||||||
extra |
object | 额外配置,会传入打开的插件页,也有部分特殊功能定义字段如下: Properties
|
- Since:
- 10003
(static) alertLegalInformationAuthorization(option) → {Promise}
弹窗请求隐私政策和用户协议授权, 支持显示用户体验计划
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
option |
object | 配置数据 Properties
|
- Since:
- 10023
Example
//仅供参考
//可以参考project/com.xiaomi.demo/Main/Host/UI/privacy.js部分样例
//batchGetDeviceDatas 设置的属性在设备删除以及设备取消授权之后会自动清空,因此只需要在请求授权检测时,检查下flag即可。撤销授权时可以不用手动清理flag
const agreementURL = require('xxxxx.html');
const privacyURL = require('xxxxx.html');
var options = {agreementURL, privacyURL};
//options.hideAgreement = this.state.hideAgreement;
Service.smarthome.batchGetDeviceDatas([{ did: Device.deviceID, props: ["prop.s_auth_config"] }]).then(res => {
console.log('batchGetDeviceDatas ', res);
let alreadyAuthed = false;
let result = res[Device.deviceID];
let config;
if (result && result['prop.s_auth_config']) {
config = result['prop.s_auth_config']
}
if (config) {
try {
let authJson = JSON.parse(config);
console.log('auth config ', authJson)
alreadyAuthed = authJson.privacyAuthed && true;
} catch (err) {
//json解析失败,不处理
}
}
if (alreadyAuthed) {
//已授权,不再弹窗显示
alert("已经授权")
return new Promise.resolve("已经授权")
} else {
return Host.ui.alertLegalInformationAuthorization(options).then(res => {
console.log('授权结果', res)
if (res) {
return Service.smarthome.batchSetDeviceDatas([{ did: Device.deviceID, props: { "prop.s_auth_config": JSON.stringify({ 'privacyAuthed': 'true' }) } }])
} else {
return new Promise.reject("取消授权")
}
})
}
}).catch(err => {
//没能授权成功
alert('授权错误'+err)
Package.exit()
});
(static) canOpenStorePage() → {Promise}
是否支持商城
Example
Host.ui.canOpenStorePage().then(res => console("can open store = ", res))
(static) checkStoreSupporttedOnAndroid() → {boolean}
检测Android是否支持集成了商城,目前是通过当前的服务来判断的
- Deprecated:
- 方法存在问题,废弃
(static) dismissBLESwitchGuide()
隐藏提示用户打开蓝牙的动画示意图, 仅在iOS下有效,Android下无反应
- Since:
- 10004
(static) getDevicesWithModel(model) → {Promise.<Array.<devices>>}
获取设备列表中指定model的设备信息
Parameters:
Name | Type | Description |
---|---|---|
model |
string | 设备model |
(static) keepScreenNotLock(flag)
是否保持屏幕常亮
Parameters:
Name | Type | Description |
---|---|---|
flag |
Boolean | 默认false |
(static) openAddDeviceGroupPage(groupModel)
打开创建设备组页,如果是支持Mesh的设备,请使用上面的openMeshDeviceGroupPage
Parameters:
Name | Type | Description |
---|---|---|
groupModel |
String | 设备组model 打开创建设备组页,只有在设备页内,需要创建设备组时,才能调用此方法。如果是设备组页面内,请使用下面的openEditDeviceGroupPage方法 只有特定设备支持创建设备组统一管理 |
(static) openAddToDesktopPage()
添加桌面快捷方式
(static) openBleMeshDeviceUpgradePage()
打开Mesh设备固件升级页。分享的设备点击此接口无反应(理论上分享的设备不应该出现调用此接口的菜单)
- Since:
- 10025
(static) openBtGatewayPage()
打开蓝牙网关页
(static) openChangeDeviceName()
打开重命名对话框
(static) openConnectSucceedPage(model, did)
打开设备快连成功页面
Parameters:
Name | Type | Description |
---|---|---|
model |
string | 设备model |
did |
string | 设备did |
- Since:
- 10004
(static) openCountDownPage(isCountDownOn, setting)
开启倒计时界面
Parameters:
Name | Type | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
isCountDownOn |
Boolean | 设备的当前状态:YES 为开启,所以我们启动关闭倒计时; NO 为关闭,所以我们启动开启倒计时 |
||||||||||||||||||
setting |
object | 设置倒计时页面的属性 Properties
|
Example
Host.ui.openCountDownPage(true, {onMethod:"power_on", offMethod:'power_off', onParam:'on', offParam:'off'})
(static) openDeleteDevice(titleopt)
弹出删除设备的对话框
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
title |
string |
<optional> |
null | 自定义提示,不设置使用默认提示 |
(static) openDeleteDeviceWithCallback()
删除设备 注意:此方法只做删除设备的活,不会返回上一页。所以在then里面,需要自己调用closeCurrentPage
(static) openDevice(did, model, params) → {Promise.<json>}
打开用户账号下某一设备的插件
Parameters:
Name | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
did |
string | 设备的did |
||||||||||
model |
string | 设备的model |
||||||||||
params |
object | 额外参数,打开插件时传入,也有部分特殊功能定义字段如下: Properties
|
(static) openDeviceNetworkInfoPage()
打开设备网络信息页面,米家已提供入口:设置 - 更多设置 - 网络信息。此方法只针对wifi设备,combo设备,蓝牙设备请不要调用此方法。
- Since:
- 10026
(static) openDeviceTimeZoneSettingPage({"sync_device":)
打开设备时区设置页 apiLevel在10025,增加参数的支持,APP修改时区是否需要同步到设备端,前提是设备需要支持miIO.set_timezone 方法 如果sync_device为true,服务端会给设备发送rpc,例如: {'method':'miIO.set_timezone','params':["Asia/Chongqing"]}
Parameters:
Name | Type | Description |
---|---|---|
{"sync_device": |
Object | false} true-需要同步给设备 false-不需要同步给设备(默认) |
- Since:
- 10025
(static) openDeviceUpgradePage()
打开设备检查固件升级页
(static) openEditDeviceGroupPage(dids)
打开编辑设备组页,只有在设备组页内,需要修改设备组时,才能调用此方法。如果是设备页面内,请使用上面的openAddDeviceGroupPage方法
Parameters:
Name | Type | Description |
---|---|---|
dids |
Array | 包含组设备did的数组 |
(static) openFeedbackInput()
打开反馈页
(static) openHelpPage()
打开常见问题页,别名「使用帮助」
(static) openIftttAutoPage()
打开添加智能的页面
(static) openMeshDeviceGroupPage(type, did)
打开Mesh灯组 添加/编辑 页,Device.pid为17,则为Mesh设备组
Parameters:
Name | Type | Description |
---|---|---|
type |
String | 需要打开创建设备组页面时,type=add,需要打开编辑设备组页面时,type=edit |
did |
String | 设备did。如果是创建,则是以当前实际设备的did为基础,进入创建灯组页面。如果是编辑,则是灯组的虚拟设备did。 |
- Since:
- 10021
(static) openMiPayPageForAndroid(params) → {Promise}
android 特有, 跳转到小米钱包
Parameters:
Name | Type | Description |
---|---|---|
params |
Example
let params = {action:'issue_mifare',type:'1',product_id:'66666-00211',source_channel:'mijia'};
Host.ui.openMiPayPageForAndroid(params).then((res)=>{console.log(res)}).catch((error)=>{ console.log(error)});
(static) openNewMorePage()
- Deprecated:
- 10010 开始废弃, 后续版本会移除该方法。推荐使用 `miot/ui/CommonSetting` ios特有页面,android 不能使用 打开更多设置页面(通常包括安全设置,常见问题与用户反馈)
(static) openOneTimePassword(did, interval, digits)
打开一次性密码设置页
Parameters:
Name | Type | Description |
---|---|---|
did |
* | 设备did |
interval |
* | 时间间隔,即密码组的刷新时间间隔,单位为分钟,类型为 number,传入 10 到 60 的整数 |
digits |
* | 密码位数,类型为 number,传入 6 到 8 的整数 |
(static) openPageWithClassName(className)
打开一个原生类 className ,界面类类名 注意 用此方法打开的vc初始化时不需要传参数, 需要传参的viewController暂时还需要手动导出
Parameters:
Name | Type | Description |
---|---|---|
className |
string | 类的名字 |
(static) openPhoneBluSettingPage()
- Since:
- 10002 android特有页面,ios 不能使用 打开手机蓝牙设置页面
(static) openPluginPage(did, pageName, pageParams)
打开用户账号下某一设备的插件,可支持跳转到插件的某一页面 至于跳转到哪个页面,需要插件方做支持,示例可以参考com.xiaomi.demo 中 Host.ui.openPluginPage 的使用 整体流程如下: 插件调用此方法openPluginPage ⬇ ️ 将参数传到native ⬇ native调用打开插件的方法,带上此处传递的参数 ⬇ native打开RN页面,将参数传递到Package.js ⬇ 支持打开内部页面的插件,通过Package.entrance获取将要跳转到哪个页面,通过Package.pageParams获取此页面需要的页面参数 ⬇ 打开插件对应页面,注意:如果isBackToMainPage为true,则需要在你的插件首页的componentDidMount中,增加跳转逻辑,反之,则应该在index.js中控制入口界面。详细使用请参考Demo中 openPluginPage、Package.entrance、Package.pageParams三个方法的使用
Parameters:
Name | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
did |
string | 设备的did |
||||||||||
pageName |
string | 将打开插件的某一页面, 此参数将会赋值给 Package.entrance, 默认为 Entrance.Main |
||||||||||
pageParams |
object | 将打开插件的某一页面的参数,此参数将会赋值给 Package.entranceParams, 默认为空 Properties
|
- Since:
- 10026
Example
let pageParams = {did:Device.deviceID,model:Device.model}
Host.ui.openPluginPage(Device.deviceID, PluginEntrance.Setting, pageParams)
(static) openPluginRecommendScene(did, recommendId) → {Promise}
跳转到设备定向推荐界面,注意:SDK_10024及其之后才可使用
Parameters:
Name | Type | Description |
---|---|---|
did |
String | |
recommendId |
number |
- Since:
- 10024
(static) openPowerMultikeyPage(did, mac)
更多设置-多键开关设置页面
Parameters:
Name | Type | Description |
---|---|---|
did |
string | 设备did 指定设备ID |
mac |
string | 设备mac option, 在不传递时。默认使用当前设备 |
- Since:
- 10010 ,SDKLevel 10010 开始提供使用
Example
Host.ui.openPowerMultikeyPage(did, mac);
(static) openPrivacyLicense(licenseTitle, licenseUrl, policyTitle, policyUrl) → {Promise}
软件政策和隐私协议授权 隐私协议弹框需求: a. 所有接入米家的设备,绑定成功后第一次进插件,都需要隐私弹框,后续再进不需弹框 b. 取消隐私授权/解绑设备后,重新绑定设备,仍需遵循规则a 插件端可按如下方案实现:
- 使用batchSetDeviceDatas存储一个标志位,用来记录是否“隐私弹框”过
- 进入插件时batchGetDeviceDatas获取此标志位,若为NO,弹框,同时设置标志位为YES;若为YES,不弹框
- 设备取消授权或解绑设备时,此标志位米家后台会自动清除,故遵循了上述需求b
- 异常处理:进插件时,如果网络异常等原因导致batchGetDeviceDatas失败,就不弹框(此时99%情况是第2+次进插件)
Parameters:
Name | Type | Description |
---|---|---|
licenseTitle |
string | optional 可以为空 |
licenseUrl |
string | optional require('资源的相对路径') |
policyTitle |
string | 不可以为空 |
policyUrl |
string | 不可以为空 require('资源的相对路径') |
- Deprecated:
- 10023废弃, 请使用 alertLegalInformationAuthorization 替换
(static) openRoomManagementPage()
打开房间设备管理的页面
(static) openSecuritySetting()
打开安全管理页
(static) openShareDevicePage()
打开分享设备的页面
(static) openShareListBar(title, description, imagePath, url)
打开分享列表页面
Parameters:
Name | Type | Description |
---|---|---|
title |
string | |
description |
string | |
imagePath |
string | 和Image source 一样的格式 |
url |
string |
(static) openShopPage(gid)
打开商城某商品详情页面
Parameters:
Name | Type | Description |
---|---|---|
gid |
string | 商品ID |
(static) openShopSearchPage(keyword)
打开商城搜索结果页面
Parameters:
Name | Type | Description |
---|---|---|
keyword |
string | 搜索关键字 |
- Since:
- 10024
(static) openTimerSettingPage(onMethod, onParam, offMethod, offParam)
这个api 应该可以废弃了,使用下面的openTimerSettingPageWithOptions
Parameters:
Name | Type | Description |
---|---|---|
onMethod |
string | 定时到时设备“开”执行的 RPC 指令命令字字符串 |
onParam |
string | 定时到时设备“开”执行的 RPC 指令参数字符串(目前仅支持单参数) |
offMethod |
string | 定时到时设备“关”执行的 RPC 指令命令字字符串 |
offParam |
string | 定时到时设备“关”执行的 RPC 指令参数字符串(目前仅支持单参数) |
- Deprecated:
- 10004 开始废弃, 后续版本会移除该方法。
(static) openTimerSettingPageWithCustomIdentifier(customTimerIdentifier, onMethod, onParam, offMethod, offParam)
这个api 应该可以废弃了,使用下面的openTimerSettingPageWithOptions
Parameters:
Name | Type | Description |
---|---|---|
customTimerIdentifier |
string | 自定义定时Identifier |
onMethod |
string | 定时到时设备“开”执行的 RPC 指令命令字字符串 |
onParam |
string | 定时到时设备“开”执行的 RPC 指令参数字符串(目前仅支持单参数) |
offMethod |
string | 定时到时设备“关”执行的 RPC 指令命令字字符串 |
offParam |
string | 定时到时设备“关”执行的 RPC 指令参数字符串(目前仅支持单参数) |
- Deprecated:
- 10004 开始废弃, 后续版本会移除该方法。
(static) openTimerSettingPageWithOptions(options)
扩展自 openTimerSettingPageWithVariousTypeParams , 新增支持自定义name使用
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
object | 配置信息 Properties
|
- Since:
- 10010 ,SDKLevel 10010 开始提供使用
Example
Host.ui.openTimerSettingPageWithOptions({onMethod:"power_on", onParam: "on", offMethod: "power_off", offParam: "off", displayName:"设置xxx定时",identify:"plug_usb_countdowm"})
(static) openTimerSettingPageWithVariousTypeParams(onMethod, onParam, offMethod, offParam)
Parameters:
Name | Type | Description |
---|---|---|
onMethod |
string | 定时到时设备“开”执行的 RPC 指令命令字字符串,指硬件端,打开定时应该执行的方法,请咨询硬件工程师,miot-spec下,一般为:set_properties |
onParam |
json | 定时到时设备“开”执行的 RPC 指令参数,可以是字符串、数字、字典、数组,指硬件端,打开定时应该传入的参数,请咨询硬件工程师,iot-spec下,一般为:[{did,siid,piid,value}] |
offMethod |
string | 定时到时设备“关”执行的 RPC 指令命令字字符串,,参数请与嵌入式的同学沟通,指硬件端,关闭定时应该执行的方法,请咨询硬件工程师,miot-spec下,一般为:set_properties |
offParam |
json | 定时到时设备“关”执行的 RPC 指令参数,可以是字符串、数字、字典、数组,指硬件端,关闭定时应该传入的参数,请咨询硬件工程师,miot-spec下,一般为:[{did,siid,piid,value}] |
Example
Host.ui.openTimerSettingPageWithVariousTypeParams("power_on", ["on", "title"], 'off',"title"}),
(static) openVoiceCtrlDeviceAuthPage()
打开语音设备管理的页面
(static) openWebPage(url)
打开H5页面 不对外提供
Parameters:
Name | Type | Description |
---|---|---|
url |
string | 链接地址 |
(static) openXiaoAiLearnPage(clientId, did, aiMiotClientId, aiClientId, aiVersion)
打开小爱训练计划
Parameters:
Name | Type | Description |
---|---|---|
clientId |
string | |
did |
string | 设备 ID |
aiMiotClientId |
string | 米家的客户端 ID |
aiClientId |
string | 水滴平台的客户端 |
aiVersion |
string | "" 不隐藏 "thirdpart" 隐藏 “一段录音” “设备控制” 按钮 "audio" 隐藏 “一段录音” 按钮 "device" 隐藏 “设备控制” 按钮 |
(static) openZigbeeConnectDeviceList(did)
打开Zigbee 网关插件开启子设备快连
Parameters:
Name | Type | Description |
---|---|---|
did |
string | 网关设备did |
- Since:
- 10020
(static) previewLegalInformationAuthorization(option) → {Promise}
查看隐私政策和用户协议信息, 支持显示用户体验计划
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
option |
object | 配置数据 Properties
|
- Since:
- 10023
(static) privacyAndProtocolReview(licenseTitle, licenseUrl, policyTitle, policyUrl)
查看软件政策和隐私协议
Parameters:
Name | Type | Description |
---|---|---|
licenseTitle |
string | optional 可以为空 |
licenseUrl |
string | optional require('资源的相对路径') |
policyTitle |
string | 不可以为空 |
policyUrl |
string | 不可以为空 require('资源的相对路径') |
- Deprecated:
- 10023废弃, 请使用 previewLegalInformationAuthorization
(static) refreshDeviceList() → {Promise}
刷新设备列表,同时刷新设备列表页UI
- Since:
- 10025
(static) showBLESwitchGuide()
显示提示用户打开蓝牙的动画示意图, 仅在iOS下有效,Android下无反应
- Since:
- 10004