如何在启用沙箱的帮助应用程序中终止我的应用程序?

问题描述 投票:0回答:3

我创建了一个辅助应用程序,用于监视 iTunes 并启动/终止主应用程序。

发射工作完美。 唯一的问题是,由于沙箱,我不允许终止主应用程序。 我得到了这 3 条日志:

12/23/12 8:45:37.522 PM appleeventsd[70]: Sandboxed application with pid 8293 attempted to lookup App:"Significator 2"/8877/0x0:0x150150 ???? sess=100011 but was denied due to sandboxing. (handleMessage()/appleEventsD.cp #2007) com.apple.coreservices.appleevents.peer.0x7fd9c2401f00.xpcq


12/23/12 8:45:37.000 PM kernel[0]: Sandbox: sandboxd(8888) deny mach-lookup com.apple.coresymbolicationd


12/23/12 8:45:37.873 PM sandboxd[8888]: ([8293]) SignificatorHelp(8293) deny appleevent-send ch.ilijatovilo.significator-2

我尝试在帮助程序应用程序中像这样终止它:

NSRunningApplication *app = [[NSRunningApplication runningApplicationsWithBundleIdentifier:[self mainApplicationBundle].bundleIdentifier] objectAtIndex:0];
[app terminate];

当然,我可以在主应用程序中添加另一个观察者,但我想避免这种情况。

objective-c macos cocoa appstore-sandbox
3个回答
4
投票

明白了,我必须添加临时权利例外:

<key>com.apple.security.temporary-exception.apple-events</key>
<array>
    <string>mainAppBundleIdentifier</string>
</array>

1
投票

如果您将应用程序放入应用程序组,您可以向主应用程序发送信号以终止自身。


0
投票

10.8 中推荐的 IPC 方式是使用 NSXPCConnection。

请参阅使用 NSXPCConnection 进行沙箱处理

的代码
© www.soinside.com 2019 - 2024. All rights reserved.