微信小程序wifi获取与连接

一 业务需求

需要判断小程序是否连接指定wifi,如果没有就需要重新拿到并连接,Andirid和ios是有明显差异,根据设备来判断优化基础流程

二文档和技术支持

微信小程序官方文档:WifiInfo | 微信开放文档

基本需要的API是:

wx.startWifi 初始化模块

wx.getConnectedWifi 当前连接的wifi信息

wx.onGetWifiList  获得wifi列表

wx.connectWifi   wifi连接

wx.getWifiList 请求获取wifi列表

一wx.connectWifi 

wifi连接的API的约束比较多,再Andirid10往上会只能再小程序中使用wifi,其他应用无法使用wifi,贴出来一部分,具体还是看官方文档比较好

二wx.getWifiList 请求获取wifi列表

这个API是属于前置条件同意了,onGetWifiList才能拿到wifi列表,这个ios会跳转到设置页面,并且需要用户手动进入【无线局域网】设置页,并扫描,比较繁琐,具体文档wx.getWifiList(Object object) | 微信开放文档

三实现流程

需要判断不同系统,需要不同的提示,并且找到指定WiFi以后自动连接

1Andirid设备可能会在wifi初始化时报错,需要先配置好权限,不然会一直失败

代码模板

  "permission" : {
      "scope.userLocation" : {
           "desc" : "你的位置将用于小程序接口的效果展示"
        }
   }

2判断当前WiFi是否是指定WiFi

初始化wifi模块,获取当前wifi,并通过wifi名称判断是否时指定WiFi,不是就进入获得wifi并连接

ConnectedWifi(){
    let that = this
	wx.startWifi({
		success (res) {
		    wx.getConnectedWifi({
			    partialInfo:true,
				success(res){
					console.log(res);
					if(res.errCode == 0 &&res.wifi.SSID == '指定WiFi名'){
					    wx.showModal({
							title:'提示',
						    content:"您已经成功连接wifi!",
							confirmText:'确定',
							cancelText:"取消"
						})
					   return
					}
				    const systemInfo = wx.getSystemInfoSync()
			    	let contentText='您未连接正确wifi'
					systemInfo.platform == "ios" ? contentText='您未连接正确WIFi,您同意后,会跳转到设置页面,请您去到wifi列表页面' :''
					//未正确连接WiFi名
					wx.showModal({
						title:'提示',
						content:contentText,
						confirmText:"查询WIFI",
						cancelText:'取消',
						success: (res) => {
						    if(res.confirm){
								//拿到WiFi列表
								that.testWifi()
							}else{
									//取消
							}
						}
							  
				})
			},
		fail(err){
			 console.log(err,"----");
			}
		})
	},
    fail(startErr) {
		if(startErr.errCode == 12005){
		    uni.showModal({
			title: '提示',
			content: "请先打开WIFI模块",
			showCancel: true,
			confirmText: "确定",
			cancelText: '取消',
            })
	    }
    }
})

3获取wifil列表

注意!!ios需要再设置里打开WiFi才能获取列表!

testWifi(){
	//重新拿到所有wifi信息
	let _that = this
	uni.showLoading({
		 title: '加载中'
    });
			
	wx.getWifiList({
		success(wifilist){
		    console.log("wifi数据",wifilist);
			//拿到wifi列表
			wx.onGetWifiList((list)=>{
				console.log("wifi列表---------",list);
                //拿到指定WiFi的信息
				let wifi = list.wifiList.find(item => item.SSID == '指定WiFi名称') 
				setTimeout(()=>{
                     //连接WiFi
					_that.chagneWifi(wifi)
					uni.hideLoading()
				},1000)
				})
			},
			fail(listwifi){
				if(listwifi.errCode == 12005){
					uni.showModal({
						title: '提示',
						content: "请先打开WIFI",
						showCancel: true,
						confirmText: "确定",
						cancelText: '取消',
						})
			    }
		    }
	})
		    
},

 4wifi连接

可能会有Andirid只有小程序生效wifi,具体看上面的文档

//WiFi连接
chagneWifi(item){
	console.log(item,"wifi数据");
	wx.connectWifi({
		 SSID:item.SSID,
		 BSSID:item.BSSID,
		 password:'wifi密码',
		 success(res){
		  	console.log(res,"wifi连接成功");
			uni.showModal({
				title:'提示',
				content:'wIFI链接成功',
			})
		  },
		  fail(err){
		  	console.log(err,"wifi链接失败");
			uni.showModal({
				title:'提示',
				content:'wIFI链接失败',
			})
		  }
	})
},

5如有问题感谢指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值