更新记录

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. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问