小程序wx.canIUse和wx.getSystemInfo踏的坑

时间:2022-05-03
本文章向大家介绍小程序wx.canIUse和wx.getSystemInfo踏的坑,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

今天在做新功能时,用到小程序的获取用户手机号API,如下:

getPhoneNumber: function(e) { 
    console.log(e.detail.errMsg) 
    console.log(e.detail.iv) 
    console.log(e.detail.encryptedData) 
}

拿到encryptedData和iv后,就可以在服务端进行解密,解密过程略过~

问题来了,官方给出说明是open-type=getPhoneNumber属性是1.2.0版本开始支持的,所以,1.2.0之前要自己做兼容处理。

然后就用了wx.canIUse进行判断,折腾了一会儿,发现不对,1.5.2基础库上返回也是false,如下:

官方给出说法,建议使用wx.getSystemInfo里面的SDKVersion进行判断。

wx.getSystemInfo的返回值:

 wx.getSystemInfo({
  success: function(res) {
    console.log(res.model)
    console.log(res.pixelRatio)
    console.log(res.windowWidth)
    console.log(res.windowHeight)
    console.log(res.language)
    console.log(res.version)
    console.log(res.platform)
    console.log(res.SDKVersion)
  }
})

SDKVersion中1.1.0中才出现,所以要做个简单处理,把version转成int,然后进行判断:

function getSDKVersion(SDKVersion){
  if (SDKVersion){
    SDKVersion = parseInt(SDKVersion.replace(/./g, ''));
  }
  else SDKVersion = 0;
  return SDKVersion;
}

判断sdk版本:

var self = this;
wx.getSystemInfo({
  success: function(res){
    var SDKVersion = res.SDKVersion;
    SDKVersion = util.getSDKVersion(SDKVersion);
    console.log(res);
    console.log(SDKVersion);
    if(SDKVersion < 120){   // 1.2.0以下版本不支持获取手机号功能
      self.setData({
        noSupportPhone: true
      })
    }
  }
});

后面就是你自己去处理了~