更新记录
0.0.10(2022-02-28)
Googbuild-WIFI插件说明
集成 ESPTouch 和 AirKiss 配网协议,帮助物联网设备连接Wi-Fi网络, 快捷简单。 本插件持续开发中,目前仅支持 Android & IOS
版本说明
当前版本: 0.0.10
更新时间: 2022-02-16
更新内容:
1.连接airkiss和ESP增加自定义超时时间,默认60秒
--
版本: 0.0.9
更新时间: 2021-05-16
更新内容:
- 增加获取wifi状态功能
- 增加关闭wifi功能
- 增加打开wifi功能
- demo增加主动获取位置权限
--
版本: 0.0.8
更新时间: 2021-05-10
更新内容:
- 增加手机连接wifi功能
- 扩展错误提示码
--
版本: 0.0.7
更新时间: 2021-04-12
更新内容:
- 获取附件wifi 列表,添加权限提示语
版本: 0.0.6
更新时间: 2021-04-02
更新内容:
- 优化安卓10三星机型无法获取wifi名称和增加权限判断提示
- 增加获取附近wifi列表接口
--
版本: 0.0.5
更新时间: 2021-03-22
更新内容:
1.增加错误代码code表
2.修复华为安卓10无法获取wifi名称
--
版本: 0.0.4
更新时间: 2020-05-20
更新内容: 更新安卓部分机型无法获取SSID问题
--
版本: 0.0.3
更新时间: 2019-08-29
更新内容: 增加IOS平台
--
版本: 0.0.2
更新时间: 2019-05-31
更新内容: 配网成功信息返回原始数据
--
版本: 0.0.1
更新时间: 2019-05-23
更新内容: 初版基本功能
作者: whc
引用方式
const gbWiFi = uni.requireNativePlugin('Googbuild-WIFI');
功能列表
名称 | 接口名 | Andorid | IOS |
---|---|---|---|
手机WIFI状态 | getWifiStatus | √ | |
打开WIFI | openWifi | √ | |
关闭WIFI | closeWifi | √ | |
手机连接WiFi | linkWifi | √ | |
获取附近WiFi列表 | getWifiList | √ | |
获取WiFi名称 | getWiFiName | √ | |
获取网络类型 | getNetWorkType | √ | |
获取BSSID | getBSSID | √ | |
AirKiss配网 | linkAirKiss | √ | √ |
取消AirKiss配网 | cancelAirKiss | √ | √ |
EspTouch配网 | linkEsptouch | √ | √ |
取消EspTouch配网 | cancelEsptouch | √ | √ |
常见问题
安卓权限问题
必须请求GPS权限并打开GPS才可以正确获取到WIFI名称
<!--使用网络-->
<uses-permission android:name="android.permission.INTERNET" />
<!--网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--wifi状态权限-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--位置信息-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--如果是安卓10.0,需要后台获取连接的wifi名称则添加进程获取位置信息权限 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!--android 10.0使用wifi api新添加的权限-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
第一次使用打包问题
注意使用自定义基座模式
Demo
[github](https://github.com/goodbuildwhc/wifiDemo-dcloud)
API Demo
手机WIFI状态
gbWiFi.getWifiStatus(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
status: 0 //返回状态: 1-已关闭 3-已打开
}
打开WiFi
gbWiFi.openWifi(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
massage: '操作成功' //返回消息
}
关闭WiFi
gbWiFi.closeWifi(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
massage: '操作成功' //返回消息
}
手机连接WiFi
gbWiFi.linkWifi(option, callback)
参数
{
ssid, //wifi名称(必填)
pwd // wifi密码(必填)
}
返回
{
code: 0, //状态码: 0-失败 1-成功
massage: 'xxxx' //返回消息
}
示例:
gbWiFi.linkWifi({
ssid: this.name,
pwd: this.pwd
},
callback => {
this.result = JSON.stringify(callback);
});
获取附近WiFi列表
gbWiFi.getWifiList(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
list: ['test1','test2'] //
}
示例:
gbWiFi.getWifiList(result => {
console.log(result.ssid);
});
获取WiFi名称
gbWiFi.getWiFiName(callback)
参数
无
返回
{
code: 1, // 状态 0-失败 1-成功
ssid: 'wifiName' //Wifi 名称
}
示例:
gbWiFi.getWiFiName(result => {
console.log(result.ssid);
});
获取网络类型
gbWiFi.getNetWorkType(callback)
参数
无
返回
{
code: 1, // 状态 0-失败 1-成功
type: 6 // 网络类型
}
示例:
gbWiFi.getNetWorkType(result => {
switch(result.type) {
case 1:
console.log('wap网络');
break;
case 2:
console.log('2G网络');
break;
case 3:
console.log('3G网络');
break;
case 4:
console.log('4G网络');
break;
case 5:
console.log('5G网络'); // 预留值
break;
case 6:
console.log('WiFi 2.4G网段');
break;
case 7:
console.log('5G WiFi');
break;
default:
console.log('没有网络');
break;
}
});
获取 BSSID
gbWiFi.getBSSID(callback)
参数
无
返回
{
code: 1, // 状态 0-失败 1-成功
bssid: '0.0.0.0.0' // BSSID
}
示例:
gbWiFi.getBSSID(result => {
console.log(result.bssid);
});
使用 AirKiss 协议进行配网
gbWiFi.linkAirKiss(option, callback)
参数
{
ssid, //wifi名称(必填)
pwd // wifi密码(必填)
timeout, // 等待超时时间毫秒数 (可选)
}
返回
{
code: 0, //状态码: 0-失败 1-成功 2-特殊情况导致失败
massage: 'xxx', //返回消息
}
备注: IOS airkiss 配网成功无回调
示例:
gbWiFi.linkAirKiss({
ssid: 'wifiName',
pwd: '12345678',
timeout: 120000,
},
result => {
switch(result.code) {
case 1:
console.log('连接成功'); break;
case 0:
case 2:
console.log('连接失败', result.massage); break;
default:
break;
}
});
取消 AirKiss 配网
gbWiFi.cancelAirKiss(callback)
参数
无
返回
{
code: 0, //状态码: 0-失败 1-成功
massage: 'xxx', //返回消息
}
示例:
gbWiFi.cancelAirKiss(result => {
if (result.code) {
console.log('取消成功');
} else {
console.log('取消失败');
}
});
使用 Esptouch 协议进行配网
gbWiFi.linkEsptouch(option, callback)
参数
{
ssid, //wifi名称(必填)
pwd, // wifi密码(必填),
timeout, // 等待超时时间毫秒数 (可选)
mode // 配网模式 (可选): 'Broadcast'(默认), 'Multicast'
}
返回
{
code: 0, //状态码: 0-失败 1-成功 其他失败code 查看错误代码表
massage: 'xxx' //返回消息
}
示例:
gbWiFi.linkEsptouch({
ssid: 'wifiName',
pwd: '12345678',
timeout: 120000,
model: 'Broadcast'
},
result => {
switch(result.code) {
case 1:
console.log('连接成功'); break;
case 0:
case 2:
console.log('连接失败', result.massage); break;
default:
break;
}
});
取消 EspTouch 配网
gbWiFi.cancelEsptouch(callback)
参数
无
返回
{
code: 0, //状态码: 0-失败 1-成功
massage: 'xxxx' //返回消息
}
示例:
gbWiFi.cancelEsptouch(result => {
if (result.code) {
console.log('取消成功');
} else {
console.log('取消失败');
}
});
错误代码Code表
code | 错误信息 | 采取方案 |
---|---|---|
0 | 自定义失败信息 | |
1101 | 创建Esptouch任务失败,Esptouch 端口可能被其他程序占用。 | 删除APP后台程序 |
1102 | 创建Esptouch任务失败,Esptouch 任务已经存在,请重新尝试。 | 尝试重新配网 |
1002 | 尝试多次后还是失败,请检查wifi名称是否存在中文、wifi密码是否准确和手机 wifi 网络是否处于2.4G。 | getNetWorkType可以判断是否处于2.4G |
1003 | 受环境特殊干扰:是否多台手机都同时在尝试配网? | |
1901 | 必填参数缺少 | |
1902 | 参数设置过短 | |
1903 | 参数设置过长 | |
1201 | 多次尝试连接wifi失败,请检查wifi名称是否存在中文或空格等特殊字符 | |
9999 | 系统未知异常 |
0.0.9(2021-05-19)
当前版本: 0.0.9
更新时间: 2021-05-16
更新内容:
- 增加获取wifi状态功能
- 增加关闭wifi功能
- 增加打开wifi功能
- demo增加主动获取位置权限
0.0.8(2021-05-11)
当前版本: 0.0.8
更新时间: 2021-05-10
更新内容:
- 增加手机连接wifi功能
- 扩展错误提示码
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:6.0 - 10.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原生插件配置”->”云端插件“列表中删除该插件重新选择
Googbuild-WIFI插件说明
集成 ESPTouch 和 AirKiss 配网协议,帮助物联网设备连接Wi-Fi网络, 快捷简单。 本插件持续开发中,目前仅支持 Android & IOS
版本说明
当前版本: 0.0.10
更新时间: 2022-02-16
更新内容:
1.连接airkiss和ESP增加自定义超时时间,默认60秒
--
版本: 0.0.9
更新时间: 2021-05-16
更新内容:
- 增加获取wifi状态功能
- 增加关闭wifi功能
- 增加打开wifi功能
- demo增加主动获取位置权限
--
版本: 0.0.8
更新时间: 2021-05-10
更新内容:
- 增加手机连接wifi功能
- 扩展错误提示码
--
版本: 0.0.7
更新时间: 2021-04-12
更新内容:
- 获取附件wifi 列表,添加权限提示语
版本: 0.0.6
更新时间: 2021-04-02
更新内容:
- 优化安卓10三星机型无法获取wifi名称和增加权限判断提示
- 增加获取附近wifi列表接口
--
版本: 0.0.5
更新时间: 2021-03-22
更新内容:
1.增加错误代码code表
2.修复华为安卓10无法获取wifi名称
--
版本: 0.0.4
更新时间: 2020-05-20
更新内容: 更新安卓部分机型无法获取SSID问题
--
版本: 0.0.3
更新时间: 2019-08-29
更新内容: 增加IOS平台
--
版本: 0.0.2
更新时间: 2019-05-31
更新内容: 配网成功信息返回原始数据
--
版本: 0.0.1
更新时间: 2019-05-23
更新内容: 初版基本功能
作者: whc
引用方式
const gbWiFi = uni.requireNativePlugin('Googbuild-WIFI');
功能列表
名称 | 接口名 | Andorid | IOS |
---|---|---|---|
手机WIFI状态 | getWifiStatus | √ | |
打开WIFI | openWifi | √ | |
关闭WIFI | closeWifi | √ | |
手机连接WiFi | linkWifi | √ | |
获取附近WiFi列表 | getWifiList | √ | |
获取WiFi名称 | getWiFiName | √ | |
获取网络类型 | getNetWorkType | √ | |
获取BSSID | getBSSID | √ | |
AirKiss配网 | linkAirKiss | √ | √ |
取消AirKiss配网 | cancelAirKiss | √ | √ |
EspTouch配网 | linkEsptouch | √ | √ |
取消EspTouch配网 | cancelEsptouch | √ | √ |
常见问题
安卓权限问题
必须请求GPS权限并打开GPS才可以正确获取到WIFI名称
<!--使用网络-->
<uses-permission android:name="android.permission.INTERNET" />
<!--网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--wifi状态权限-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--位置信息-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--如果是安卓10.0,需要后台获取连接的wifi名称则添加进程获取位置信息权限 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!--android 10.0使用wifi api新添加的权限-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
第一次使用打包问题
注意使用自定义基座模式
Demo
[github](https://github.com/goodbuildwhc/wifiDemo-dcloud)
API Demo
手机WIFI状态
gbWiFi.getWifiStatus(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
status: 0 //返回状态: 1-已关闭 3-已打开
}
打开WiFi
gbWiFi.openWifi(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
massage: '操作成功' //返回消息
}
关闭WiFi
gbWiFi.closeWifi(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
massage: '操作成功' //返回消息
}
手机连接WiFi
gbWiFi.linkWifi(option, callback)
参数
{
ssid, //wifi名称(必填)
pwd // wifi密码(必填)
}
返回
{
code: 0, //状态码: 0-失败 1-成功
massage: 'xxxx' //返回消息
}
示例:
gbWiFi.linkWifi({
ssid: this.name,
pwd: this.pwd
},
callback => {
this.result = JSON.stringify(callback);
});
获取附近WiFi列表
gbWiFi.getWifiList(callback)
参数
无
返回
{
code: 1, //状态码: 0-失败 1-成功
list: ['test1','test2'] //
}
示例:
gbWiFi.getWifiList(result => {
console.log(result.ssid);
});
获取WiFi名称
gbWiFi.getWiFiName(callback)
参数
无
返回
{
code: 1, // 状态 0-失败 1-成功
ssid: 'wifiName' //Wifi 名称
}
示例:
gbWiFi.getWiFiName(result => {
console.log(result.ssid);
});
获取网络类型
gbWiFi.getNetWorkType(callback)
参数
无
返回
{
code: 1, // 状态 0-失败 1-成功
type: 6 // 网络类型
}
示例:
gbWiFi.getNetWorkType(result => {
switch(result.type) {
case 1:
console.log('wap网络');
break;
case 2:
console.log('2G网络');
break;
case 3:
console.log('3G网络');
break;
case 4:
console.log('4G网络');
break;
case 5:
console.log('5G网络'); // 预留值
break;
case 6:
console.log('WiFi 2.4G网段');
break;
case 7:
console.log('5G WiFi');
break;
default:
console.log('没有网络');
break;
}
});
获取 BSSID
gbWiFi.getBSSID(callback)
参数
无
返回
{
code: 1, // 状态 0-失败 1-成功
bssid: '0.0.0.0.0' // BSSID
}
示例:
gbWiFi.getBSSID(result => {
console.log(result.bssid);
});
使用 AirKiss 协议进行配网
gbWiFi.linkAirKiss(option, callback)
参数
{
ssid, //wifi名称(必填)
pwd // wifi密码(必填)
timeout, // 等待超时时间毫秒数 (可选)
}
返回
{
code: 0, //状态码: 0-失败 1-成功 2-特殊情况导致失败
massage: 'xxx', //返回消息
}
备注: IOS airkiss 配网成功无回调
示例:
gbWiFi.linkAirKiss({
ssid: 'wifiName',
pwd: '12345678',
timeout: 120000,
},
result => {
switch(result.code) {
case 1:
console.log('连接成功'); break;
case 0:
case 2:
console.log('连接失败', result.massage); break;
default:
break;
}
});
取消 AirKiss 配网
gbWiFi.cancelAirKiss(callback)
参数
无
返回
{
code: 0, //状态码: 0-失败 1-成功
massage: 'xxx', //返回消息
}
示例:
gbWiFi.cancelAirKiss(result => {
if (result.code) {
console.log('取消成功');
} else {
console.log('取消失败');
}
});
使用 Esptouch 协议进行配网
gbWiFi.linkEsptouch(option, callback)
参数
{
ssid, //wifi名称(必填)
pwd, // wifi密码(必填),
timeout, // 等待超时时间毫秒数 (可选)
mode // 配网模式 (可选): 'Broadcast'(默认), 'Multicast'
}
返回
{
code: 0, //状态码: 0-失败 1-成功 其他失败code 查看错误代码表
massage: 'xxx' //返回消息
}
示例:
gbWiFi.linkEsptouch({
ssid: 'wifiName',
pwd: '12345678',
timeout: 120000,
model: 'Broadcast'
},
result => {
switch(result.code) {
case 1:
console.log('连接成功'); break;
case 0:
case 2:
console.log('连接失败', result.massage); break;
default:
break;
}
});
取消 EspTouch 配网
gbWiFi.cancelEsptouch(callback)
参数
无
返回
{
code: 0, //状态码: 0-失败 1-成功
massage: 'xxxx' //返回消息
}
示例:
gbWiFi.cancelEsptouch(result => {
if (result.code) {
console.log('取消成功');
} else {
console.log('取消失败');
}
});
错误代码Code表
code | 错误信息 | 采取方案 |
---|---|---|
0 | 自定义失败信息 | |
1101 | 创建Esptouch任务失败,Esptouch 端口可能被其他程序占用。 | 删除APP后台程序 |
1102 | 创建Esptouch任务失败,Esptouch 任务已经存在,请重新尝试。 | 尝试重新配网 |
1002 | 尝试多次后还是失败,请检查wifi名称是否存在中文、wifi密码是否准确和手机 wifi 网络是否处于2.4G。 | getNetWorkType可以判断是否处于2.4G |
1003 | 受环境特殊干扰:是否多台手机都同时在尝试配网? | |
1901 | 必填参数缺少 | |
1902 | 参数设置过短 | |
1903 | 参数设置过长 | |
1201 | 多次尝试连接wifi失败,请检查wifi名称是否存在中文或空格等特殊字符 | |
9999 | 系统未知异常 |