更新记录

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
更新内容:

  1. 增加获取wifi状态功能
  2. 增加关闭wifi功能
  3. 增加打开wifi功能
  4. demo增加主动获取位置权限

-- 版本: 0.0.8
更新时间: 2021-05-10
更新内容:

  1. 增加手机连接wifi功能
  2. 扩展错误提示码

-- 版本: 0.0.7
更新时间: 2021-04-12
更新内容:

  1. 获取附件wifi 列表,添加权限提示语

版本: 0.0.6
更新时间: 2021-04-02
更新内容:

  1. 优化安卓10三星机型无法获取wifi名称和增加权限判断提示
  2. 增加获取附近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
更新内容:

  1. 增加获取wifi状态功能
  2. 增加关闭wifi功能
  3. 增加打开wifi功能
  4. demo增加主动获取位置权限

0.0.8(2021-05-11)

当前版本: 0.0.8
更新时间: 2021-05-10
更新内容:

  1. 增加手机连接wifi功能
  2. 扩展错误提示码
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:6.0 - 10.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 14

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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
更新内容:

  1. 增加获取wifi状态功能
  2. 增加关闭wifi功能
  3. 增加打开wifi功能
  4. demo增加主动获取位置权限

-- 版本: 0.0.8
更新时间: 2021-05-10
更新内容:

  1. 增加手机连接wifi功能
  2. 扩展错误提示码

-- 版本: 0.0.7
更新时间: 2021-04-12
更新内容:

  1. 获取附件wifi 列表,添加权限提示语

版本: 0.0.6
更新时间: 2021-04-02
更新内容:

  1. 优化安卓10三星机型无法获取wifi名称和增加权限判断提示
  2. 增加获取附近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 系统未知异常

隐私、权限声明

1. 本插件需要申请的系统权限列表:

必须请求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"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无