diff --git a/app-support-sample/README.md b/app-support-sample/README.md index c3d4d1a..0895705 100644 --- a/app-support-sample/README.md +++ b/app-support-sample/README.md @@ -71,7 +71,7 @@ IOS其他浏览器|| ## 限制功能 -- `IOS-Weixin`不支持实时回调,因此当在IOS微信上录音时,实时音量反馈、实时波形等功能不会有效果,并且微信素材下载接口下载的amr音频音质勉强能听(总比没有好,自行实现时也许可以使用它的高清接口,不过需要服务器端转码)。 +- `IOS-Weixin`不支持实时回调、`微信JsSDK`限制录音最长为60秒;因此当在IOS微信上录音时,实时音量反馈、实时波形等功能不会有效果,录音超过60秒还未调用`Stop`进行停止录音时,停止时也仅仅会返回60秒录音;并且微信素材下载接口下载的amr音频音质勉强能听(总比没有好,自行实现时也许可以使用它的高清接口,不过需要服务器端转码)。 - 如果开启了`Native`支持,并且环境支持App原生录音,`Recorder`对象将不可用,因为不会加载`Recorder`库。 @@ -257,7 +257,7 @@ IOS-Weixin底层会把从微信素材下载过来的原始音频信息存储在s 需提供`WxReady`、`DownWxMedia`方法,具体情况请查阅[src/app-support/app.js](https://github.com/xiangyuecn/Recorder/blob/master/src/app-support/app.js)内有详细的说明。 -- `WxReady`: 对使用到的[微信JsSDK进行签名](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115),至少要包含`startRecord,stopRecord,uploadVoice`接口。签名操作需要后端支持。 +- `WxReady`: 对使用到的[微信JsSDK进行签名](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115),至少要包含`startRecord,stopRecord,onVoiceRecordEnd,uploadVoice`接口。签名操作需要后端支持。 - `DownWxMedia`: 对[微信录音素材进行下载](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738727),下载操作需要后端支持。 以上两个方法都是公众(订阅)号开发范畴,需要注册开通相应的微信服务账号。 diff --git a/dist/app-support/app.js b/dist/app-support/app.js index dc77374..9d8b422 100644 --- a/dist/app-support/app.js +++ b/dist/app-support/app.js @@ -3,4 +3,4 @@ https://github.com/xiangyuecn/Recorder src: app-support/app.js,app-support/app-ios-weixin-support.js,app-support/app-native-support.js */ -!function(){"use strict";var n=/MicroMessenger/i.test(navigator.userAgent),u=window.RecordAppBaseFolder||"/Recorder/dist/",e=window.OnRecordAppInstalled,f=[{Key:"Native",Support:function(e){e(!1)},Config:{}},{Key:"IOS-Weixin",Support:function(e){p.AlwaysUseWeixinJS||!Recorder.Support()?e(n):e(!1)},Config:{WxReady:function(e){e(null,"未实现IOS-Weixin.Config.WxReady")},DownWxMedia:function(e,n,t){t("下载素材接口DownWxMedia未实现")},AMREngine:[{url:u+"engine/beta-amr.js",check:function(){return!Recorder.prototype.amr}}]},ExtendDefault:!0},{Key:"Default",Support:function(e){e(!0)},Config:{paths:[{url:u+"recorder-core.js",check:function(){return!window.Recorder}},{url:u+"engine/mp3.js",check:function(){return!Recorder.prototype.mp3}}]}}],t=f[0],o=f[1],l=f[2];l.RequestPermission=function(e,n){var t=Recorder();t.open(function(){t.close(),e()},n)},l.Start=function(e,n,t){var o=p.__Rec;null!=o&&o.close(),p.__Rec=o=Recorder({type:e.type,sampleRate:e.sampleRate,bitRate:e.bitRate,onProcess:function(e,n,t,o){p.ReceivePCM(e[e.length-1],n,t,o)}}),o.appSet=e,o.open(function(){o.start(),n()},function(e){t(e)})},l.Stop=function(t,n){var o=p.__Rec;if(o){var i=function(){for(var e in o.close(),o.set)o.appSet[e]=o.set[e];p.__Rec=null};o.stop(function(e,n){i(),p.BlobRead(e,n,t)},function(e){i(),n(e)})}else n("未开始录音")};var p={LM:"2019-4-23 14:51:14",Current:0,IsWx:n,BaseFolder:u,AlwaysUseWeixinJS:!1,Platforms:{Native:t,Weixin:o,Default:l},Js:function(i,r,c,e){var a=(e=e||window).document,s=function(e){if(e>=i.length)r();else{var n=i[e],t=n.url;if(!1!==n.check()){var o=a.createElement("script");o.setAttribute("type","text/javascript"),o.setAttribute("src",t),o.onload=function(){s(e+1)},o.onerror=function(e){c("请求失败:"+(e.message||"-")+","+t)},a.body.appendChild(o)}else s(e+1)}};s(0)},BlobRead:function(e,n,t){var o=new FileReader;o.onloadend=function(){t({mime:e.type,duration:n,data:(/.+;\s*base64\s*,\s*(.+)$/i.exec(o.result)||[])[1]})},o.readAsDataURL(e)},ReceivePCM:function(e,n,t,o){p.OnProcess&&p.OnProcess([e],n,t,o)},Install:function(t,o){var i=p.__reqs||(p.__reqs=[]);i.push({s:t,f:o}),t=function(){r("s",arguments)},o=function(e,n){r("f",arguments)};var r=function(e,n){for(var t=0;t=i.length)r();else{var n=i[e],t=n.url;if(!1!==n.check()){var o=a.createElement("script");o.setAttribute("type","text/javascript"),o.setAttribute("src",t),o.onload=function(){s(e+1)},o.onerror=function(e){c("请求失败:"+(e.message||"-")+","+t)},a.body.appendChild(o)}else s(e+1)}};s(0)},BlobRead:function(e,n,t){var o=new FileReader;o.onloadend=function(){t({mime:e.type,duration:n,data:(/.+;\s*base64\s*,\s*(.+)$/i.exec(o.result)||[])[1]})},o.readAsDataURL(e)},ReceivePCM:function(e,n,t,o){p.OnProcess&&p.OnProcess([e],n,t,o)},Install:function(t,o){var i=p.__reqs||(p.__reqs=[]);i.push({s:t,f:o}),t=function(){r("s",arguments)},o=function(e,n){r("f",arguments)};var r=function(e,n){for(var t=0;t