专栏首页微信小程序开发小程序wx.canIUse和wx.getSystemInfo踏的坑

小程序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
      })
    }
  }
});

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

本文分享自微信公众号 - 知晓程序员(bainaweb),作者:连胜

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序开发常见问题(二)

    知晓程序员,专注微信小程序开发的程序员! 今天再给大家分享几个微信小程序开发的常见问题,顺便吐槽一下,武汉的冬天太TM冷了,没有暖气的冬天真的很难过,写文章的心...

    连胜
  • 小程序开发注意点儿,新手入门基础

    1、域名配置,不配置无法访问 小程序开发,要调用API,就必须把域名填写在配置里面,这点儿一定要记住,万一服务端突然上线一次,发现线上服务出问题了,很有可能就...

    连胜
  • 小程序中wx.xx is not a function的报错

    连胜
  • 基于Linux与lpc3250开发板的交叉开发环境搭建

    ###一、Bootloader的安装(在windows下进行) 1、什么是Bootloader: 要想弄明白什么是Bootloader,我们先从PC上的boot...

    用户1214695
  • 速读原著-Android应用开发入门教程(屏幕间的跳转和事件的传递)

    在一般情况下,Android 的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android 使用 Inte...

    cwl_java
  • 速读原著-Android应用开发入门教程(屏幕间的跳转和事件的传递)

    在一般情况下,Android 的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android 使用 Inte...

    cwl_java
  • 幂等性

    不知道幂等性我也就忍了,但总知道防止表单重复提交吧?让我们看一下业务场景,如下图:

    只喝牛奶的杀手
  • restapi(7)- 谈谈函数式编程的思维模式和习惯

    国庆前,参与了一个c# .net 项目,真正重新体验了一把搬砖感觉:在一个多月时间好像不加任何思考,不断敲键盘加代码。我想,这也许是行业内大部分中小型公司程...

    用户1150956
  • oracle 正则表达的使用

    最近遇到有个项目,需要根据文件存储的根目录地址来判断是在云端获取,还是本地获取, 先看下具体有几个不同的根目录:

    用户2434869
  • OMG!这1010本书的书名都是什么鬼?

    作为知识最好的载体,图书总能带给你力量。对于还年轻的小哥哥小姐姐们来说,几本书就能指导过一次充实的、有故事的、童话般的人生。比如说……

    华章科技

扫码关注云+社区

领取腾讯云代金券