出乎意料的是,我无法获得安全范围的书签

时间:2013-03-10 14:49:18

标签: macos appstore-sandbox

Blimey,这个Sandboxing让我感到绝望:我有一个应用程序已经在Apple的商店发布了(所以,理论上,它已经通过评论......),它是一个幻灯片播放器 - 没什么太奇特 - 用户可以拖动并将图像拖放到NSTableView上或通过NSOpenPanel选择。无论如何,我以为我会自己使用它,所以我将一份副本重新编译到我的笔记本电脑上,突然之间我不允许安全书签:

QuickSlide(1412) deny mach-lookup com.apple.scopedbookmarksagent.xpc

每当我拖放图像或通过NSOpenPanel选择它们时,都会出现上述内容。

我有以下权利:

enter image description here

我用来生成书签的代码是:

-(NSData*)genSec:(NSURL*)aURL
{
    NSError *error;
    NSData  *secData = [aURL bookmarkDataWithOptions:(NSURLBookmarkCreationWithSecurityScope | NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess | NSURLBookmarkCreationPreferFileIDResolution)
                     includingResourceValuesForKeys:nil relativeToURL:nil error:&error];
    if (error) {
        [self setReport: [NSString stringWithFormat:@"Can't access %@ due to SandBoxing",aURL]];
        return nil;
    }
    return secData;
}

果然,report方法也会随着控制台日志记录一起被触发。

在我开发的几个月里,它从来没有这样做过。我也在我的开发Mac Pro箱子上尝试过,尝试过不同签名或不签名的代码签名,甚至从App Store下载(用两个不同的帐户试了两次);都具有相同的结果。我还使用了非常方便的Receigen应用程序来检查编译包中的权利。我正在运行10.7.5。阻止它抛出错误的唯一因素是我在Xcode中取消选中“启用沙盒”选项并进行编译。

Argghhh。有人可以指出一个令人眼花缭乱的明显错误,不知何故已经通过2个beta测试者,我和App Store评论员......?!!!!

它必须是明显的不是吗?

更新:我有一位同事将新的副本下载到他的笔记本电脑上,沙盒没问题。如果有人能够了解我的装置发生了什么......我还是很感激。

托德。

1 个答案:

答案 0 :(得分:2)

从您的权利看来,这似乎是一种显而易见的东西。你还需要添加这个:

com.apple.security.files.bookmarks.app-scope

我不知道它为什么以前工作,现在不工作,但我很肯定你需要声明这个权利以使安全范围的书签工作。