【发布时间】:2013-03-10 14:49:17
【问题描述】:
天哪,这个沙盒让我绝望:我有一个应用程序已在 Apple 商店发布(理论上,它已经过审核...),它是一个幻灯片播放器 - 没什么花哨的 - 用户可以拖动并将图像拖放到 NSTableView 上或通过 NSOpenPanel 进行选择。无论如何,我想我自己会使用它,所以我在我的笔记本电脑上重新编译了一个副本,突然之间我不允许安全书签:
QuickSlide(1412) deny mach-lookup com.apple.scopedbookmarksagent.xpc
每当我拖放图像或通过 NSOpenPanel 选择它们时,就会出现上述情况。
我有以下权利:
我用来生成书签的代码是:
-(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 方法也与 Console 日志一起被触发。
在我开发的这几个月里,从来没有这样做过。我还在我的开发 Mac Pro 板条箱上尝试过,尝试使用不同签名或不签名的代码签名,甚至从 App Store 下载它(使用 2 个不同的帐户尝试了两次);都具有相同的结果。我还使用了非常方便的 Receigen 应用程序来检查编译包中的权利。我正在运行 10.7.5。阻止它抛出错误的唯一方法是如果我取消选中 Xcode 中的“启用沙盒”选项并进行编译。
啊。有人能指出一个明显的错误,不知怎的,我和 App Store 的 2 位测试人员、我和一位 App Store 评论员都漏掉了……?!!!!
它必须是显而易见的不是吗?
更新:我让一位同事将新副本下载到他的笔记本电脑上,沙盒没有问题。如果有人能对我的安装情况有所了解,我仍然会很感激......
托德。
【问题讨论】: