默认浏览器中的OSX Swift打开URL


77

如何通过使用Swift作为编程语言并使用OSX作为平台在系统默认浏览器中打开url。

我在UIApplication中发现了很多东西,例如

UIApplication.sharedApplication().openURL(NSURL(string: object.url))

但这仅适用于iOS而不适用于OSX

发射服务,我发现有迅速没有例子并没有过时的OSX 10.10很多

欢迎任何帮助-谢谢。


1
我猜是因为我们应该改用新的扩展程序…
Michele De Pascalis 2014年

1
我之所以投票,是因为我只需要知道如何在iOS中执行xd
Josh

Answers:


133

Swift 3或更高版本

import Cocoa

let url = URL(string: "https://www.google.com")!
if NSWorkspace.shared.open(url) {
    print("default browser was successfully opened")

}

44

对于MacOS,您可以使用以下命令:

let url = URL(string: "https://www.stackoverflow.com")!
NSWorkspace.sharedWorkspace().openURL(url))

对于iOS,可以使用以下命令:

let url = NSURL(string: "https://google.com")!
UIApplication.sharedApplication().openURL(url)

您必须解开NSURL。


9
为什么有23个投票?问题之外的话题,应将其删除。
xandermonkey '16

2
这具有误导性,因为它不适用于问题中使用的平台。
KoCMoHaBTa

5
怪罪的Google用这种方式索引了此页面,并且所有对iOS铅野兔的搜索都非常有用...)
Lachezar Todorov

如果由于字符串不能为有效URL而使URL为nil,则此代码崩溃。使用感叹号时,在Swift中要格外小心,否则整个程序都会崩溃。
凯德尔

@Kaydell如果您使用字符串文字或任何编译时常量来创建url,则将其强制展开是完全可以的。在这些情况下,添加任何错误处理代码是没有意义的。如果值为零,则表明您输入了错误。
彼得·斯科恩

12

苹果系统:

NSWorkspace.sharedWorkspace().openURL(NSURL(string: "https://google.com")!)

iOS:

UIApplication.sharedApplication().openURL(NSURL(string: "https://google.com")!)

对早期版本的Swift的很好参考(我在2.3上)
Stefano Buora,

2
请描述第二个代码块适用于iOS
Lachezar Todorov

11

使用Swift 3时,您可以使用以下方法在默认浏览器中打开网页:

NSWorkspace.shared().open(NSURL(string: "https://google.com")! as URL)

在上面接受的答案中,您还可以通过输入以下内容使用Swift 3检查URL :

if let checkURL = NSURL(string: "https://google.com") {
    if NSWorkspace.shared().open(checkURL as URL) {
        print("URL Successfully Opened")
    }
} else {
    print("Invalid URL")
}

我希望这些信息对适用于任何人的人都有帮助。


因为这是Swift 3,所以我认为NSURL不再是必需的-只需使用URL:NSWorkspace.shared()。open(URL(string:“ google.com”)!),如果让checkURL = URL(string: “ google.com”){如果NSWorkspace.shared()。open(checkURL){print(“ URL成功打开”)}}否则{print(“ Invalid URL”)}
gepree

9

xCode 9更新

let url = URL(string: "https://www.google.com")!

UIApplication.shared.open(url, options: [:], completionHandler: nil)

3
这是iOS和MacOS的不
Grumme

8

只是奖金。如果要在特定的浏览器(甚至是其他可以处理该URL的客户端)中打开URL,以下是在Xcode 8.2.1和macOS 10.12.2上经过测试的Swift 3代码。

/// appId: `nil` use the default HTTP client, or set what you want, e.g. Safari `com.apple.Safari`
func open(url: URL, appId: String? = nil) -> Bool {
  return NSWorkspace.shared().open(
    [url],
    withAppBundleIdentifier: appId,
    options: NSWorkspaceLaunchOptions.default,
    additionalEventParamDescriptor: nil,
    launchIdentifiers: nil
  )
}

6

对于Swift 5Xcode 10MAC OS

NSWorkspace.shared.open(NSURL(string: "http://www.lichess.org")! as URL)

2
仅使用URL,而不是同时使用URL和NSURL。例如:if let url = URL(string: "https://www.lichess.org") { NSWorkspace.shared.open(url) }
gepree

3

MacOS Xcode 10 Swift 4.2更新

NSWorkspace.shared.open(URL(string: "https://www.google.com")!)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.