今天在做新功能時,用到小程式的獲取使用者手機號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
})
}
}
});複製程式碼
後面就是你自己去處理了~
歡迎關注我: