Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何创建同时具有(可移动)停靠图标的帮助程序应用程序(LSUIElement)_Macos_Osx Snow Leopard_Statusbar_Mac App Store - Fatal编程技术网

Macos 如何创建同时具有(可移动)停靠图标的帮助程序应用程序(LSUIElement)

Macos 如何创建同时具有(可移动)停靠图标的帮助程序应用程序(LSUIElement),macos,osx-snow-leopard,statusbar,mac-app-store,Macos,Osx Snow Leopard,Statusbar,Mac App Store,我已经向Mac应用商店提交了一个助手应用程序(使用LSUIElement)。我的错误印象是,应用商店的安装过程会为助手应用程序放置一个停靠图标 当状态栏应用程序独立运行(如流行的应用程序咖啡因)时,如何创建用户可以删除的停靠图标?我是否需要创建一个加载LSUIElement应用程序的非LSUIElement应用程序,或者有更好的方法吗?使用NSApplication的setActivationPolicy:方法代替LSUIElement。默认情况下,应用程序将有一个停靠图标,但通过将激活策略更改

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


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

使用NSApplication的
setActivationPolicy:
方法代替LSUIElement。默认情况下,应用程序将有一个停靠图标,但通过将激活策略更改为
nsapplicationactivationpolicyaccompancy
,可以通过编程方式对其进行更改,从而获得与LSUIElement相同的效果(nsapplicationactivationpolicyaccompancy的文档称其等同于LSUIElement=1)


很明显,我的应用程序审查员(实际上有两个)给了我错误的信息。停靠图标由安装过程为您创建。按此问题,我可以让应用程序通过审查过程。

这是否允许用户在应用程序运行时从dock中删除图标?是的,只要调用setActivationPolicy:就可以了。-1:doc说“目前,
NSApplicationActivationPolicyNone
nsapplicationactivationpolicyaccompancy
可以更改为
NSApplicationActivationPolicyRegular
,但不支持其他修改。“Richard是正确的,您不能以编程方式将策略设置为NSApplicationActivationPolicyAccessory,但您可以使用另一种方法:在.plist中将LSUIElement设置为1,然后(可选)将策略设置为NapplicationActivationPolicyRegular以显示停靠图标。
NapplicationActivationPolicyAccessority
对我不起作用,但
NapplicationActivationPolicyProbited
对我起作用。这现在在Lion中的行为有所不同,在停靠中没有创建图标,只有在启动板中。请参阅我对类似问题的评论:。在macOS 11上测试。
- (void)applicationDidFinishLaunching:(NSApplication *)app {
    if([[NSUserDefaults standardUserDefaults] boolForKey:@"HideDockIcon"])
        [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
}