3

我想在 OSX 10.12.6 上使用 Finder 同步扩展中的 setxattr/getxattr,但调用失败并显示 errno==1,即 EPERM。Finder 同步扩展在沙箱中运行,所以我想我需要请求权限。到目前为止,没有多少谷歌搜索和文档浏览发现信息。我要访问的文件归我自己所有,使用 xattr 命令行实用程序设置属性成功并产生预期结果。

所以问题是:我需要给沙箱哪些权限/权利,或者这可能吗?

我基本上想将同步状态存储在扩展属性(清理、修改、同步)中,并基于此为 requestBadgeIdentifierForURL 选择正确的徽章。较低优先级的非沙盒进程遍历文件并更新属性。

另一种方法是使用单独的数据库来存储同步状态,如果 xattr 不起作用,我将使用它。

编辑:添加了权利文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
    <true/>
    <key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>
    <true/>
    <key>com.apple.security.files.downloads.read-write</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
</dict>
</plist>

示例随附的原始权利文件只是

<key>com.apple.security.files.user-selected.read-only</key>

这也不起作用。

我在 GitHub 上添加了一个测试项目https://github.com/JensRestemeier/SyncExtensionTest

4

0 回答 0