MAS是否会拒绝使用NSTask和open命令打开Safari或其他应用程序



我将打开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
                                        );

最新更新