使用uniapp实现小程序获取wifi并连接
Wi-Fi功能模块
App平台由 uni ext api 实现,需下载插件:uni-WiFi 链接:https://ext.dcloud.net.cn/plugin?id=10337
uni ext api 需 HBuilderX 3.6.8+
iOS平台获取Wi-Fi信息需要开启“Access WiFi information”能力登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启“Access WiFi information”,保存后重新生成profile文件。
iOS平台iOS13及以上系统,获取当前连接的Wi-Fi信息需要先获取系统定位权限,因此在iOS13及以上系统使用此接口时,会触发定位权限申请的弹窗。
uni.startWifi(OBJECT)
初始化Wi-Fi模块

uni.stopWifi(OBJECT)
关闭 Wi-Fi 模块
OBJECT 参数说明

uni.getConnectedWifi(OBJECT)
获取已连接的 Wi-Fi 信息
OBJECT 参数说明

<template><view class="page"><view class="gc-box"><button @click="getConnectedWifi">获取当前连接wifi</button></view><view class="gc-box"><button @click="getWifiList">获取周围 WiFi</button></view><view class="gc-box">已连接:{{ connectedWifi.SSID }} </view><view class="gc-box">默认连接密码:<input v-model="password" /> </view><view class="gc-box"><view v-for="item in wifiList" :key="item.BSSID" class="item"><text class="title">{{ item.SSID }}</text><button class="btn" @click="connectWifi(item)">连接</button></view></view></view>
</template><script>
export default {data() {return {wifiList: [], // 存储WiFi列表connectedWifi: { SSID: '' }, // 存储当前已连接wifipassword: '', // 密码}},onLoad() {this.onWifiConnected()this.onGetWifiList()},methods: {/** 启动wifi */startWifi() {return new Promise((resolve, reject) => {uni.startWifi({success: (res) => {console.log('启动wifi 成功', res)resolve(true)},fail: (err) => {console.error('启动wifi 失败', err)uni.showModal({ content: err.errMsg, showCancel: false })reject(new Error(err))},})})},/** 获取wifi列表, ios和android 各不相同,具体看顶部资料 */async getWifiList() {const hasStart = await this.startWifi()if (hasStart !== true) returnuni.getWifiList({success: (res1) => {console.log('获取wifi列表命令发送 成功', res1)},fail: (err) => {console.error('获取wifi列表 失败', err)uni.showModal({ content: err.errMsg, showCancel: false })},})},/** 监听获取wifi列表 */onGetWifiList() {uni.onGetWifiList((res) => {console.log('监听获取wifi列表', res)const { wifiList } = res// 过滤同名WiFi信号const filterList = wifiList.reduce((result, item) => {const index = result.findIndex((v) => {return v.SSID === item.SSID})if (index < 0) {result.push(item)} else if (item.signalStrength > result[index].signalStrength) {result[index] = item}return result}, [])console.log('过滤同名后', filterList)this.wifiList = filterList})},/** 连接某个 Wi-Fi */connectWifi(wifi) {console.log('选中的wifi:', wifi)this.connectedWifi = { SSID: '' }uni.connectWifi({SSID: wifi.SSID,password: this.password,success: (res) => {console.log('wifi连接命令发送 成功:', res)},fail: (err) => {console.error('wifi连接 失败:', err)uni.showModal({ content: err.errMsg, showCancel: false })},})},/** 监听wifi连接状态 */onWifiConnected() {uni.onWifiConnected((res) => {console.log('监听wifi连接状态', res)this.connectedWifi = res.wifi})},/** 获取当前连接的wifi */async getConnectedWifi() {this.connectedWifi = { SSID: '' }const hasStart = await this.startWifi()if (hasStart !== true) returnuni.getConnectedWifi({success: (res) => {console.log('获取当前连接的wifi 成功', res)this.connectedWifi = res.wifi // 当前连接的wifi的信息// this.connectedWifiSSID = res.wifi.SSID},fail: (err) => {console.error('获取当前连接的wifi 失败:', err)uni.showModal({ content: err.errMsg, showCancel: false })},})},},
}
</script><style>
.item {display: flex;flex-direction: row;align-items: center;justify-content: space-between;border-bottom: 2rpx solid #ddd;padding: 16rpx 0;
}
.item .title {flex: 1;
}
input {border-bottom: 2rpx solid #ddd;
}
</style>

作者介绍
一个热爱编程,无背景最底层的程序员。没人领路遇到过很多坑,希望能分享一下经验,让后续的小伙伴们少走弯路!希望大家可以多多支持关注!您的肯定是我最大的动力。

相关文章:
使用uniapp实现小程序获取wifi并连接
Wi-Fi功能模块 App平台由 uni ext api 实现,需下载插件:uni-WiFi 链接:https://ext.dcloud.net.cn/plugin?id10337 uni ext api 需 HBuilderX 3.6.8 iOS平台获取Wi-Fi信息需要开启“Access WiFi information”能力登录苹果开发者网站&…...
回忆杀之手搓当年搓过的Transformer
整体代码 import mathimport paddle import paddle.nn as nn import paddle.nn.functional as Fclass MaskMultiHeadAttention(nn.Layer):def __init__(self, hidden_size, num_heads):super(MaskMultiHeadAttention, self).__init__()assert hidden_size % num_heads 0, &qu…...
【AR】使用深度API实现虚实遮挡
遮挡效果 本段描述摘自 https://developers.google.cn/ar/develop/depth 遮挡是深度API的应用之一。 遮挡(即准确渲染虚拟物体在现实物体后面)对于沉浸式 AR 体验至关重要。 参考下图,假设场景中有一个Andy,用户可能需要放置在包含…...
python-pytorch实现skip-gram 0.5.001
python-pytorch实现skip-gram 0.5.000 数据加载、切词准备训练数据准备模型和参数训练保存模型加载模型简单预测获取词向量画一个词向量的分布图使用词向量计算相似度参考数据加载、切词 按照链接https://blog.csdn.net/m0_60688978/article/details/137538274操作后,可以获得…...
C语言:约瑟夫环问题详解
前言 哈喽,宝子们!本期为大家带来一道C语言循环链表的经典算法题(约瑟夫环)。 目录 1.什么是约瑟夫环2.解决方案思路3.创建链表头结点4.创建循环链表5.删除链表6.完整代码实现 1.什么是约瑟夫环 据说著名历史学家Josephus有过以下…...
【刷题篇】回溯算法(二)
文章目录 1、求根节点到叶节点数字之和2、二叉树剪枝3、验证二叉搜索树4、二叉搜索树中第K小的元素5、二叉树的所有路径 1、求根节点到叶节点数字之和 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表…...
Windows系统本地部署Jupyter Notebook并实现公网访问编辑笔记
文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中,使用最多的无疑就是各种函数、图表、…...
自动化运维(二十七)Ansible 实战Shell 插件和模块工具
Ansible 支持多种类型的插件,这些插件可以帮助你扩展和定制 Ansible 的功能。每种插件类型都有其特定的用途和应用场景。今天我们一起学习Shell 插件和模块工具。 一、 Shell 插件 Ansible shell 插件决定了 Ansible 如何在远程系统上执行命令。这些插件非常关键&a…...
Jenkins使用-绑定域控与用户授权
一、Jenkins安装完成后,企业中使用,首先需要绑定域控以方便管理。 操作方法: 1、备份配置文件,防止域控绑定错误或授权策略选择不对,造成没办法登录,或登录后没有权限操作。 [roottest jenkins]# mkdir ba…...
【前端】es-drager 图片同比缩放 缩放比 只修改宽 只修改高
【前端】es-drager 图片同比缩放 缩放比 ES Drager 拖拽组件 (vangleer.github.io) 核心代码 //初始宽 let width ref(108)//初始高 let height ref(72)//以下两个变量 用来区分是单独的修改宽 还是高 或者是同比 //缩放开始时的宽 let oldWidth 0 //缩放开始时的高 let o…...
蓝桥杯第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组题解
1.幸运数 题目链接:0幸运数 - 蓝桥云课 (lanqiao.cn) #include<bits/stdc.h> using namespace std; bool deng(string& num){int n num.size();int qian 0,hou 0;for(int i0;i<n/2;i) qian (num[i]-0);for(int in/2;i<n;i) hou (num[i]-0);r…...
eclipse .project
.project <?xml version"1.0" encoding"UTF-8"?> <projectDescription> <name>scrm-web</name> <comment></comment> <projects> </projects> <buildSpec> <buil…...
react的闭包陷阱
React 的闭包陷阱是指在使用 React Hooks 时,由于闭包特性导致在某些函数或异步操作中无法正确访问到更新后状态或 prop 的值,而仍旧使用了旧值。下面通过几个代码示例来具体说明闭包陷阱的几种常见情形: 示例 1: useState 闭包陷阱 import…...
神经网络解决回归问题(更新ing)
神经网络应用于回归问题 优势是什么???生成数据集:通用神经网络拟合函数调整不同参数对比结果初始代码结果调整神经网络结构调整激活函数调整迭代次数增加早停法变量归一化处理正则化系数调整学习率调整 总结ingfnn.py进行计算&am…...
【小红书校招场景题】12306抢票系统
1 坐过高铁吧,有抢过票吗。你说说抢票系统对于后端开发人员而言会有哪些情况? 对于后端开发人员来说,开发和维护一个高铁抢票系统(如中国的12306)会面临一系列的挑战和情况。这些挑战主要涉及系统的性能、稳定性、数据…...
Spring(三)
1. Spring单例Bean是不是线程安全的? Spring单例Bean默认并不是线程安全的。由于多个线程可能访问同一份Bean实例,当Bean的内部包含了可变状态(mutable state)即有可修改的成员变量时,就可能出现线程安全问题。Spring容器不会自动…...
使用element-plus中的表单验证
标签页代码如下: // 注意:el-form中的数据绑定不可以用v-model,要使用:model <el-form ref"ruleFormRef" :rules"rules" :model"userTemp" label-width"80px"><el-row :gutter"20&qu…...
flinksql
Flink SQL 是 Apache Flink 项目中的一个重要组成部分,它允许开发者使用标准的 SQL 语言来处理流数据和批处理数据。Flink SQL 提供了一种声明式的编程范式,使得用户能够以一种简洁、高效且易于理解的方式来表达复杂的数据处理逻辑。 ### 背景 Flink SQL 的设计初衷是为了简…...
Dockerfile中 CMD和ENTRYPOINT的区别
在 Dockerfile 中,CMD 和 ENTRYPOINT 都用于指定容器启动时要执行的命令。它们之间的主要区别是: - CMD 用于定义容器启动时要执行的命令和参数,它设置的值可以被 Dockerfile 中的后续指令覆盖,包括在运行容器时传递的参数。如果…...
【TC3xx芯片】TC3xx芯片的总线内存保护
前言 广义上的内存保护,包括<<【TC3xx芯片】TC3xx芯片MPU介绍>>一文介绍的MPU(常规狭义上的内存保护),<<【TC3xx芯片】TC3xx芯片的Endinit功能详解>>一文中介绍的寄存器的EndInit保护,<<【TC3xx芯片】TC3xx芯片ACCEN寄存器保护详解>>一…...
【c++面向对象编程】第3篇:类与对象(二):构造函数与析构函数
目录 一、一个让人头疼的问题 二、构造函数:对象出生时的“第一声啼哭” 1. 最基本的构造函数 2. 带参数的构造函数(重载) 3. 初始化列表:更高效的初始化方式 三、默认构造函数:那个“看不见”的函数 四、析构函…...
芯片验证覆盖率:从度量陷阱到有效策略的实战解析
1. 从一篇旧文谈起:当“覆盖率”成为数字游戏最近在整理资料时,翻到一篇2013年EE Times上的老文章,作者Brian Bailey对当时(甚至现在依然盛行)的验证方法提出了尖锐的批评。文章的核心矛头直指“基于激励的覆盖率”&am…...
EDA平台化架构:电子系统设计的未来趋势
1. 电子系统设计演进:从工具链到平台化架构在电子设计自动化(EDA)领域,过去三十年最显著的变化莫过于设计工具架构的演进。早期工程师使用独立的原理图工具、PCB布局工具和仿真工具,通过文件导入导出的方式串联起整个设…...
Void Memory:为AI智能体构建持久记忆的轻量级解决方案
1. 项目概述:为AI智能体构建持久记忆的“记忆锚”如果你和我一样,长期与Claude Code、Cursor这类AI编程助手并肩作战,一定对那个令人沮丧的瞬间不陌生:你花了半小时向它详细解释了一个复杂项目的架构、你的编码偏好、刚刚踩过的坑…...
如何用AI技术5分钟搞定视频硬字幕提取?这个开源工具让你轻松生成SRT字幕文件
如何用AI技术5分钟搞定视频硬字幕提取?这个开源工具让你轻松生成SRT字幕文件 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含…...
SQL与数据库开发(四):CASE WHEN 与“行转列/列转行”花式玩法
在企业级应用的开发中,后端程序员和报表工程师往往面临着一种天然的矛盾:“数据库的存储格式”与“前端的展示格式”是完全不匹配的。 关系型数据库最喜欢“瘦长”的表(不断往下插入新行),而业务方和老板最喜欢看的是…...
Windows下CLion配置NDK的CMake项目,为什么你的Android.toolchain.cmake总报错?一篇讲清所有参数
Windows下CLion配置NDK的CMake项目:破解android.toolchain.cmake报错全指南 当你第一次在CLion中尝试配置NDK的CMake项目时,那个看似简单的android.toolchain.cmake文件可能成了噩梦的开始。明明按照教程一步步操作,却在编译时遭遇各种莫名其…...
Xplorer文件属性查看器:全面掌控文件信息的终极指南
Xplorer文件属性查看器:全面掌控文件信息的终极指南 【免费下载链接】xplorer Xplorer, a customizable, modern file manager 项目地址: https://gitcode.com/gh_mirrors/xp/xplorer 在日常文件管理中,你是否经常需要快速查看文件的详细信息&…...
使用 Elasticsearch 与 Kibana 中的 PromQL 调查 Kubernetes 基础设施问题
作者:来自 Elastic Miguel Snchez 本文将逐步介绍如何使用 PromQL 在 Elastic Observability 中对 Kubernetes 集群范围内的 CPU 使用情况进行调查,从集群到命名空间再到出现问题的 Pod。 Elasticsearch 现在已经原生支持 PromQL,并且你可以通…...
从安装到实战:用Python+Neo4j Driver构建你的第一个社交网络图谱(含完整代码)
从零构建社交网络图谱:Python与Neo4j全流程实战指南 社交网络分析正在重塑我们对复杂关系的理解。想象一下,当我们需要分析Twitter上的信息传播路径、LinkedIn的职业关系网或是电商平台的用户推荐系统时,传统的关系型数据库往往显得力不从心。…...
