vue 公众号H5 使用微信JSAPI 录音 完整齐全
官方文档必须首当其冲
首先H5录音功能的话 对于普通H5网上是有很多的方法 插件 但是兼容性很差 特别是对于ios 一开始想的是用H5 做个通用的 但是一圈下来 发现兼容性就很难受
好在项目是基于微信公众号 放弃使用普通H5的想法 转战使用微信提供的 JSAPI 录音功能 一下子解决了兼容的问题 微信已经帮忙处理完毕
接下来说一下 注意事项
在使用微信提供的录音功能前
1.首先的是进入微信公众号后台 公众号设置的功能设置 里填写“JS接口安全域名” 一定要记得
2.先引入微信JS 简单的
- <script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> //(https://res.wx.qq.com/open/js/jweixin-1.6.0.js)
3.注册微信配置 使用wx.config() 将要使用的api 填写到jsApiList里面 要记得
注意:签名问题 一是服务端算法问题 二是前端当前地址和请求的地址不同 也会出现签名错误 关于签名问题 其他文章也有说明产生的原因
录音功能 不是立即使用 所以 只需检测是否配置环境成功即可 wx.ready()..等回调方法
.js 配置注册微信环境代码示例
- export async function wechatSharefund (columnInfo) {
- const data = await wechatConfig(location.href.split('#')[0]) // 返回的微信信息
- console.log(data)
- if (data.code === 0) {
- // 注册
- wx.config({
- debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
- appId: data.data.appId, // 必填,公众号的唯一标识
- timestamp: data.data.timestamp, // 必填,生成签名的时间戳
- nonceStr: data.data.nonceStr, // 必填,生成签名的随机串
- signature: data.data.signature, // 必填,签名
- jsApiList: [
- 'updateAppMessageShareData',
- 'updateTimelineShareData',
- 'startRecord',
- 'stopRecord',
- 'playVoice',
- 'onVoiceRecordEnd',
- 'uploadVoice',
- 'onVoicePlayEnd',
- 'downloadVoice'
- ] // 必填,需要使用的JS接口列表
- })
- // 是否成功
- wx.ready(function(res) {
- console.log([res, 90])
- wx.updateAppMessageShareData({
- title: '我是自定义首页!!!!!好友' + store.getters.doctorId,
- desc: '自定义描述', // 分享描述
- link: 'https://doctor.taiori.com/doctor/hospitalIndex?userParam=' + store.getters.doctorId,
- imgUrl: '', // 分享图标
- success: function () {
- // 设置成功
- }
- })
- wx.updateTimelineShareData({
- title: "我是自定义首页!!圈" + store.getters.doctorId,
- link: 'https://doctor.taiori.com/doctor/hospitalIndex?userParam=' + store.getters.doctorId,
- imgUrl: '',
- success: function() {
- }
- });
- });
- // 是否支持指定JS接口
- wx.checkJsApi({
- jsApiList: ['startRecord'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
- success: function (res) {
- console.log([res, '114'])
- store.commit('jsApiList', res)
- // 以键值对的形式返回,可用的api值true,不可用为false
- // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
- }
- })
- wx.error(function(res){
- console.log(res)
- })
- }
在使用的地方 引入.j文件
- import { wechatSharefund } from '.js'
- mounted () {
- wechatSharefund()
- }
使用简单的
- touchstart () {
- console.log('开始录音')
- if (this.localId) {
- return
- }
- let that = this
- wx.startRecord({
- success: function(e){
- // 开始录音的代码处理
- },
- cancel: function (e) {
- console.log(e)
- }
- })
- },
- touchend () {
- console.log('结束录音')
- if (this.localId) {
- return
- }
- let that = this
- clearInterval(this.timer)
- wx.stopRecord({
- success: function (res) {
- // 结束后的代码处理
- }
- })
- }
最后 会涉及到 保存录音 及 上传到自己服务器动作 简单的 使用相对于的API
微信临时素材返回的是speex文件 需要解码成想要的播放MAP3或者wav 前端可直接播放的链接 解码微信有提供方法
- uploadVoice() {
- let that = this
- // 上传到微信为临时素材
- wx.uploadVoice({
- localId: this.localId, // 需要上传的音频的本地ID,由stopRecord接口获得
- isShowProgressTips: 1, // 默认为1,显示进度提示
- success: function (res) {
- // 获得微信服务端音频ID
- var serverId = res.serverId; // 返回音频的服务器端ID
- console.log(res)
- // 服务端提供接口 传递 音频ID 由服务端处理从微信服务端下载临时素材 存为自己的服务器链接
- // http请求方式: GET,https调用 https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID 请求示例(示例为通过curl命令获取多媒体文件)
- // curl -I -G "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"
- // $.ajax({
- // url: 'https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID', // 服务端提供的接口链接
- // type: 'GET',
- // dataType: "json",
- // success: function (data) {
- // alert('文件已经保存到自己的服务器');
- // },
- // error: function (xhr, errorType, error) {
- // console.log(error);
- // }
- // });
- }
- });
- }
vue 公众号H5 使用微信JSAPI 录音 完整齐全的更多相关文章
- 微信公众号配置及微信jsAPI支付
公众号配置 一.基本配置 首先登陆微信公众平台,在开发--->配置--->公众号开发信息,获取到AppId,开发者秘钥是后台需要的,给到后台,IP白名单配置就是你服务器的IP地址写到里面就 ...
- 微信公众号H5支付遇到的那些坑
简史 官方文档说的很清楚,商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 当然,最近微信支付平台也加入了纯H5支付,也就是说用户可以在微信以外的 ...
- 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
在支付前,如果使用第三方MVC框架,则使用重写模式,服务器也需要配置该项 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$ last; ...
- 在微信框架模块中,基于Vue&Element前端的微信公众号和企业微信的用户绑定
在一个和微信相关的业务管理系统,我们有时候需要和用户的微信账号信息进行绑定,如对公众号.企业微信等账号绑定特定的系统用户,可以进行扫码登录.微信信息发送等操作,用户的绑定主要就是记录公众号用户的ope ...
- 公众号H5页面接入微信登录流程
公众号H5页面接入微信登录流程 源码地址 https://gitee.com/szxio/h5_weixin 起步 首先创建一个项目,我们采用uni-app来作为我们的前端框架 环境安装 全局安装vu ...
- 微信小程序及公众号H5自动化测试攻略
目前市面上,被大家用来做移动端App UI自动化测试工具最为常见的当属: Appium Airtest 很多小伙伴在刚接触这两款工具做App UI自动化测试时,难免会问到,他们能支持微信小程序或者微信 ...
- FAutoTest-微信小程序 / 公众号H5 自动化利器
X5内核H5自动化背景 近来有很多童靴咨询如何做微信小程序/公众号等H5页面来做自动化,之前写了一篇文章微信小程序自动化测试实践 https://www.cnblogs.com/yyoba/p/945 ...
- thinkphp.2 thinkphp5微信支付 微信公众号支付 thinkphp 微信扫码支付 thinkphp 微信企业付款5
前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2 把微信支付类.企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了 ...
- Vue3+Typescript+Node.js实现微信端公众号H5支付(JSAPI v3)教程--各种填坑
----微信支付文档,不得不说,挺乱!(吐槽截止) 功能背景 微信公众号中,点击菜单或者扫码,打开公众号中的H5页面,进行支付. 一.技术栈 前端:Vue:3.0.0,typescript:3.9.3 ...
随机推荐
- CentOS 无法加载 ntfs文件系统类型解决办法
问题: CentOS无法加载ntfs 文件系统类型的移动硬盘. 解决办法: 1.下载rpmforge,下载对应的版本.(对应的CentOS版本,并区分32位和64位). 例如: wget http:/ ...
- P2060 马步距离(洛谷)
我们无论遇到什么困难,都不要拖,微笑着面对他,战胜拖延的最好方法就是面对拖延. 今天又拖延了…… 早晨听完老师讲课,本想做一道题练练手的,结果因为懒,瘫了一上午.最后在固定的刷题时间去面对了这道题,然 ...
- pyenv虚拟环境安装
安装过程 配置yum源 # curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ...
- antd实战:表单上传,文件列表的过滤与限制。
用表单上传组件最痛苦的地方是: 他的诸多行为与纯上传组件不一样,而表单的文档关于这一块基本上没有提,只能自己试. 比如我想做一个上传前的拦截. beforeUpload: (file, fileLis ...
- Web优化躬行记(1)——CSS
Web优化的对象包括页面性能.用户体验.开发效率.代码优化.网络延迟等,本系列会列举出众多常用的优化技巧,每个技巧都可深入分析,在此只做抛砖引玉. 本系列优化内容提炼于<前端面试宝典>.& ...
- MySQL数据库的安装方法
- html命名规则
CSS样式命名 外套 wrap ------------------用于最外层 头部 header ----------------用于头部 主要内容 main ------------用于主体内容( ...
- Repeating Decimals UVA - 202---求循环部分
原题链接:https://vjudge.net/problem/UVA-202 题意:求一个数除以一个数商,如果有重复的数字(循环小数),输出,如果没有,输出前50位. 题解:这个题一开始考虑的是一个 ...
- Mosquitto的搭建(websocket、ssl、auth-plug)及坑点总结
Mosquitto的搭建及坑点总结 主要讲述的是eclipse-mosquitto的C语言版本的搭建,主要是为了从1.4.15版本升级到1.6.9,为解决一些webSocket和数据格式问题. 因为根 ...
- Android Zero (开篇)
Android Zero == 从零开始 本文章主要打算给将要入门Android或刚刚入门Android的小伙伴适用的,开篇的几个案例都会抛弃所有现在用到的新技术和第三方框架,用最原生的方法从0演示, ...