【问题标题】:Reacting upon iTunes launch with NSDistributedNotificationCenter使用 NSDistributedNotificationCenter 在 iTunes 启动时做出反应
【发布时间】:2014-02-04 03:26:51
【问题描述】:

我试图在 iTunes 在 Mac OS X 上启动时进行拦截,以便我可以重新启动我的应用程序以解决 iTunes 框架中的一些错误。

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

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

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

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

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

如果是这样,一旦我的应用再次被沙盒化,我需要请求临时许可才能收听此类事件,我该如何在代码中做到这一点?

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

【问题讨论】:

    标签: macos cocoa itunes


    【解决方案1】:

    你不需要为此禁用沙盒,只需在NSWorkspace提供的通知中心观察NSWorkspaceDidLaunchApplicationNotification,而不是分布式的。

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

    【讨论】:

    • 太棒了,谢谢,不过我不得不使用[[NSWorkspace sharedWorkspace] notificationCenter][NSNotificationCenter defaultCenter] 我没有收到通知。
    • 对了,我忘了NSWorkspace有自己的通知中心。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2012-01-17
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    相关资源
    最近更新 更多