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 5、Xcode 10 和 MAC 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的主要内容,如果未能解决你的问题,请参考以下文章