微信JSSDK录音功能开发遇到的坑

1、在进行微信网页录音功能开发的时候,微信jssdk初始化一定要把用到的方法写在wx.config配置信息jsApiList中,不然调用方法起不到效果。


jsApiList: ['onMenuShareAppMessage','translateVoice','onVoiceRecordEnd','stopVoice'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2

2、微信录音前会弹出“是否允许录音”,点击是才会执行wx.startRecord函数success回调,否则执行fail。所以,要把微信录音过程中相关的动作写在success回调里。**这个‘是否允许录音’提示很没有规律,在开始调试的时候很正常,只有在第一次录音和一定时间之后(这个时间没有找到规律到底是多长)弹出提示;不正常的是有段时间,微信每次都会弹出这个提示,并且在有些手机上会卡住,必须点击返回才能正常录音。

3、微信录音到60秒时会出现不执行wx.uploadVoice的bug,导致音频获取不到,解决方法是在录音到59秒的时候停止录音。微信有一个到60秒自动停止的方法,碰到的问题是进入这个方法,到60秒会自动停止,但不会执行后面的上传语音的逻辑,只是把录音停止了,写的其他动作都没执行。

wx.onVoiceRecordEnd({
    // 录音时间超过一分钟没有停止的时候会执行 complete 回调
    complete: function (res) {
        var localId = res.localId;
    }
});

4、微信录音后会返回本地音频地址,可以用wx.playVoice直接播放,上传数据时则要用wx.uploadVoice获取mediaId后上传这个数据,本地音频地址是不能上传的。等播放的时候用wx.downVoice以mediaId为参数再下载到本地播放本地音频文件。微信只会保留3天,3天过后mediaID就会失效,所以在3天内要把资源下载到自己的服务器中。

5、连续播放微信本地音频:录音之后会直接得到本地音频地址,可以用来直接播放,所以在录音页面连续播放音频时,会少一个下载音频的逻辑。如果进行连续点击音频进行播放,会导致微信方法崩溃掉,所以要加一个统一开关使音频回归到初始状态,这样再次点击时,就不会出现bug。注意:这个回归到初始化的方法要用wx.stopVoice方法。再连续播放时是自动进行的,所以这个地方也要加一个初始化操作。就是在播放每一个音频之前都加一个初始化操作,这个地方ios和Android处理方法不一样,ios要用wx.pauseVoice方法,Android要用wx.stopVoice才可以。

6、连续播放微信mediaID音频文件:在播放之前要用wx.downLoadVoice下载到本地,然后播放本地音频文件,这个地方用到了异步获取资源的操作了,这个时候在初始化时不能用遍历所有音频文件进行停止操作,需要在停止前进行判断,找出正在播放的进行停止。

7、连续播放自己服务器音频文件:这个时候用到audio标签播放,需要异步获取音频地址,所以不能再页面初始化的时候进行获取,会导致获取的结果顺序乱掉,需要在点击音频的时候在获取当前音频的url。这个时候会出现audio在某些手机上不能播放的兼容问题,就是audio地址如果是异步获取的,在第一次的时候播放不出来。解决方法是在页面中写入一个audio标签,src中放入一个时长1s的音频,在点击的时候就播放,然后异步获取音频url再进行替换。注意:ios是没有这个bug的,所以ios是不能用这个方法,如果用了就会出现bug。

8、监听audio音频播放停止事件,用到了audio标签的ended属性,如果停止了返回true。给audio标签添加监听事件,这个时候用于连续播放功能的记录顺序的下标要用全局变量。

**其他网友遇总结的问题地址:http://www.henkuai.com/thread-11227-1-1.html

时间: 2024-11-16 20:11:01

微信JSSDK录音功能开发遇到的坑的相关文章

php微信公众账号开发之五个坑(二)_php实例

上篇说到微信公众账号的几个坑,前面五个,已经说到菜单,宝宝继续往下赘述了.可惜,还不知道宝宝的宝宝到底是不是心疼宝宝呢,完了,我凌乱了...  回到正题,我们就不吐槽其他的了,上一篇说到微信的菜单了,那么,我们现在说说菜单回复等等的吧.  菜单回复是需要处理XML文件的,我们根据微信返回的XML文件,可以得到每个微信用户相对于微信公众号的唯一标识.微信公众平台的机制简单的将就是我们自己输出固定格式的xml文件,然后微信APP负责解析,得到我们想要的信息,然后对信息统一处理.  第六坑,如果你看微

php微信公众账号开发之五个坑(二)

上篇说到微信公众账号的几个坑,前面五个,已经说到菜单,宝宝继续往下赘述了.可惜,还不知道宝宝的宝宝到底是不是心疼宝宝呢,完了,我凌乱了... 回到正题,我们就不吐槽其他的了,上一篇说到微信的菜单了,那么,我们现在说说菜单回复等等的吧. 菜单回复是需要处理XML文件的,我们根据微信返回的XML文件,可以得到每个微信用户相对于微信公众号的唯一标识.微信公众平台的机制简单的将就是我们自己输出固定格式的xml文件,然后微信APP负责解析,得到我们想要的信息,然后对信息统一处理. 第六坑,如果你看微信文档

微信公众平台开发 JS-SDK开发(图像接口实例)

本文并非是对微信JS-SDK说明文档的复制,而是通过一个简单的例子来更深入的了解使用微信JS-SDK,具体文档请参考官方说明文档<微信JS-SDK说明文档>.微信公众平台面向开发者开放微信内网页开发工具包(微信JS-SDK),通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页上使用微信本身的拍照.选图.语音.位置等基本能力,还可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 微信JS-SDK提供的11类接口(分享接口.图像接口.音频接口.智能

前端工程师如何快速的开发一个微信JSSDK应用

亲们,订阅号出来已经很久了,作为一个前端工程师或者全栈工程师,你是不是错过了什么?大概许多攻城狮同砚还没有反应过来订阅号怎么回事,就马上要被微信的应用号秀一脸了.在应用号还没有正式出来之前,我们赶紧一起来看看怎样给自己的订阅号加个网页功效吧. 一.订阅号网页与平凡的HTML5网页的区别 可能会有很多同学还没有弄清楚普通的HTML网页与订阅号网页的差别,我在这里简朴的说明一下. 订阅号的网页就是微信的网页,普通的网页是W3C范例下的网页. 订阅号的网页通常是以遵守W3C的网页规范为前提的,但是也有

调用微信jssdk,使用开始录音接口时,弹出“要使用你的录音功能,是否允许”

问题描述 调用微信jssdk,使用开始录音接口时,弹出"要使用你的录音功能,是否允许" 第一次用微信调用时,总是出现这个提示框,只要点击确定,原有的 animate就出现了问题.,如何用js监控这个提示框的出现 解决方案 这是浏览器添加的提示信息.你看下你的css定位有没有问题. 试试看:window.onscroll事件 解决方案二: 在android平台上使用录音设备

php微信公众账号开发之前五个坑(一)_php实例

直入主题: 微信公众账号开发文档,官方版(https://mp.weixin.qq.com/wiki),相信我,我已经无力吐槽写这个文档的人了,我真心想杂碎这个键盘,但是下手之后才发现,原来键盘是我自己花钱买的....尴尬了.  废话不说,直接说怎么部署,怎么开发.  首先,你得有一个公众平台账号,好了,开始计坑.  第一坑,不要以为不是企业号就不能开发了,可以申请测试号的,比所谓的订阅号接口多多了.   进入后台管理之后,点击开发者工具,可以看到公众平台测试账号,直接进入即可.开始填写自己的配

微信接口开发之高级篇系列【微信JS-SDK】

PHP微信公众平台开发高级篇-微信JS-SDK        第一步.绑定域名: 第二步.引入JS文件: 第三部.通过Config接口注入权限验证配置 第四部.通过Read接口处理成功验证 第五部.通过Error接口处理失败验证 实际案例:分享接口内容  

C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能

随着微信开逐步开放更多JSSDK的接口,我们可以利用自定义网页的方式来调用更多微信的接口,实现我们更加丰富的界面功能和效果,例如我们可以在页面中调用各种手机的硬件来获取信息,如摄像头拍照,GPS信息.扫描二维码等等,本篇介绍如何利用这些JSSDK接口实现签到的功能,其中签到需要报送地理坐标和地址,调用摄像头实时拍照,以及获取当前用户的相关信息等等. 1.JSSDK的说明 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS-SDK,网页开发者可借助微信高

微信jssdk用法汇总_javascript技巧

本文针对微信jssdk用法进行了详细汇总,分享给大家,供大家参考,具体内容如下 1.绑定域名 2.引入js文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js 请注意,如果你的页面启用了https,务必引入 https://res.wx.qq.com/open/js/jweixin-1.0.0.js ,否则将无法在iOS9.0以上系统中成功使用JSSDK 3.通过config接口注入权限验证