実行時にアプリのInfo.plist
ファイル(またはアプリのバンドル内のもの)を変更しないでください。これは悪い習慣であり、コードが署名されていればあなたのアプリを壊すでしょう。これは今日、アプリストアのすべてのアプリをコード署名する必要があるため、もっと重要です。
より良いオプションは、アプリケーションサービス機能TransformProcessType()
を使用して、アプリをバックグラウンドからフォアグラウンドアプリに移動することです。
まず、あなたのアプリのInfo.plist
YES
にでLSUIElement
キーを設定して、あなたのアプリがエージェントとして動作してするかどうかを決定するために起動時にユーザーのデフォルトをチェックしてください。
#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フレームワークを追加することを忘れないでください。
また、 'Info.plist'の変更は、権限が不十分で、(ディスクイメージのような)読み取り専用ボリュームでも失敗します。 – gcbrueckmann
ありがとうRob Keniger.itsはうまく動作します – sp309