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

如何在SwiftUI中通过代码触发Mac的屏幕录制权限请求?

Mac屏幕录制权限仅首次触发的解决方案

macOS的隐私权限机制默认会记住用户对应用的权限选择,所以首次调用CGRequestScreenCaptureAccess()弹出请求后,后续再调用就只会直接返回之前的允许/拒绝状态,不会再弹框。以下是解决办法:

手动重置应用权限

  • 打开系统设置(旧版叫系统偏好设置)
  • 进入「隐私与安全性」面板
  • 找到「屏幕录制」分类
  • 在应用列表里找到你的App,先取消勾选,再重新勾选

    改完记得重启App,新权限才会生效

代码里做权限预检查

在调用请求之前,先判断当前权限状态,避免无效调用,还能引导用户去设置里开启:

import CoreGraphics

func handleScreenCapturePermission() {
    // 先预检查权限状态,不会弹框
    guard !CGPreflightScreenCaptureAccess() else {
        print("权限已获取")
        return
    }
    
    // 尝试请求权限(仅当用户还没做过选择时才会弹框)
    let granted = CGRequestScreenCaptureAccess()
    if granted {
        print("权限已授予")
    } else {
        print("权限未授予,请前往系统设置 > 隐私与安全性 > 屏幕录制 开启权限")
        // 这里可以加个自定义弹窗提示用户去设置
    }
}

// 调用处理函数
handleScreenCapturePermission()

极端情况:重置整个屏幕录制权限数据库

如果上面的方法都没用,可以用终端命令重置所有App的屏幕录制权限:

tccutil reset ScreenCapture

执行完重启Mac,App再次调用权限请求时就会重新弹框了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:02