【发布时间】:2012-04-29 01:26:31
【问题描述】:
我有一个沙盒应用程序。每次启动时,我都需要它来启动一个帮助应用程序(从主应用程序的包中)。但是,这失败了:
NSError *error;
[[NSWorkspace sharedWorkspace] launchApplicationAtURL:helperURL
options:NSWorkspaceLaunchDefault
configuration:nil
error:&error];
错误是:
应用程序“Helper”因损坏而无法启动。, NSUnderlyingError=0x10214c700 "操作无法完成。(OSStatus 错误 -10827.)"}
现在,该错误具有误导性,因为如果我禁用沙盒权利,应用程序启动正常。显然这是一个错误,据报告here。
我的问题是:有解决方法吗?
我可以使用SMLoginItemSetEnabled,如here所述:
传递
true立即启动助手应用程序,并指示它应该在用户每次登录时启动。传递false以终止助手应用程序,并表明它不应在用户登录时再启动.
但是,由于 App Store Review Guideline 2.26,我不能在不先询问用户的情况下使用此 API:
未经用户同意而设置为自动启动或在启动或登录时自动运行其他代码的应用程序将被拒绝
因此,使用此解决方法意味着询问用户“是否可以在每次登录时启动帮助程序?如果不是,则无法使用此应用程序!”显然,这并不理想......
【问题讨论】:
-
不确定这是否与 rdar://10934199 有关,因为 launchApplicationAtURL 在沙盒下失败,即使它尝试启动的应用程序已经由用户手动启动
-
您能否获得安装用户启动代理的权限,该代理会检查您的应用是否正在运行并启动帮助应用?