cocoa – 修改Info.plist以在运行时设置“Application is agent(UIElement)”

cocoa – 修改Info.plist以在运行时设置“Application is agent(UIElement)”,第1张

概述假设我需要让用户能够通过首选项面板选择是将应用程序用作“标准”(使用停靠图标和菜单)还是作为代理应用程序(仅限状态栏菜单). 我想我需要在执行期间以编程方式修改应用程序的“Info.plist”,将参数“Application is agent”更改为YES / NO. 这是正确的方法吗? 附:你可以在“麻雀”中找到这种行为. 您不应该在运行时修改应用程序的Info.plist文件(或应用程序包中 假设我需要让用户能够通过首选项面板选择是将应用程序用作“标准”(使用停靠图标和菜单)还是作为代理应用程序(仅限状态栏菜单).

我想我需要在执行期间以编程方式修改应用程序的“Info.pList”,将参数“Application is agent”更改为YES / NO.

这是正确的方法吗?

附:你可以在“麻雀”中找到这种行为.

解决方法 您不应该在运行时修改应用程序的Info.pList文件(或应用程序包中的任何内容).这是不好的做法,如果代码已签名,也会破坏您的应用.现在这一点更为重要,因为应用商店中的所有应用都必须经过代码签名.

更好的选择是使用Application Services函数transformProcesstype()将您的应用程序从后台移动到前台应用程序.

首先,将应用程序的Info.pList中的lsuielement键设置为YES,然后在启动时检查用户默认值,以确定您的应用程序是否应作为代理运行:

#import <applicationservices/applicationservices.h>@implementation AppDelegate- (voID)applicationDIDFinishLaunching:(NSNotification *)notification{    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"LaunchAsAgentApp"])     {        ProcessSerialNumber psn = { 0,kCurrentProcess };        transformProcesstype(&psn,kProcesstransformToForegroundApplication);        SetFrontProcess(&psn);    }}@end

确保您不要忘记将Application Services框架添加到项目中.

总结

以上是内存溢出为你收集整理的cocoa – 修改Info.plist以在运行时设置“Application is agent(UIElement)”全部内容,希望文章能够帮你解决cocoa – 修改Info.plist以在运行时设置“Application is agent(UIElement)”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1034097.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存