【问题标题】:How to create a helper application (LSUIElement) that also has a (removable) dock icon如何创建还具有(可移动)停靠图标的帮助应用程序(LSUIElement)
【发布时间】:2011-03-21 20:00:03
【问题描述】:

我已向 Mac App Store 提交了一个帮助应用程序(使用 LSUIElement)。我的错误印象是 App Store 安装过程会为帮助应用程序放置一个停靠图标。

如何创建一个用户可以删除的停靠图标,而状态栏应用程序独立运行(如流行的应用程序 Caffeine)?我是否需要创建一个加载 LSUIElement 应用的非 LSUIElement 应用,还是有更好的方法?

【问题讨论】:

标签: macos osx-snow-leopard statusbar mac-app-store


【解决方案1】:

不要使用 LSUIElement,而是使用 NSApplication 的 setActivationPolicy: 方法。默认情况下,应用程序会有一个停靠图标,但是通过将激活策略更改为NSApplicationActivationPolicyAccessory,您可以获得与 LSUIElement 相同的效果,同时能够以编程方式更改它(NSApplicationActivationPolicyAccessory 的文档说它相当于 LSUIElement=1) .

- (void)applicationDidFinishLaunching:(NSApplication *)app {
    if([[NSUserDefaults standardUserDefaults] boolForKey:@"HideDockIcon"])
        [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
}

【讨论】:

  • 这是否允许用户在应用程序运行时从 Dock 中删除图标?
  • 是的,只要你想改变它,你只需要调用 setActivationPolicy:。
  • -1:文档说“目前,NSApplicationActivationPolicyNoneNSApplicationActivationPolicyAccessory 可能会更改为 NSApplicationActivationPolicyRegular,但不支持其他修改。”
  • Richard 是正确的,您不能以编程方式将策略设置为 NSApplicationActivationPolicyAccessory,但您可以采用其他方式:在 .plist 中将 LSUIElement 设置为 1,然后(可选)设置策略到 NSApplicationActivationPolicyRegular 以显示停靠图标。
  • NSApplicationActivationPolicyAccessory 对我不起作用,但 NSApplicationActivationPolicyProhibited 起作用。
【解决方案2】:

显然,我的应用审阅者(实际上是其中两个)误导了我。停靠图标由安装过程为您创建的。按这个问题,我能够通过审核流程获得该应用程序。

【讨论】:

  • 现在在 Lion 中的行为有所不同,在 Dock 中没有创建图标,仅在 LaunchPad 中。
猜你喜欢
  • 1970-01-01
  • 2010-12-23
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多