Mnsin博客
立即登录 马上注册

uniapp常用API---记着下次可能用得着

一、uniapp防抖节流的使用

节流

规定时间内,只触发一次,可以通过设置immediate来决定触发的时机在这个时间的开始,还是结束的时候执行。

1
2
// 此处用法为在js中调用,需要写this.$u.throttle()
this.$u.throttle(this.toNext, 500)

防抖

使用uview 防止触发多次接口建议使用防抖

1
2
// 此处用法为在js中调用,需要写this.$u.debounce()
this.$u.debounce(this.toNext, 500)

用当前点击时间为判断条件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 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、客户端检查手机型号

1
2
3
4
5
6
7
8
9
10
11
12
getUpdate() {
            let that = this;
            uni.getSystemInfo({
                success: res => {
                    console.log(res.platform);
                    //检测当前平台,如果是安卓则启动安卓更新
                    if (res.platform == 'android') {
                        that.AndroidCheckUpdate();
                    }
                }
            });
        },

2、检查版本更新差异

2.1简单版

1
2
3
4
5
6
7
8
9
10
11
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复杂版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 创建下载任务
        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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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();
    // }
  });
},

拼多多官方优惠:
uniapp常用API—记着下次可能用得着
关注公众号了解更多
uniapp常用API—记着下次可能用得着

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:weiyong9898@163.com
赞(1) 打赏

上一篇:

下一篇:

相关推荐

0 条评论关于"uniapp常用API—记着下次可能用得着"

表情

最新评论

    暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏