更新记录

1.0.2(2021-10-14)

修复IOS BSSID 十六进制内容少0的问题

1.0.1(2021-05-06)

修复IOS手机没有连接WiFi时,获取WiFi信息闪退问题

1.0.0(2021-04-28)

1.0.0

安卓和苹果手机APP获取当前WiFi信息

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4w - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 15

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


安卓App使用插件需要的权限

 <!--使用网络-->
<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" />

苹果App使用插件需要的权限

1.  网络权限【所有版本】
2.  位置权限【IOS 13.0以上】
3.  添加WiFi能力后再重新自动生成证书,Capabilities -> + Access WIFI Information 【IOS 12.0以上】

制作自定义调试基座时添加权限:在manifest.json文件源码试图中添加以下信息:

"capabilities": {  
    "entitlements": {   // 合并到工程entitlements文件的数据(json格式)  
    },  
    "plists": {         // 合并到工程Info.plist文件的数据(json格式)  
    }  
}

例如添加wifi和蓝牙的权限

/* ios打包配置 */
"ios" : {
    "capabilities" : {
        "plists" : {
            "NSLocationAlwaysAndWhenInUseUsageDescription" : "获取WiFi信息需要的关联权限信息",
            "NSBluetoothPeripheralUsageDescription" : "使用蓝牙功能,用于蓝牙配网",
            "NSBluetoothAlwaysUsageDescription" : "使用蓝牙功能,用于蓝牙配网",
            "NSLocalNetworkUsageDescription" : "获取WiFi信息需要的关联权限信息",
            "NSLocationAlwaysUsageDescription" : "获取WiFi信息需要的关联权限信息",
            "NSLocationWhenInUseUsageDescription" : "获取WiFi信息需要的关联权限信息"
        }
    },
    "privacyDescription" : {
        "NSLocationAlwaysAndWhenInUseUsageDescription" : "获取位置信息",
        "NSBluetoothPeripheralUsageDescription" : "使用蓝牙功能",
        "NSBluetoothAlwaysUsageDescription" : "使用蓝牙功能",
        "NSLocalNetworkUsageDescription" : "使用本地网络",
        "NSLocationAlwaysUsageDescription" : "获取位置信息",
        "NSLocationWhenInUseUsageDescription" : "获取位置信息"
    },
    "idfa" : true
}

官方文档地址:https://ask.dcloud.net.cn/article/36393

使用方法示例(index.vue)

<template>
    <div>
        <button type="primary" @click="getWIFIInfo">getWIFIInfo</button>
        <text>展示返回的内容:{{content}}</text>
    </div>
</template>

<script>
  // 首先需要通过 uni.requireNativePlugin("ModuleName") 获取 module 
  var sand = uni.requireNativePlugin("sand-plugin-wifi");
  var page;
    export default {
        data() {
            return {
                content: '请点击按钮获取'
            }
        },
        onLoad() {
          page=this;
        },
        methods: {
          getWIFIInfo() {
            //触发一次位置获取,否则iphone设置中没有定位服务
            uni.getLocation({
                type: 'wgs84',
                success: function (res) {
                    console.log('当前位置的经度:' + res.longitude);
                    console.log('当前位置的纬度:' + res.latitude);
                    page.content+="位置信息:[经度:"+res.longitude+"],[纬度:"+res.latitude+"]"
                }
            });
            // 调用异步方法
            sand.getWIFIInfo({},
                (ret) => {
              //在页面显示获取的结果内容
              page.content+="原始结果:"+JSON.stringify(ret);
              page.content+="WiFi信息:[ssid:"+ret.ssid+"],[bssid:"+ret.bssid+"]"
            });
          }
        }
    }
</script>

<style>
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .logo {
        height: 200rpx;
        width: 200rpx;
        margin-top: 200rpx;
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 50rpx;
    }

    .text-area {
        display: flex;
        justify-content: center;
    }

    .title {
        font-size: 36rpx;
        color: #8f8f94;
    }
</style>

官方使用文档:https://nativesupport.dcloud.net.cn/NativePlugin/use/use

接口返回内容(JSON)

{
    "status": "状态码",//2500代表成功,其他是失败 
    "ssid": "wifi的名称", 
    "bssid": "wifi的MAC地址", 
    "message": "成功或失败的说明信息"
}

例子:

{
    "status": "2500",
    "ssid": "my-home-wifi", 
    "bssid": "D0:35:33:32:D1:D9", 
    "message": "获取成功"
}

状态码

码值 说明
2500 成功
2504 获取异常,可能报了异常信息

其他常见问题

SSID出现(null)

苹果手机权限问题,检查APP是否配置以下权限

1.  网络权限【所有版本】
2.  位置权限【IOS 13.0以上】
3.  添加WiFi能力后再重新自动生成证书,Capabilities -> + Access WIFI Information 【IOS 12.0以上】

隐私、权限声明

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

安卓权限 --- 使用网络权限 网络状态权限 WiFi状态权限 位置信息权限 苹果权限 --- 网络权限【所有版本】 位置权限【IOS 13.0以上】 添加WiFi能力后再重新自动生成证书,Capabilities -> + Access WIFI Information 【IOS 12.0以上】

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

获取手机当前WiFI信息,包括SSID,BSSID,未发送到服务器,直接返回给使用插件的开发者

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

许可协议

请参考开源项目地址的开源协议

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