Mac OS In App Sandbox Entitlements Directory Read Issue

时间:2014-02-21 02:01:31

标签: objective-c plist sandbox entitlements

我的App Sandbox权利存在问题。

我的Mac OS应用程序允许用户打开XML文件。解析该文件时,它会读取与XML文件位于同一目录中的图像文件。

如果App Sandbox为False,图像加载就好了。 如果App Sandbox为True,则无法加载图像。 (仍然读取XML文件)

App Sandbox必须为True才能推送到App Store。

我试过了

com.apple.security.files.user-selected.read-write = TRUE
com.apple.security.temporary-exception.files.home-relative-path.read-only = TRUE
com.apple.security.temporary-exception.files.absolute-path.read-only = TRUE

我从Apple的文档中提取了这些信息:Apples Entitlement Doc

有没有办法可以读取这两个文件?其他人遇到过这样的事情吗?

此外,这两个文件可以是用户通常保存文件的任何位置。包括网络驱动器。

2 个答案:

答案 0 :(得分:0)

没有。要读取文件,必须是:

  • 在世界上可读的位置,或
  • 在可以在权利首选项中启用的文件夹中,即“下载”文件夹或
  • 用户使用NSOpenPanel手动打开或保存,之后可以选择
  • 存储为安全范围的书签,之后可以自由访问。见here

答案 1 :(得分:0)

com.apple.security.files.user-selected.read-write = TRUE

这是一个布尔值,可以,授权文件中的XML表示为:

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

其他2种权利不是布尔值,而是字符串数组。因此,在权利文件中表示它的正确方法是:

<key>com.apple.security.temporary-exception.files.home-relative-path.read-only</key>
<array>
    <string>example/local/path1/</string>
    <string>example/local/path2/</string>
</array>
<key>com.apple.security.temporary-exception.files.absolute-path.read-only</key>
<array>
    <string>/usr/local/bin/</string>
    <string>/usr/local/lib/</string>
</array>