2017-05-17 2 views
0

Ich betreibe versuchen Apple Befehl von Swift Code wie folgt auszuführen:Swift/Apple: Kann Apple Skript von Swift Code

var appleScriptCmd = "tell application \"System Events\" to make login item at end with properties {path:\"" + appPath + "\", hidden:false, name:\"Some App\"}"; 

var appleScriptCmd2 = "tell application \"System Events\" to set visible of process \"Safari\" to false"; 

und dann habe ich versucht, beide:

let script = NSAppleScript(source: appleScriptCmd2)!; 
     var errorDict : NSDictionary? 
     script.executeAndReturnError(&errorDict) 
     if errorDict != nil { print(errorDict!) } 

oder ältere Ansatz :

funktioniert nicht und gleichzeitig beide Befehle, die ich ausprobiert habe, arbeiten aus Terminal-Programm mit osascrip t -e "ein Befehl" -Tool.

+0

Der Code soll funktionieren. Ist die App Sandboxed? – vadian

+0

Was bedeutet Sandboxed? –

+0

Ich habe in Project Settings> Capabilities App Sandbox aktivieren, aber ich verwende die App normal durch Drücken der Play-Taste (ohne Archiv) –

Antwort

2

Da die App Sandbox ist (Projekteinstellungen> Capabilities einschalten App Sandbox) Sie haben drei Möglichkeiten:

  • hinzufügen temporary entitlements für die Anwendungen, die Sie verwenden möchten.
  • Setzen Sie Ihre Skripte in das entsprechende Verzeichnis in ~/Library/Application Scripts/ und verwenden Sie NSUserAppleScriptTask.
  • Implementieren Sie eine AppleScriptObjC-Brücke und führen Sie den AppleScript-Code aus dem ASOC-Framework aus (erfordert auch eine Objective-C-Bridging-Headerdatei).

In einer Sandbox-App NSAppleScript weigert sich zu arbeiten.

+0

Meinst du, dass App im Mac App Store AppleScript nicht verwenden kann? –

+0

Mit einer der drei Optionen kann es. Die empfohlene Option von Apple ist die zweite. Für den ersten brauchen Sie gute Gründe, das Apple-Team zu überzeugen und ich weiß nicht, ob Option drei unterstützt wird. – vadian

+0

Wenn ich richtig verstehe, muss dieses Skript vom Benutzer der Endanwendung manuell in diesem "~/Library/Application Scripts /" platziert werden oder kann von der Anwendung vorinstalliert werden? –