iOS Safari同一标签页间隔1分钟后重复请求麦克风权限问题咨询
iOS Safari同一标签页间隔1分钟后重复请求麦克风权限问题咨询
大家好,我遇到了一个iOS Safari浏览器上的麦克风权限问题,想请教下有没有解决方案:
在iOS移动端Safari中,即使已经在同一个标签页会话内授予过麦克风权限,如果上一次录音结束超过60秒后再次尝试录音,浏览器还是会重新弹出权限请求框。但如果在结束录音后的1分钟内再次启动录音,就不会重复请求权限,直接就能正常录制。
我用React写了一个基础的音频录制和可视化组件,核心的启动录制代码大概是这样的:
const startRecording = async () => { navigator.mediaDevices .getUserMedia({ audio: true }) .then((stream) => { // 录制音频逻辑 const recorder = new MediaRecorder(stream, { mimeType: "audio/wav" }); recorder.ondataavailable = (e) => { const audioBlob = new Blob([e.data], { type: "audio/wav" }); // 后续处理音频Blob的逻辑 }; recorder.start(); // 保存recorder和stream的引用 setAudioRecorder(recorder); setMediaStream(stream); }) .catch((err) => { console.error("获取麦克风权限失败:", err); }); }; // 结束录制的逻辑大概是这样 const stopRecording = () => { if (audioRecorder) { audioRecorder.stop(); // 关闭媒体流的所有轨道 mediaStream.getTracks().forEach(track => track.stop()); } };
我猜测问题可能出在媒体流轨道的销毁时机或者Safari的权限会话超时机制上?有没有朋友遇到过类似的情况,或者知道如何让Safari在同一标签页内保持麦克风权限的会话状态,不用每次间隔超过1分钟就重新请求?
备注:内容来源于stack exchange,提问作者Marci
相关产品推荐
相关产品推荐

