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

iOS系统中用户授权/拒绝录屏权限时如何触发执行对应函数?

实现方案

浏览器端的录屏权限申请统一走标准MediaDevices.getDisplayMedia() API,你要的两个触发场景刚好对应这个API返回的Promise的两种状态回调:

  • 用户点击允许并选择共享内容后触发Promise的resolve状态,对应你要的允许后执行函数
  • 用户点击不允许、或者权限被禁用时触发Promise的reject状态,对应你要的拒绝后执行函数

可直接运行的代码示例

// 录屏权限申请触发函数
function applyScreenRecordPermission() {
  // 先做浏览器兼容判断
  if (!navigator.mediaDevices?.getDisplayMedia) {
    console.log('当前浏览器不支持录屏功能')
    // 不兼容场景也可直接触发拒绝后的逻辑
    onDenyRecord()
    return
  }

  // 调用API弹出系统级权限申请弹窗
  navigator.mediaDevices.getDisplayMedia({
    video: true,
    audio: false // 按需配置是否同时录制系统音频
  })
  .then(stream => {
    // 用户点击「允许录屏」后的逻辑写在这里
    onAllowRecord(stream)
    // stream为返回的录屏媒体流,可直接赋值给video元素播放、或用于后续录制/传输
  })
  .catch(err => {
    // 用户点击「不允许」、或权限异常时的逻辑写在这里
    // 可通过错误名称判断是否为用户主动拒绝
    if (err.name === 'NotAllowedError') {
      onDenyRecord()
    } else {
      console.log('录屏申请失败:', err)
      onDenyRecord()
    }
  })
}

// 允许录屏后执行的自定义函数
function onAllowRecord(stream) {
  console.log('用户同意录屏,获取到录屏流:', stream)
  // 你的自定义业务逻辑写在这里
}

// 拒绝录屏后执行的自定义函数
function onDenyRecord() {
  console.log('用户拒绝了录屏权限')
  // 你的自定义业务逻辑写在这里
}

注意事项

  • 该API仅支持在HTTPS环境、或者localhost本地开发环境调用,公网HTTP环境会被浏览器直接拦截
  • 如果用户之前已经给过站点永久录屏权限,再次调用时不会弹出权限弹窗,会直接执行允许后的逻辑
  • 权限弹窗的样式由用户的操作系统/浏览器自带定义,前端代码无法自定义修改弹窗样式

内容的提问来源于stack exchange,提问作者kike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:24:04