使用NSDistributedNotificationCenter对iTunes启动做出反应

时间:2014-02-04 03:26:52

标签: macos cocoa itunes

当iTunes在Mac OS X上启动时,我正试图拦截,所以我可以重新启动我的应用程序以解决iTunes Framework中的一些错误。

我所做的是临时禁用我的应用程序的沙盒并听取所有NSDistributedNotificationCenter通知,以便检查它们并选择我想要的那些。

我发现iTunes启动时显然发送此事件:

object: com.apple.iTunes.help name: HelpBookRegistrationDidChange userInfo: (null)

这似乎相当独特,但也没有提供确切的线索,它只与100%的启动事件有关。

有谁知道这是否是拦截此类事件的安全方法?

如果是这样,一旦我的应用程序再次沙盒化,我需要请求临时权限才能听取此类事件,我该如何在代码中执行此操作?

您是否认为脚本桥在这种情况下可以提供帮助?

1 个答案:

答案 0 :(得分:1)

您无需为此禁用沙盒,只需观察NSWorkspaceDidLaunchApplicationNotification提供的通知中心内的NSWorkspace,而不是分发的沙箱。

您将在通知的用户信息中获得NSRunningApplication的实例,您可以使用该实例确定启动的应用是否为iTunes(使用bundleIdentifier属性)。