快速知悉
- wx.getFuzzyLocation 接口 详情
- wx.sendSms 接口 详情
- 批量获取/设置 storage 缓存的接口 详情
- live-pusher 支持小窗推流 详情
- live-player 和 live-pusher 截图功能支持截取渲染画面 LivePlayerContext.snapshot / LivePusherContext.snapshot
- 支持iOS小程序在 ExperimentalWorke r内获取摄像头帧数据 详情
1.获取当前的模糊地理位置 wx.getFuzzyLocation
自 2022 年 7 月 14 日后发布的小程序,若使用该接口,需要在 app.json 中进行声明,否则将无法正常使用该接口,2022年7月14日前发布的小程序不受影响。具体规则见公告
暂只针对具备与地理位置强相关的使用场景的小程序开放,在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。 从2022年7月14日开始在代码审核环节将检测该接口是否已完成开通,如未开通,将在代码提审环节进行拦截。
示例:
wx.getFuzzyLocation({
type: 'wgs84',//wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
success (res) {
const latitude = res.latitude//纬度,范围为 -90~90,负数表示南纬
const longitude = res.longitude//经度,范围为 -180~180,负数表示西经
}
})
2.拉起手机发送短信界面 wx.sendSms
使用介绍:
拉起手机发送短信界面
示例:
wx.sendSms({
phoneNumber: "186xxxx6666",//string,预填到发送短信面板的手机号
content: "你好",//string,预填到发送短信面板的内容
success (res) {
console.log(res)
}
})
3.批量获取/设置 storage 缓存 wx.batchSetStorage
将数据批量存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB
示例:
wx.setStorage({
key:"key",
data:"value"
})
// 开启加密存储
wx.batchSetStorage({
kvList: {
key: 'key',
value: 'value',
}
})
4.live-pusher 支持小窗推流
使用介绍:
示例:
5.live-player 和 live-pusher 截图功能支持截取渲染画面
具体接口文档:
示例:
onReady(res) {
this.ctx = wx.createLivePusherContext('pusher')
},
bindSnapshot() {
this.ctx.snapshot({
quality: "raw",//图片的质量,默认原图。有效值为 raw、compressed
sourceType: "view",//截取的源类型,有效值为 stream(截取视频源)、view(截取渲染后的画面)
success: res =>{
console.log("snapshot success")
},
fail: res => {
console.log('snapshot fail')
}
})
},
6.支持iOS小程序在 ExperimentalWorker 内获取摄像头帧数据
获取摄像头当前帧图像,返回 ArrayBuffer 数据。仅限在 worker 线程中使用。
注意事项:
- 接口仅在 iOS 上可用
- 接口仅在 worker 线程中可用
- 接口仅在 useExperimentalWorker 为 true 时可用
- 使用前需要先在主线程调用 Camera.listenFrameChange(worker)
- 该接口的目的是借助 iOS ExperimentalWorker 的 JS 高运行性能,配合摄像头帧数据实现 AR 等游戏场景
- 由于安卓主线程本身已经支持JIT,因此安卓上可以直接在主线程使用 Camera.onCameraFrame 接口实现 AR 等场景
示例代码:
// game.js
const worker = wx.createWorker('workers/index.js', {
useExperimentalWorker: true
})
const camera = wx.createCamera({
success() {
camera.listenFrameChange(worker)
}
})
// workers/index.js
const data = worker.getCameraFrameData()
console.log(data)