FullDiskAccess 是一个 Swift 包,用于在 macOS 10.14+ 上查询和提示用户授予“完全磁盘访问权限”。
当你的 macOS 应用程序未沙盒化,并且需要访问系统文件或属于其他应用程序的文件时。示例应用程序:文件备份应用程序、需要搜索整个系统的应用程序等。
关于“完全磁盘访问权限”的文档不足,导致网络上存在很多困惑,因此我运行了 6 个虚拟机来确认 macOS 版本之间的行为。 此包清楚地说明了什么是可能的,什么是不可能的,并可以轻松地检查权限并提示用户。
import FullDiskAccess
if FullDiskAccess.isGranted {
// Great!
}
ℹ️ 在 macOS 10.15+ 上,检查 isGranted
会自动将您的应用程序添加到“隐私与安全”中的“完全磁盘访问权限”条目(未选中)。
应用程序无法自动启用“完全磁盘访问权限”(这是有充分理由的),因此用户必须手动进行。 我们通过自动将应用程序添加到“隐私与安全”中的“完全磁盘访问权限”条目(未选中)并引导用户到该屏幕来简化操作。
import FullDiskAccess
FullDiskAccess.promptIfNotGranted(
title: "Enable Full Disk Access for MacSymbolicator",
message: "MacSymbolicator requires Full Disk Access to search for DSYMs using Spotlight.",
settingsButtonTitle: "Open Settings",
skipButtonTitle: "Later",
canBeSuppressed: false, // `true` will display a "Do not ask again." checkbox and honor it
icon: nil
)
import FullDiskAccess
// Opens the System Settings (aka System Preferences) with the Privacy & Security preference pane open and the
// Full Disk Access tab pre-selected.
FullDiskAccess.openSystemSettings()
// Resets the prompt suppression (i.e. if the user has selected "Do not ask again.", this resets their choice)
FullDiskAccess.resetPromptSuppression() {
认为有什么不对劲或有改进建议? 欢迎您提出反馈。 请创建一个 issue!