点击卡片进入小程序
uniapp常用API---记着下次可能用得着
一、uniapp防抖节流的使用
节流
规定时间内,只触发一次,可以通过设置immediate来决定触发的时机在这个时间的开始,还是结束的时候执行。
// 此处用法为在js中调用,需要写this.$u.throttle()this.$u.throttle(this.toNext, 500)
防抖
使用uview 防止触发多次接口建议使用防抖
// 此处用法为在js中调用,需要写this.$u.debounce()this.$u.debounce(this.toNext, 500)
用当前点击时间为判断条件
data() {return {lasttime:""};},methods:{upload(){let d = new Date();let nowtime = d.getTime();//获取点击时间if(nowtime - this.lasttime < 2000){ //如果两次点击事件间隔小于2秒,则不触发后面的接口。return;};this.lasttime = nowtime;}}
二、uniapp获取设备的ip和Mac----仅支持安卓
获取Ip地址
getDeviceIp(){var deviceIp = ‘’if(plus.os.name=="Android"){var Context = plus.android.importClass("android.content.Context");var wifiManager =plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);var wifiInfo = plus.android.invoke(wifiManager, "getConnectionInfo");var ipAddress = plus.android.invoke(wifiInfo, "getIpAddress");deviceIp = '';if (ipAddress != 0) {deviceIp = ((ipAddress & 0xff) + "." + (ipAddress >> 8 & 0xff) + "." + (ipAddress >> 16 & 0xff) + "." + (ipAddress >> 24 & 0xff));}}console.log(deviceIp)return deviceIp;},
获取mac地址
getDeviceMac(){var deviceMac = ‘’var net = plus.android.importClass("java.net.NetworkInterface")var wl0 = net.getByName('wlan0')var macByte = wl0.getHardwareAddress()deviceMac = ''for (var i = 0; i < macByte.length; i++) {var tmp = "";var num = macByte[i];if (num < 0) {tmp = (255 + num + 1).toString(16);} else {tmp = num.toString(16);}if (tmp.length == 1) {tmp = "0" + tmp;}deviceMac += tmp;}console.log(deviceMac)},
三、自动更新(获取版本)
1、客户端检查手机型号
getUpdate() {let that = this;uni.getSystemInfo({success: res => {console.log(res.platform);//检测当前平台,如果是安卓则启动安卓更新if (res.platform == 'android') {that.AndroidCheckUpdate();}}});},
2、检查版本更新差异
2.1简单版
AndroidCheckUpdate: function() {//检查是否更新var that = this;console.log(this.xBanben)var currentVersion = plus.runtime.version; //获取当前app版本号console.log(currentVersion);this.banben = currentVersion;if (currentVersion < this.xBanben) {this.Update = true;}},
2.2复杂版
AndroidCheckUpdate() {let that = this;plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {that.version = wgtinfo.version //客户端版本号console.log('当前app版本信息:' + that.version);})that.getUpdateVersion()},getUpdateVersion() {let that = this;// 获取当前app版本信息that.$req.get("/appUpdate/queryUpdate", {}, {}).then(function (res) {console.log('res.data:' + JSON.stringify(res.data))console.log("现在的版本"+ that.version +"数据库版本"+ res.data.data.version +"进入查找app版本");if(res.data.data.version>that.version){// 这里下载apkurl从/appUpdate/queryUpdate接口请求返回数据中获取that.downloadUrl = BaseUrl + '/' + res.data.data.androidUrl// 是否强制更新(0 否;1 是)that.isForceUpdate = res.data.data.isForceUpdateuni.showModal({// 更新提醒title: '发现新版本,是否更新',content: '此版本号:'+ that.version + '\xa0\xa0\xa0' + '待更新版本号:' + res.data.data.version,success: res => {if (res.confirm) {that.downWgt();//下载文件// that.showdownLine = true;// plus.runtime.openURL(androidUrl)} else if (res.cancel) {console.log('that.isForceUpdate:' + that.isForceUpdate);// 不更新强制退出appif (that.isForceUpdate == 1) {console.log('that.isForceUpdate1:' + that.isForceUpdate);uni.showModal({// 更新提醒title: '发现新版本,是否更新',content: '此版本为强制更新版本如不升级将退出APP',success: res => {if (res.confirm) {console.log('不更新强制退出app');plus.runtime.quit();} else if (res.cancel) {that.AndroidCheckUpdate();}}});}}}});//dtask.start();}}).catch(error => {uni.showToast({title: '调用请求失败',mask: false,duration: 5000,icon:"none"});});complete: () => {}},
3.创建下载
版本1
// 创建下载任务createDownload(url) {var dtask = plus.downloader.createDownload(url, {}, function(d, status) {// 下载完成console.log(status);if (status == 200) {console.log('Download success: ' + d.filename);plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, e => e, function(error) {});//只更新不首次安装// plus.runtime.install(// data.tempFilePath,// {// force: false// },// function() {// plus.runtime.restart();// }// );} else {console.log('Download failed: ' + status);}});dtask.addEventListener('statechanged', task => {if (task.state == 3) {let progress = (dtask.downloadedSize / dtask.totalSize) * 100;this.progress = Math.trunc(progress);// console.log(this.progress)if (progress >= 100) {this.Prompts = false;}}});dtask.start();},
版本2
downWgt() {let that=this;console.log('url:' + that.downloadUrl)uni.showLoading({title: '更新中……'})const downloadTask = uni.downloadFile({//执行下载url: that.downloadUrl, //下载地址timeout: 1000 * 30, //30秒超时时间success: downloadResult => {//下载成功that.showdownLine = falseuni.hideLoading();console.log('downloadResult.statusCode' + downloadResult.statusCode)if (downloadResult.statusCode == 200) {console.log('更新中')uni.showModal({title: '',content: '更新成功,确定现在重启吗?',confirmText: '重启',confirmColor: '#EE8F57',success: function(res) {if (res.confirm == true) {plus.runtime.install(//安装downloadResult.tempFilePath, {force: true},function(res) {utils.showToast('更新成功,重启中');plus.runtime.restart();});}}});}},fail: err => {uni.hideLoading();that.showdownLine = falsethat.$u.toast(err.errMsg)console.log(err)},complete: com => {console.log(com)}});// 下载进度downloadTask.onProgressUpdate(res => {// that.$u.toast(res.progress)that.downloadNum = res.progressconsole.log('下载进度' + that.downloadNum);// console.log('已经下载的数据长度' + res.totalBytesWritten);// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);// 满足测试条件,取消下载任务。// if (res.progress > 50) {// downloadTask.abort();// }});},
拼多多官方优惠:

文章评论