更新记录
1.1(2020-08-27)
1.修复ios版本,配网闪退问题。
1.0(2020-08-21)
版本发布
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:9 - 14 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
说明
IOS Android双端支持
本插件应用于基本esp32 blufi协议配网app
数据说明请参数 !https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/blufi.html
本插件只支持2.4G wifi配网
本插件只支持2.4G wifi配网
本插件只支持2.4G wifi配网
ios打包时,如果需要用本插件获取 ios连接的wifi名称 需要增加额外的配制 manifest.json->app-plug->distribute->ios->节点下加下如下配制:
"capabilities" : { "entitlements" : { "com.apple.developer.networking.wifi-info" : true }, // 合并到工程entitlements文件的数据(json格式)
// "com.apple.developer.networking.wifi-info":"true" "plists" : {} },添加这个配制后,ios打包时所用的证书也应包含 wifi access information
插件说明
1.初始化插件
let nativeBluefi = uni.requireNativePlugin('HG-Blufi')
2.查找指定蓝牙设备(filter可不传,需要自己过滤)
const State_Blue_Connected = 1;
const State_Blue_DisConnect = 2;
const State_Blue_set_mtu_success = 3;
const State_Blue_set_mtu_failed = 4;
const State_Blue_discoverd_noservice = 5;
const State_Blue_discoverd_service = 6;
const State_Blue_find_write_charactor = 7;
const State_Blue_not_find_write_charactor = 8;
const State_Blue_not_find_notify_charactor = 9;
const State_Blue_set_security_success = 10;
const State_Blue_set_security_failed = 11;
const State_Blue_post_config_success = 12;
const State_Blue_post_config_failed = 13;
const State_Blue_device_reponse_success = 14;
const State_Blue_device_reponse_failed = 15;
const State_device_scan_result_success = 16;
const State_device_scan_result_failed = 17;
const State_device_get_version_success = 18;
const State_device_get_version_failed = 19;
const State_device_send_data_success = 20;
const State_device_send_data_failled = 21;
const State_device_rec_data_success = 22;
const State_device_rec_data_failled = 23;
const State_device_other_error = 24;
const State_scan_result = 0;
const State_Blue_Prepared_for_wifi_config = 25;
const State_scan_begin = -1;
nativeBluefi.scan({
filter:'过滤设备名称'
},(ret)=>{
if (ret.status == State_device_scan_result_success) { //找到蓝牙
} else if (ret.status == State_Blue_Connected) { //蓝牙连接成功
} else if (ret.status == State_Blue_DisConnect) { //断开连接
} else if (ret.status == State_Blue_set_security_success) { //状态准备好了
} else if (ret.status == State_scan_result) { //扫描结束了
else if(ret.status == State_Blue_discoverd_service){ //发现服务成功
}else if(ret.status == State_Blue_set_mtu_success){ //修改mtu成功
}else if(ret.status == State_Blue_post_config_success){//发送配网数据成功
}else if(ret.status == State_Blue_device_reponse_success){//收到设备配网信息
}else if(ret.status == State_device_rec_data_success){//收到蓝牙发送过来的数据
}else if(ret.status == State_scan_begin){//开始扫描
}
});
3. 停止搜所
nativeBluefi.stopScan();
4.开始连接
nativeBluefi.connect("设备ID ios版本为UUID");
5.发送配网信息(wifi ssdid与password) 注意目前只支持2.4G网络
let config = {
mode:0x01,//加密方式 (固定)
sta_ssid:"2.4G_wifi",
sta_password:password
}
wifiInfo = {
ssid:options.ssid,
password:options.password
}
//开始配制网络
nativeBluefi.configureOptions(config);
6.发送自定义数据
nativeBluefi.postCustomData("{data:'我是测试数据'}");
7.配网完成后,需要断开 (如果不断开 ,一般远程设备也会主动断开 )
nativeBluefi.close();
8.配网完成 (Happy)
额外api (获取当前连接wifi信息)
function loadWifiInfo(){
if(uni.getSystemInfoSync().platform === "android"){
console.log("开始获取android wifi 连接信息");
var Context = plus.android.importClass("android.content.Context");
var WifiManager = plus.android.importClass("android.net.wifi.WifiManager")
var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");
// var ArrayList = plus.android.importClass("java.util.ArrayList");
// var ScanResult = plus.android.importClass("android.net.wifi.ScanResult");
// var wifis = new ArrayList();
// wifis = wifiManager.getScanResults();
var wifiInfo = wifiManager.getConnectionInfo();
return wifiInfo.getSSID();
}
else{
console.log("开始获取IOS wifi 连接信息");
let Esp32BlufiModule = plus.ios.importClass("Esp32BlufiModule");
let wifiInfo = Esp32BlufiModule.getWifiName();
console.log("IOS current wifi name:"+wifiInfo);
return wifiInfo;
}
}
9. android打开蓝牙方法(IOS打开蓝牙为系统私有api调用后会对上加appstore有影响,不提供,有需要的可以自行百度)
function openBluetoothDevice() {
let app = getApp();
if (uni.getSystemInfoSync().platform === 'android') {
let main = plus.android.runtimeMainActivity();
let Context = plus.android.importClass("android.content.Context");
let BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
plus.android.importClass(BManager); //引入相关的method函数
BAdapter = BManager.getAdapter();
plus.android.importClass(BAdapter); //引入相关的method函数,这样之后才会有isEnabled函数支持
if (!BAdapter.isEnabled()) {
BAdapter.enable();
}
console.log("蓝牙设备 是否打开:"+ BAdapter.isEnabled());
}
}