一、问题背景
当用户首次进入页面,进行录音时,会向用户询问录音授权。该录音权限的询问会在用户使用录音时询问而不能提前向用户询问。
二、问题复现
当用户首次进行录音时,用户已经点击了录音按钮,但是此时却出现了录音授权弹窗;该录音任务会被意外阻断而产生bug。
三、版本及环境
"weixin-js-sdk": "^1.6.0"
微信浏览器H5端
四、解决过程
-
wx.getSetting
按照微信官方文档,肯定是最先用这个api,查看用户是否已经授权过录音权限,但是这个api没用,拿不到拿不到拿不到拿不到拿不到,气死了!!!问了公司的大佬大家都反馈这个api有问题啊,拿不到!!
wx.getSetting({ success(res) { if (!res.authSetting["scope.record"]) { wx.authorize({ scope: "scope.record", success() { // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问 console.log("录音授权成功"); } }); } } });
2.曲线救国
当用户已进入页面后就弹窗,用户点击确定后调用录音api。
wx.startRecord({
success(res){ wx.stopRecord() },
fail(res){ wx.stopRecord() },
cancel(res){ wx.stopRecord() },
})
此时,当用户未授权录音时,就会弹出授权弹窗,如果已经授权过了就会立刻停止这段录音。通过这个方法判断出用户是否已经授权过权限,且记录用户的权限。
此后,当用户发送语音点击录音按钮时,若用户没有权限则禁止发送语音;反之则能够发送。
五、总结
叭叭叭说了一大推,总结一下。就是wx-sdk中的wx.getSetting(),api拿不到用户授权过的权限;既然拿不到那我就直接调用(wx.startRecord()),调用完后自己记录时候有这个权限。
over。