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

Posted

技术标签:

【中文标题】OSX Swift 在默认浏览器中打开 URL【英文标题】:OSX Swift open URL in default browser 【发布时间】:2014-12-29 13:19:13 【问题描述】:

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

我发现了很多类似 UIApplication 的东西

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

但这仅适用于 ios,不适用于 OSX

我发现Launch Services 没有 swift 的示例,并且 OSX 10.10 有很多已弃用

欢迎任何帮助 - 谢谢。

【问题讨论】:

我猜这是因为我们应该使用新的扩展来代替...... 我投了赞成票,因为我只需要知道如何在 iOS 中做到这一点 xd 【参考方案1】:

对于 MacOS,你可以使用这个:

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

对于 iOS,您可以使用以下内容:

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

你必须解开 NSURL。

【讨论】:

为什么这有 23 票?与问题无关,应删除。 这是一种误导,因为它不适用于问题中使用的平台。 责备谷歌以这种方式索引此页面并且所有搜索 iOS 铅野兔......这很有用:) 如果由于字符串不是有效的 URL 而导致 URL 为 nil,则此代码会崩溃。在 Swift 中使用感叹号时需要小心,否则整个程序会崩溃。 @Kaydell 如果您使用字符串文字或任何编译时常量来创建 url,那么强制展开它是非常好的。在这些情况下,添加任何错误处理代码是没有意义的。如果该值为 nil,则仅表示您输入了一个错字。【参考方案2】:

对于 Swift 5Xcode 10MAC OS

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

【讨论】:

只使用 URL,而不是 URL 和 NSURL。例如:if let url = URL(string: "https://www.lichess.org") NSWorkspace.shared.open(url) 【参考方案3】:

Swift 3 或更高版本

import Cocoa

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


【讨论】:

【参考方案4】:

MacOS Xcode 10 Swift 4.2 更新

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

【讨论】:

【参考方案5】:

macOS:

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

iOS:

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

【讨论】:

Swift 早期版本的良好参考(我在 2.3 上) 请描述第二个代码块是针对iOS的【参考方案6】:

xCode 9 更新

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

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

【讨论】:

这是为 iOS 而不是 macOS【参考方案7】:

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

/// 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
  )

【讨论】:

【参考方案8】:

使用 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") if NSWorkspace.shared().open(checkURL) print("URL 成功打开") else print("无效 URL")

以上是关于OSX Swift 在默认浏览器中打开 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在Swift中检查URL的有效性?

在默认网络浏览器中打开 URL

Phonegap:在默认浏览器中打开 URL

在WinRT中的默认Web浏览器中打开URL

没有为请求的 URL 配置默认文档,并且没有在服务器上启用目录浏览?求解

如何使用 VB .NET 中的默认浏览器打开 URL?