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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏你不就像风一样

网络爬虫之Url含有中文如何转码

882
来自专栏王亚昌的专栏

【Boost】Interprocess - 共享内存、文件映射介绍

      通过Interprocess,可以实现在共享内存、文件映射中保存vector、map等STL对象,并且可以使用自定义的类,官方文档介绍的也很详细...

1541
来自专栏牛肉圆粉不加葱

[Spark源码剖析]Spark 延迟调度策略

在 Spark 中,若 task 与其输入数据在同一个 jvm 中,我们称 task 的本地性为 PROCESS_LOCAL,这种本地性(locality le...

823
来自专栏智能大石头

线程池ThreadPool及Task调度机制分析

近1年,偶尔发生应用系统启动时某些操作超时的问题,特别在使用4核心Surface以后。笔记本和台式机比较少遇到,服务器则基本上没有遇到过。

740
来自专栏向治洪

Android四大组件之Service

Android四大组件之Service 服务的两种开启方式: startService();开启服务. 开启服务后 服务就会长期的后台运行,即使调用者退出了....

1906
来自专栏葡萄城控件技术团队

绝对干货:自定义msi安装包的执行过程

有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程。 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品。当用户...

2479
来自专栏Java3y

移动商城第六篇【单品查询、静态化页面】

单品页查询 当点击某个商品的时候,查看该商品的详细信息: ? 修改每个商品的超链接: <a href="${path}/ite...

3837
来自专栏马洪彪

Java生成条码二维码

一、概述 可用barcode4j或zxing等第三方库,推荐zxing。 barcode4j资料链接:http://barcode4j.sourceforge....

4388
来自专栏Python学习心得

​Python爬虫 --- 2.3 Scrapy 框架的简单使用

原文链接:https://www.fkomm.cn/article/2018/8/3/28.html

580
来自专栏ytkah

laravel用crud之index列出产品items

  前面我们说了laravel用crud修改产品items-新建resource controller和routing,现在我们要把产品items罗列出来,需要...

1153

扫码关注云+社区