【问题标题】:Out of the blue I can't get security scoped bookmarks出乎意料的是,我无法获得安全范围的书签
【发布时间】: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 评论员都漏掉了……?!!!!

它必须是显而易见的不是吗?

更新:我让一位同事将新副本下载到他的笔记本电脑上,沙盒没有问题。如果有人能对我的安装情况有所了解,我仍然会很感激......

托德。

【问题讨论】:

    标签: macos appstore-sandbox


    【解决方案1】:

    果然,从您的权利看来,这是显而易见的。您还需要添加这个:

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

    我不知道为什么它以前有效而现在无效,但我很肯定您需要声明此权利才能使安全范围的书签有效。

    【讨论】:

    • 谢谢亚历克斯,我会试一试的。
    • 是的,就是这样。我不敢相信这经过了审查,并被视为在测试人员的机器上工作。这很奇怪。我唯一的想法是在某些时候重新编译并没有正确覆盖权利文件。我知道除非您对旧版本进行适当的清理,否则支持文件组中的内容可能会一直存在。
    • 好吧,即使我们不明白为什么它不起作用,我很高兴我们解决了这个问题
    • 也许它起作用了,因为此权利仅在 10.7.3 中引入,并且应用审查/您的测试人员运行的是旧版本。
    猜你喜欢
    • 2016-12-27
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多