在Swift中以URL启动Safari(不是默认浏览器)?

时间:2019-08-14 13:03:55

标签: swift macos safari

我需要专门打开Safari,而不是默认浏览器。如果使用Chrome / Firefox /默认浏览器,则我的应用仍需要在Safari中打开URL。

我已经上网了,但是我只能看到在这样的默认浏览器中打开...

let url = URL(string: host)!
NSWorkspace.shared.open(url)

...仅在用户默认使用Safari时才适用。

如何专门在Safari中打开URL?

不重复-另一个问题不在Swift中...

1 个答案:

答案 0 :(得分:0)

好吧,我找到了解决方案,但这有点hack ...

用于制作bash命令的Shell函数:

 func shell(command: String) -> String {
    var output = ""
    var error = ""

    do {
        let task = Process()

        task.launchPath = "/bin/bash"

        task.arguments = ["-c", command]

        let outputPipe = Pipe()
        task.standardOutput = outputPipe
        let errorPipe = Pipe()
        task.standardError = errorPipe

        try task.run()
        let outputData = outputPipe.fileHandleForReading.readDataToEndOfFile()
        output = NSString(data: outputData, encoding: String.Encoding.utf8.rawValue)! as String
        let errorData = errorPipe.fileHandleForReading.readDataToEndOfFile()
        error = NSString(data: errorData, encoding: String.Encoding.utf8.rawValue)! as String
    }
    catch let err as NSError{
        output = err.localizedDescription
    }
    return error + "\n" + output + "\n"
}

在bash中,您可以使用:open -a safari www.blahblahblah.com

因此在Swift中,我可以这样实现:

shell(command: "open -a safari " + host)

有点hack,但是可以用