uniapp监听网络状态 - 判断是否有网络

更新日期: 2022-10-13阅读: 503标签: uniapp

由于新机首次安装app的时候会出现:请求网络权限“是否允许使用数据”,如果用户很长时间没点击允许,就会出现app内接口请求永远返回失败的情况,需要用户清掉APP重新打开才能正常请求使用。

为解决这类问题,我们就需要监听网络状态,这边文章主要介绍uniapp判断是否有网,监听网络状态的问题,fly63前端网为大家介绍3种实现方案。


方法一:uni.getNetworkType

该方法用于获取网络类型。

uni.getNetworkType({
success: res=> {
if(res.networkType === "none"){//网络类型 wifi、2g、3g、4g、ethernet、unknown、none
console.log("当前无网络"); return;
}
console.log("有网络");
}
});

在实际使用时候,我们就需要用到定时器或者递归的方式来判断是否有网,等有网就进行相应请求操作,比如:

getNetwork(cb,time=300){
uni.getNetworkType({
success: function (res) {
if(res.networkType === "none"){//当前无网络
setTimeout(()=>{
this.getNetwork(cb);
},time);
return;
}
typeof cb=="function" && cb()
}
});
}


方法二:plus.networkinfo

使用html5+的plus下networkinfo模块用于获取网络信息。其中getCurrentType用于获取设备当前连接的网络类型:

getNetworkType() {
let types = {};
types[plus.networkinfo.CONNECTION_UNKNOW] = "Unknown";
types[plus.networkinfo.CONNECTION_NONE] = "None";
types[plus.networkinfo.CONNECTION_ETHERNET] = "Ethernet";
types[plus.networkinfo.CONNECTION_WIFI] = "WiFi";
types[plus.networkinfo.CONNECTION_CELL2G] = "2G";
types[plus.networkinfo.CONNECTION_CELL3G] = "3G";
types[plus.networkinfo.CONNECTION_CELL4G] = "4G";
console.log("Network: " + types[plus.networkinfo.getCurrentType()]);
}


方法三:uni.onNetworkStatusChange

经测试发现:该方法是无法实现监听的,官网所说的监听是指网络变化的时候被调用,实现监听要配合两个api使用:

uni.onNetworkStatusChange(res=>{
if(res.networkType=='none'){//res.networkType网络类型 wifi、2g、3g、4g、ethernet、unknown、none
console.log("当前无网络")
return;
}
console.log("有网络")
});


链接: https://www.fly63.com/article/detial/12198

uni-app 微信小程序授权登录

uni.getUserInfo 接口调用方式起初通过button 来获取用户信息,或者 直接调用 uni.getUserInfo 来获取信息 在当前微信更新接口后,这2个接口将直接返回匿名用户数据,不在弹窗提示

uniapp之this作用域

发现了点击按钮1可以更新title内容,但是点击按钮2却无法更新title内容。这个究竟是为什么呢?在changeTitle2方法的success方法中,该success方法指向闭包,所以this属于闭包

uniapp 页面跳转传值和接收

首先介绍最原始的跳转方法,类似于html中的 a 标签,不过在uniapp中需要将 a 标签换成 <navigator url=跳转的地址>……</navigator>

uniapp开发注意事项

static 目录下的 js 文件不会被编译,如果里面有 es6 的代码,不经过转换直接运行,在手机设备上会报错。css、less/scss 等资源同样不要放在 static 目录下

uniapp验证码倒计时60s的实现

发送验证码时,不能让客户一直发送验证码,所以需要设置一个60s后才能发送一次;具体代码实现:因为app和其他app不太一样,所以需要选择以这样的方式展示是时间,但是js逻辑代码是一样的;

uni-app中使用computed计算属性

computed里面的属性不能在data属性中出现,用来监控computed中自定义的变量 ,computed合适多个变量或对象处理后返回一个结果值,其中一个值发生变化则computed监控的属性值就会发生变化

uni-app开发经验分享: 多页面传值的三种解决方法

开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家:问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新

uni-app开发注意事项

当重复设置某些属性为相同的值时,不会同步到view层。 例如:每次将scroll-view组件的scroll-top属性值设置为0,只有第一次能顺利返回顶部。 这和props的单向数据流特性有关

uniapp页面通信方法总汇

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。

uniapp/小程序实现Url生成二维码图片

基于QR.createQrCodeImg方法生成二维码,在使用uniapp开发的小程序,app应用,某一页面需要将网页Url生成的二维码进行展示,即将Url生成为base64的二维码图片。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!