在启用沙箱的OSX 10.10上创建应用程序默认处理程序

时间:2014-10-28 06:07:29

标签: objective-c macos cocoa

我无法在网上找到任何关于此内容的信息,但是当启用沙箱时,LSSetDefaultHandlerForURLScheme将返回-54。我不确定需要启用什么权利才能实现这一点,因为它没有启用沙箱。

要查看此效果,请在appdelegate中创建一个新项目:

-(void)applicationWillFinishLaunching:(NSNotification *)notification {
    // Become default handler
    CFStringRef bundleID = (CFStringRef)CFBridgingRetain([[NSBundle mainBundle] bundleIdentifier]);
    OSStatus result = LSSetDefaultHandlerForURLScheme(CFSTR("maxel"), bundleID);
    if (result != 0) {
        assert(0);
    }
}

它会起作用。接下来打开沙箱。它将失败,结果为-54。

建立在OSX 10.10 Yosemite上。还有其他人遇到过这个吗?

1 个答案:

答案 0 :(得分:2)

根据Apple的开发者论坛,你不能再在沙盒中这样做了 - 你所看到的行为是预料之中的。这真的很恶心,因为没有替代API来实现这个功能,而不是走出沙箱。