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