掘金日新计划&小程序知识合集三

91 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天

一、 从本地相册选择图片或使用相机拍照

参数类型必填说明
countNumber最多可以选择的图片张数,默认9
sizeTypeStringArray"original"原图,"compressed"压缩图,默认二者都有
sourceTypeStringArray"album"从相册选图,"camera"使用相机,默认二者都由
successFunction成功则返回图片的本地文件路径列表tempFilePaths
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

文件的临时路径,在小程序本次启动期间可以正常使用,如需持久保存,需在主动调用 wx.saveFile,在小程序下次启动时才能访问得到。

wx.chooseImage({
    count1, // 默认9sizeType: ['original''compressed'], 
    // 可以指定是原图还是压缩图,默认二者都有
    sourceType: ['album''camera'], // 可以指定来源是相册还是相机,默认二者都有success: function (res) { 
    // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片var tempFilePaths = res.tempFilePaths
    }
})

二、复制文字

要想实现长按复制功能,需要在text标签中设置user-select属性

调用成功后,会弹出 toast 提示"内容已复制",持续 1.5s参数如果不使用系统的toast弹框,可以调用wx.hiddenloading(),setClipboardData自带的toast弹框就不会再显示

    wx.setClipboardData({
      data: "复制订单号",
      success: function () {
        wx.hideLoading()
        wx.showToast({
          title: '复制成功',
        })
      }
    })

三、 获取手机号

由于微信获取手机号安全模式的升级,直接在在微信小程序里面调用微信后台,是获取不到用户手号,获取用户手机号需要后台服务器和微后台交互才能获得。

第一步:

因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。另外,新版本接口不再需要提前调用wx.login进行登录。

第二步:

把需要和微信后台 进行交互的自己服务器的域名配置到微信后台

第三步:

获取手机号。js中封装一个事件,判断用户是否授权,未授权需要给提示授权,要获取用户的手机号,微信官方有提供 APIgetPhoneNumber

//获取手机号
  getPhone(e){
    如果用户点击了拒绝授权,我们就,结束给了提示
    if(e.detail.errMsg== "getPhoneNumber:fail user deny"){
      wx.showToast({
        title: '你没有给相关授权',
        icon:'none'
      })
    }

已经授权的话进行加密和传参获取真正的数据。获取到的信息是加密的需要使用  encryptedData 解密后为以下 json 结构:

{
 "phoneNumber": "18778545120", 
 "purePhoneNumber": "18778545120", 
 "countryCode": "86",
 "watermark":
 {
 "appid":"APPID",
 "timestamp":TIMESTAMP
 }
}
参数类型说明
phoneNumberString用户绑定的手机号(国外手机号会有区号)
purePhoneNumberString没有区号的手机号
countryCodeString区号

注意: 出现无法获取,显示当前手机号未绑定的问题

 一、你的手机号 跟你的微信不是一个,未绑定,你要解绑,绑定你现在用的手机号

 二、手机号和微信号是一个,但是你没有绑定

烟火向星辰,所愿皆成真!