点击卡片进入小程序
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.isForceUpdate
uni.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);
// 不更新强制退出app
if (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 = false
uni.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 = false
that.$u.toast(err.errMsg)
console.log(err)
},
complete: com => {
console.log(com)
}
});
// 下载进度
downloadTask.onProgressUpdate(res => {
// that.$u.toast(res.progress)
that.downloadNum = res.progress
console.log('下载进度' + that.downloadNum);
// console.log('已经下载的数据长度' + res.totalBytesWritten);
// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
// 满足测试条件,取消下载任务。
// if (res.progress > 50) {
// downloadTask.abort();
// }
});
},
拼多多官方优惠:
文章评论