22

ユーザーがオプションを選択した場合にアプリを自動起動したい。私が使用していた方法は、サンドボックス化されたアプリでは許可されなくなりました。

私はそれを達成するためにヘルパーを作成する必要があることを知っていますか?それをアクティブにするためのサンプルコードを含む簡単なチュートリアルはありますか?

このチュートリアルを見つけましたが、機能しません:http ://www.delitestudio.com/2011/10/25/start-dockless-apps-at-login-with-app-sandbox-enabled/

これはかなり標準的なことです。なぜサンプルプロジェクトが利用できないのかわかりません。

アップデート:

サンプルプロジェクトをアップロードしました:http://ge.tt/6DntY4K/v/0 ?c

4

3 に答える 3

21

この(免責事項:私の)チュートリアルを使用して成功する必要があります。サンプルプロジェクトが含まれています。

更新:アップロードしたサンプルプロジェクトをテストしました。変更を加えることなく問題なく動作し、ログイン時の起動は成功します。唯一の秘訣は、ログイン時に正常に起動するには、AutoStart.appファイルを/ Applicationsまたは〜/Applicationsフォルダーに配置する必要があることです。これは、アプリがサンドボックス化されているかどうかに関係なく必要です。ただし、これに関する公式のドキュメントはありません。恐れ入ります。

于 2012-07-05T20:52:48.490 に答える
11

ティムのチュートリアルで約100回の試行をやり直しました。ついに私はそれを機能させました。私が最初にそれを試したとき、私はそれがうまくいったことを誓いますが。私の状況では、「ログイン時に起動」をオンに切り替えると、ログイン直後にヘルパーアプリが起動したのを1秒間しか見ることができません。それからそれはなくなった。アプリを手動で起動すると、スイッチがオフになっているのがわかりました。

これが私が見つけたものです:

  1. 私のバンドル識別子はすでにのリストにありました NSArray *running = [[NSWorkspace sharedWorkspace] runningApplications]
  2. のステータスはNSRunningApplication *app (bundle name equal to my app)[app isActive] == NO、、[app isHidden] == NO[app isTerminated] = NO

だから私は次のようにコードにいくつかの変更を加えました:

BOOL alreadyRunning = NO;
BOOL isActive = NO; // my modification
NSArray *running = [[NSWorkspace sharedWorkspace] runningApplications];
for (NSRunningApplication *app in running) {

    if ([[app bundleIdentifier] isEqualToString:@"com.mybundleidentifier"]) {
        alreadyRunning = YES;
        isActive = [app isActive]; // my modification
    }
}

if (!alreadyRunning || !isActive) { // my modification
  ....
于 2013-02-07T09:19:40.577 に答える
1

あなたは使用してみることができますService Management Framework

http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLoginItems.html#//apple_ref/doc/uid/10000172i-SW5-SW1

http://developer.apple.com/library/mac/#documentation/Security/Conceptual/AppSandboxDesignGuide/DesigningYourSandbox/DesigningYourSandbox.htmlから参照されています...

サンドボックス化されたアプリのログイン項目を作成するには、デーモンとで説明されているSMLoginItemSetEnabled関数(で宣言されている)を使用します。ServiceManagement/SMLoginItem.hAdding Login Items Using the Service Management FrameworkServices Programming Guide

(App Sandboxでは、ヘッダーファイルの関数を使用してログインアイテムを作成することはできませんLSSharedFileList.h。たとえば、関数を使用することはできませんLSSharedFileListInsertItemURL。また、関数を使用するなどして、起動サービスの状態を操作することもできませんLSRegisterURL)。

于 2012-07-05T17:06:40.407 に答える