uniapp一键连接wifi, 微信小程序一键连接wifi, uniapp连接wifi, 微信小程序连接wifi

最近需要做wifi连接,一百度全都是vip文章,所以本人把自己的经验分享给大家一起进步

1、 Android 调用前需要 用户授权 scope.userLocation ,也就是获取位置授权。

2、iOS 上将跳转到系统设置中的微信设置页,需要用户手动进入「无线局域网」查看wifi列表 ,并在系统扫描到wifi列表后,小程序才能收到 onGetWifiList 回调。Android 不会跳转

微信官方文档有说明wifi接口调用限制

场景一:知道wifi账号和密码,直接连接就可以了

<view class="confrim" @click="onAutolink">一键连接</view>
//由于我自己的项目在首页的时候获取了定位,所以这里就不需要打开位置授权了
onAutolink(){
    let wifiName = "后台获取的wifi账号"
    let wifiPassword = "后台获取的wifi密码"
	uni.startWifi({
		success:e=>{
			uni.connectWifi({
				SSID:wifiName,  // SSID就是账号
				password:wifiPassword, // 密码
				complete:complete=>{
					console.log("complete",complete)
				}
			})
	    },
	})
}

 场景二:不知道wifi账号,只知道密码

		<view class="" v-for="item in wifiList " :key="item.SSID">
			<view class="name">{{item.SSID}}</view>
			<view class="btn" @click="onLink(item)">连接</view>
		</view>
			// 在 onLoad 里面调用 或者点击页面某个按钮调用
            onFiwi(){
				let sys = uni.getSystemInfoSync()
				if(sys.osName === "ios" || sys.platform === "ios" ){
					this.initWifi()

				}else{
                    // 获取位置也就是相当于获取位置授权了
					uni.getLocation({
						success:()=>{
							this.initWifi()
						}
					})
					
				}
			},
			initWifi(){
				uni.startWifi({
					success:e=>{
                        // 获取wifi列表
						uni.getWifiList()

                        // 监听获取到的wifi列表
						uni.onGetWifiList(res=>{
                            // 这里可以获取到wifi列表
                            // ios需要手动打开系统的wifi,系统搜索到wifi后然后返回小程序才会有数据
							console.log("wifiList",res.wifiList)
						    this.wifiList = res.wifiList
						})
					},
					fail:fail=>{
						console.log("wififail",fail)
					}
				})
			},
            // 如果事先不知道密码,可以在这里搞个弹窗让用户先输入密码再调用这个方法
            onLink(item){   
                if(!this.password){
                    uni.showToast(icon:"none",title:"密码不能为空")
                    return
                }
			    uni.connectWifi({
				    SSID:item.SSID,  //账号
				    password: this.password, // 密码
				    complete:complete=>{
					    console.log("complete",complete)
				    }
			    })
            }

### UniApp 中实现设备配网 在 UniApp 开发环境下,设备配网通常涉及到通过 Wi-Fi 或蓝牙等方式连接外部硬件设备。为了实现这一功能,开发者可以利用 `uni.request` 和 `plus.wifi` API 来完成网络配置操作。 #### 使用 plus.wifi 进行Wi-Fi 配置 对于基于 Android 平台的应用程序来说,可以通过调用 `plus.wifi.connect` 方法来尝试连接指定 SSID 的无线网络: ```javascript if (plus.os.name === 'Android') { let wifi = plus.android.importClass('android.net.wifi.WifiManager'); let mainWifi = plus.android.runtimeMainActivity().getSystemService(wifi.WIFI_SERVICE); function connectToWiFi(ssid, password) { const config = new wifi.WifiConfiguration(); config.SSID = `"${ssid}"`; config.preSharedKey = `"${password}"`; mainWifi.addNetwork(config, function(result){ console.log(`Add network result: ${result}`); // Enable the added network configuration and disable others. mainWifi.enableNetwork(result.networkId, true); // Save changes to WiFi settings. mainWifi.saveConfiguration(); console.log('Attempting connection...'); },function(error){ console.error('Failed to add network.'); }); } } ``` 需要注意的是上述代码仅适用于安卓平台,在 iOS 上则需借助其他方式如 HomeKit SDK 完成相似的任务[^1]。 #### 利用 uni.request 发送 HTTP 请求 当需要向服务器发送请求以获取进一步指导时(例如获取特定型号路由器的设置参数),可采用如下形式封装一个通用函数用于发起 GET/POST 请求: ```javascript export default class HttpRequest { static async get(url,params={}){ try{ const res=await uni.request({ url, method:'GET', data:params }) return Promise.resolve(res.data) }catch(e){ throw e; } } static async post(url,body={},headers={}){ try{ const res=await uni.request({ url, method:"POST", header:{ ...headers, "content-type":"application/json" }, data:body }) return Promise.resolve(res.data); } catch(e){throw e;} } } ``` 此部分逻辑可用于处理与云端服务之间的通信需求,比如验证用户输入的信息是否正确无误等场景下非常有用[^2]。 #### 结合实际案例分析 假设现在有一个智能家居产品线下的 App 正准备上线新特性——允许用户快速为其家里的智能插座分配互联网接入权限。此时就可以综合运用以上提到的技术手段构建完整的解决方案框架;先让用户扫描二维码读取待关联设备信息,再引导其按照提示步骤完成整个过程直至成功联网为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值