我将打开Safari、其他系统应用程序和第三方应用程序,代码如下:
let task = NSTask()
task.launchPath = "/usr/bin/open"
task.arguments = ["Safari"]
task.launch()
它会被MAS审查拒绝吗?
我知道苹果公司推荐了一种利用Apple Script和com.Apple.security.scripting-targets的方法。但现在它太弱了。
感谢
实际上,推荐的启动应用程序的方法是
NSWorkspace.sharedWorkspace().launchApplication("Safari")
或者更复杂的
let sharedWorkspace = NSWorkspace.sharedWorkspace()
if let safariURL = sharedWorkspace.URLForApplicationWithBundleIdentifier("com.apple.safari") {
try? sharedWorkspace.launchApplicationAtURL(safariURL, options: NSWorkspaceLaunchOptions(), configuration: [:])
}
更复杂的是,您可以使用参考中描述的启动服务LSOpenFromURLSpec。传递specs数组中的launchs选项。
LSLaunchURLSpec inLaunchSpec;
inLaunchSpec.appURL = (__bridge CFURLRef) urlOfAppToOpen;
inLaunchSpec.itemURLs = (__bridge CFArrayRef) (arrayOfurlsOfFilesToOpenWithApp);
inLaunchSpec.passThruParams = NULL;
inLaunchSpec.launchFlags = kLSLaunchDefaults;
inLaunchSpec.asyncRefCon = NULL;
CFURLRef outLaunchedURL;
OSStatus diditOpen = LSOpenFromURLSpec (
&inLaunchSpec,
&outLaunchedURL
);