今天在做新功能时,用到小程序的获取用户手机号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
- })
- }
- }
- });复制代码
后面就是你自己去处理了~
欢迎关注我: