更新记录
1.0(2023-07-25)
新版发布
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
阿里生活平台设备配网
插件包集成准备
a、要在阿里生活平台完善相关的信息,获取到安全图片(app需要这个图片) b、请将nativeplugins/Ali-Iot-Provision 添加到工程对应位置 c、将a步骤获得的图片放到nativeplugins/Ali-Iot-Provision/android/res/drawable目录(没有就创建目录 d、manifest.json 中原生插件配置添加Ali-Iot-Provision(阿里生活平台 - 设备配网插件) e、权限需要: android:
<uses-permission android:name="android.permission.INTERNET" /> <!--网络访问-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--允许程序改变WiFi状态,配网等-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!--允许改变WiFi多播状态???-->
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <!--允许一个程序访问CellID或 WiFi热点来获取粗略的位置,登陆、设备添加等-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--允许一个程序访问CellID或 WiFi热点来获取精确的位置,登陆、设备添加等???-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!--允许应用程序访问额外的位置提供命令,登陆、设备添加等???-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!--允许程序改变网络状态,如是否联网,配网???-->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
f、用a步骤使用的签名、包名制作uniapp调试基座 制作自定义基座来运行调试
插件接口调用
插件对象
var provisionApi = uni.requireNativePlugin("Ali-Iot-Provision");
接口及参数
插件内自动初始化阿里sdk,需要保证已经存放了安全图片,否则初始化会失败。 所有回调结果,type 对应原生回调的函数名。data对应的各回调参数的值。
开始配网 startAddDevice
provisionApi.startAddDevice({
productKey:"a1AMdAP0X2q", //扫码获得或手动填写
linkType:"ForceAliLinkTypeBroadcast" //可参考[阿里定义](https://gaic.alicdn.com/ztms/ilop-ApiReference-V5/com/aliyun/alink/business/devicecenter/api/add/LinkType.html?spm=a2c4g.11186623.0.0.52145fa2nbWyEL)
},function(result){
console.log(result);
//{"data":{"prepareType":1},"type":"onProvisionPrepare"}
if(result.type == "onProvisionPrepare"){
// 手机热点配网、设备热点配网、一键配网、蓝牙辅助配网、二维码配网会走到该流程,
// 零配和智能路由器配网不会走到该流程。
// prepareType = 1提示用户输入账号密码
// prepareType = 2提示用户手动开启指定热点 aha 12345678
// 执行完上述操作之后,调用toggleProvision接口继续执行配网流程
if(result.data.prepareType == 1){
provisionApi.toggleProvision({
wifiName:"TP-LINK_A1D5-lhg", //wifi名称 不支持中文名称
wifiPwd:"19817852563", //wifi 密码
timeOut:60 //单位秒,目前最短只能设置60S
});
}
}
else if(result.type == "onPreCheck"){
// 参数检测回调
} else if(result.type == "onProvisioning"){
// 配网中
} else if(result.type == "onProvisionStatus"){
// 二维码配网会走到这里 provisionStatus=ProvisionStatus.QR_PROVISION_READY表示二维码ready了
// ProvisionStatus.QR_PROVISION_READY.message() 获取二维码内容
// 注意:返回二维码时已开启监听设备是否已配网成功的通告,并开始计时,UI端应提示用户尽快扫码;
// 如果在指定时间配网超时了,重新调用开始配网流程并刷新二维码;
} else if(result.type == "onProvisionedResult"){
// 配网结果 如果配网成功之后包含token,请使用配网成功带的token做绑定
}
});
给设备设定wifi toggleProvision
本接口是在开始配网过程中根据onProvisionPrepare回调事件中repareType == 1时调用
provisionApi.toggleProvision({
wifiName:"TP-LINK_A1D5-lhg", //wifi名称 不支持中文名称
wifiPwd:"19817852563", //wifi 密码
timeOut:60 //单位秒,目前最短只能设置60S
});
停止配网stopAddDevice
provisionApi.stopAddDevice();