我无法在网上找到任何关于此内容的信息,但是当启用沙箱时,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上。还有其他人遇到过这个吗?
答案 0 :(得分:2)
根据Apple的开发者论坛,你不能再在沙盒中这样做了 - 你所看到的行为是预料之中的。这真的很恶心,因为没有替代API来实现这个功能,而不是走出沙箱。