功能-手写板
页面布局
|
页面样式
|
逻辑代码
|
后期会将其抽离成组件进行使用,实际效果请参考小程序组件库, Sign in · GitLab
功能-文字复制
剪切板API
wx.setClipboardData(Object object)
设置系统剪贴板的内容
参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
data | string | 是 | 剪贴板的内容 | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例代码
wx.setClipboardData({
data: 'data',
success(res) {
wx.getClipboardData({
success(res) {
console.log(res.data) // data
}
})
}
})
一键复制
|
|
长按复制
在微信小程序内的文字无法长按复制,除了text节点以外。但是要在text标签内加一个“selectable”属性。
<text selectable='true'>< text/>
text
文本。
属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|---|
selectable | boolean | false | 否 | 文本是否可选 | 1.1.0 |
space | string | 否 | 显示连续空格 | 1.4.0 | |
decode | boolean | false | 否 | 是否解码 | 1.4.0 |
|
|
功能-用户授权
本文主要针对需要授权的功能性api,例如:wx.startRecord,wx.saveImageToPhotosAlbum, wx.getLocation
小程序内如果要调用部分接口需要用户进行授权,例如获取地理位置信息,收获地址,录音等等,但是小程序对于这些需要授权的接口并不是特别友好,最明显的有两点:
- 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调
- 没有统一的错误信息提示,例如错误码
一般情况下每次授权时都应该激活弹窗进行提示,是否进行授权
而小程序内只有第一次进行授权时才会主动激活弹窗(微信提供的),其他情况下都会直接走fail回调,微信文档也在句末添加了一句请开发者兼容用户拒绝授权的场景
这种未做兼容的情况下如果用户想要使用录音功能,第一次点击拒绝授权,那么之后无论如何也无法再次开启录音权限
针对二次授权的解决方案
常见处理方法
先看一下官方的demo
下面这段代码是微信官方提供的授权代码, 可以看到也并没有兼容拒绝过授权的场景查询是否授权(即无法再次调起授权)
|
一般处理方法
以地理位置信息授权为例:
|
上面代码,可能会对在fail回调里直接使用wx.getSetting有些疑问,这里主要是因为
- 微信返回的错误信息没有一个统一code
- errMsg又在不同平台有不同的表现
- 从埋点数据得出结论,调用这些api接口出错率基本集中在未授权的状态下
这里为了方便就直接调用权限检查了 ,也可以稍微封装一下,方便扩展和复用,变成:
|
这里如果只针对较少页面的话已经够用了,不适用调用场景偏多的情况
扩展wx[function]方法
为了节省认知成本和减少出错概率,我希望他是这个api默认携带的功能,也就是说因未授权出现错误时自动调起是否开启授权的弹窗
需要对wx的原生API进行一层封装
为wx.getLocation添加自己的方法
注:直接使用常见的装饰模式是会出现报错,因为wx这个对象在设置属性时没有设置set方法,这里需要单独处理
|
劫持fail方法
第一步我们已经控制了wx.getLocation这个api,接下来就是对于fail方法的劫持,因为我们需要在fail里加入我们自己的授权逻辑
|
可以看到现在已实现的功能已经达到了我们最开始的预期,即因授权报错作为了wx.getLocation默认携带的功能,我们在业务代码里再也不需要处理任何再次授权的逻辑
也意味着wx.getLocation这个api不论在任何页面,组件,出现频次如何,我们都不需要关心它的授权逻辑
微信小程序-获取手机号code-代码示例
小程序更新后不需要sessionKey、openId、iv和encryptedData传给后端解密
|
通过按钮触发,获取code,后端根据code可拿到手机号
组件使用vant:Vant Weapp - 轻量、可靠的小程序 UI 组件库
wxml内容
wxml
|
js内容
js
|
微信小程序中生成二维码工具weapp.qrcode.js
一、使用
创建canvas标签
先在 wxml 文件中,创建绘制的 canvas
,并定义好 width
, height
, canvasId
。由于小程序没有动态创建标签的api,所以这一步不能省略。
<canvas style="width: 200px; height: 200px;" canvas-id="myQrcode"></canvas>
调用绘制方法
由于微信小程序不支持引入NPM包,可以将dist目录下,weapp.qrcode.min.js 拷贝至项目中。
如果你的小程序使用了支持引入NPM包的框架,如 wepy , 也可以直接安装 weapp-qrcode NPM包。
npm install weapp-qrcode --save
引入 js 文件后,调用 drawQrcode()
绘制二维码。
import drawQrcode from 'weapp-qrcode'
// 或者,将 dist 目录下,weapp.qrcode.min.js
// import drawQrcode from '../../utils/weapp.qrcode.min.js'
drawQrcode({
width: 200,
height: 200,
canvasId: 'myQrcode',
text: 'https://github.com/yingye'
}
API说明
参数 | 说明 | 示例 |
---|---|---|
参数 | 说明 | 示例 |
width | 必须,二维码宽度,与canvas 的width 保持一致 | 200 |
height | 必须,二维码高度,与canvas 的height 保持一致 | 200 |
canvasId | 必须,绘制的canvasId | 'myQrcode' |
text | 必须,二维码内容 | 'yingye (yingye) · GitHub' |
typeNumber | 非必须,二维码的计算模式,默认值-1 | 8 |
correctLevel | 非必须,二维码纠错级别,默认值为高级,取值:{ L: 1, M: 0, Q: 3, H: 2 } | 1 |
background | 非必须,二维码背景颜色,默认值白色 | '#ffffff' |
foreground | 非必须,二维码前景色,默认值黑色 | '#000000' |
如果想更深入的了解二维码的原理,推荐大家阅读 二维码的生成细节和原理 。
原始文档
GitHub - yingye/weapp-qrcode: weapp.qrcode.js 在 微信小程序 中,快速生成二维码
微信小程序开发常用事例
一、设置Button透明无边框
|
二、设置CheckBox样式为圆形
|
三、Text文本内显示空格
先看下效果
使用全角空格即可,Mac 上使用方式如下:
Shift + option + B: 选择全角空格即可
|
四、点击左上角返回直接返回首页
|
|
附上一张未兼容和已兼容的效果图:
适配步骤:
Step 1: App.js 中检测当前设备是否为 iPhone X
|
Step 2: 设置兼容以及普通机型下的样式
|
Step 3: 具体的 Page.js 中匹配
|
Step 4: 未指定的控件设置对应的样式兼容
|
功能-微信小程序跳转小程序
一、使用限制
1.需要用户触发跳转
从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序。
2.需要用户确认跳转
从 2.3.0 版本开始,在跳转至其他小程序前,将统一增加弹窗,询问是否跳转,用户确认后才可以跳转其他小程序。如果用户点击取消,则回调 fail cancel。
3.每个小程序可跳转的其他小程序数量限制为不超过 10 个
从 2.4.0 版本以及指定日期(具体待定)开始,开发者提交新版小程序代码时,如使用了跳转其他小程序功能,则需要在代码配置中声明将要跳转的小程序名单,限定不超过 10 个,否则将无法通过审核。该名单可在发布新版时更新,不支持动态修改。配置方法详见 如下代码。调用此接口时,所跳转的 appId 必须在配置列表中,否则回调 fail appId "${appId}" is not in navigateToMiniProgramAppIdList。
4.关于调试
在开发者工具上调用此 API 并不会真实的跳转到另外的小程序,但是开发者工具会校验本次调用跳转是否成功。详情
开发者工具上支持被跳转的小程序处理接收参数的调试。详情
二、配置详情
app.json文件中 最后一行 是你配置要跳转到的小程序 appid ,最多能配置10个
1 |
|
app.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
三、使用方法
1. 使用wx.navigateToMiniProgram 打开 。wx.navigateToMiniProgram 官方api
如果你打开之后想返回之前的小程序 使用 wx.navigateBackMiniProgram 返回之前小程序api
注意:返回到上一个小程序。只有在当前小程序是被其他小程序打开时可以调用成功 。
1 2 3 4 5 6 7 8 9 10 11 |
|
2. 使用 navigator 组件
1 |
|
功能-小程序间跳转
打开另一个小程序
示例代码
|
参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
appId | string | 是 | 要打开的小程序 appId | |
path | string | 否 | 打开的页面路径,如果为空则打开首页。path 中 ? 后面的部分会成为 query,在小程序的 App.onLaunch 、App.onShow 和 Page.onLoad 的回调函数或小游戏的 wx.onShow 回调函数、wx.getLaunchOptionsSync 中可以获取到 query 数据。对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 | |
extraData | object | 否 | 需要传递给目标小程序的数据,目标小程序可在 App.onLaunch ,App.onShow 中获取到这份数据。如果跳转的是小游戏,可以在 wx.onShow、wx.getLaunchOptionsSync 中可以获取到这份数据数据。 | |
envVersion | string | release | 否 | 要打开的小程序版本。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。 |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.envVersion 的合法值
值 | 说明 | 最低版本 |
---|---|---|
develop | 开发版 | |
trial | 体验版 | |
release | 正式版 |
还需要在本小程序app.json里声明要跳转到的小程序的appid
使用限制
需要用户触发跳转
从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序。
需要用户确认跳转从 2.3.0 版本开始,在跳转至其他小程序前,将统一增加弹窗,询问是否跳转,用户确认后才可以跳转其他小程序。如果用户点击取消,则回调 fail cancel。
每个小程序可跳转的其他小程序数量限制为不超过 10 个
从 2.4.0 版本以及指定日期(具体待定)开始,开发者提交新版小程序代码时,如使用了跳转其他小程序功能,则需要在代码配置中声明将要跳转的小程序名单,限定不超过 10 个,否则将无法通过审核。该名单可在发布新版时更新,不支持动态修改。配置方法详见 配置。调用此接口时,所跳转的 appId 必须在配置列表中,否则回调 fail appId "${appId}" is not in navigateToMiniProgramAppIdList。
功能-小程序swiper组件实现间距轮播
先看三种效果图(效果图是copy网上资源,代码亲测有效)
效果一
效果二
效果三
小程序swiper 滑动的时候,滑来滑去会卡在中间,跳转到其他页面返回还是会卡在这里,猜测是轮播瞎标的问题,解决办法,在onshow中初始化下标
|
前两种都是通过css实现的
第一种 普通间隔轮播
wxml
|
wxss
|
swiper利用display-multiple-items='1’属性 一次展示一张
swiper-item添加内容居中
内容设置宽高
最后就可以得到一次一张且有间距的轮播图
第二种 带边界的间隔轮播
依旧照着上面的css,改一下box的宽度即可,按照效果图进行更改
|
然后在swiper组件上加两个属性,来达到预留空间给里面的box。再加上circular属性衔接滑动。
第三种效果 两边小,中间大动画轮播
wxml
|
wxss
|
js利用animate来过渡动画,当下标相同时执行放大动画
|
功能-腾讯云慧眼人脸核果
一、进行腾讯云慧眼人脸核身试用申请
原文链接 登录 - 腾讯云
二、嵌入式的SDK开发
创建申请对应的小程序业务流程,下载对应业务流程的SDK文件到小程序开发目录下,引入实名方法
三、腾讯云慧眼控制台创建业务流程
进行小程序的相关信息填写
接入流程的配置
选择对比源
选择身份证信息获取方式
活体检测方式
结果页面配置
选择完成,点击下一步即可完成配置
配置完成就可以在我们的业务服务列表中,看到我们的待审核业务流程
至此我们的业务流程已配置完成
四、整体接入流程及原理
1、业务后端调用 DetectAuth 进行核身前鉴权,获取业务流水号(BizToken)
2、根据业务逻辑需求,在需要实名的入口进入实名核身流程。前台获取后端返回的BizToken 按照小程序SDK进行接入
3、人脸核身完成后,流程会回调到客户前端,SDK是以回调函数形式返回,成功的回调中会再次返回BizToken,后端通过BizToken调用 GetDetectInfo 接口获取本次核身的详细信息
五、SDK接入使用
1、首先下载流程的sdk文件到开发目录中,利用require引入文件
2、初始化慧眼实名核身SDK
在 app.js 的 onLaunch() 中加入相应代码,在 app.json 文件里添加活体验证页面verify_mpsdk/index/index
。
|
3、调用 SDK 功能函数 wx.startVerify()
在需要实名认证的地方调用 wx.startVerify() 进入实名认证页面,认证完成会触发对应的回调函数。
|
4、添加域名服务器白名单。
将这两个域名加入小程序的与域名白名单中
faceid.qq.com、btrace.qq.com
六、基本API描述
Verify.init(options)
:初始化插件。options
:Obejct required 初始化的参数。options.env
:String required 接口环境。正式环境为 release,开发环境为 dev。
wx.startVerify(options)
:进入实名认证页面。options
:Object required 初始化的参数。options.data.token
:String required 客户后端调用 DetectAuth 接口获取的 BizToken。options.success
:Function(res) required 验证成功的回调。res 包含验证成功的 token。options.fail
:Function(err) required 验证失败的回调。err 包含错误码、错误信息。