You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:13:11