OSX Swift-URL im Standardbrowser öffnen


73

So öffnen Sie eine URL im Standardbrowser des Systems, indem Sie Swift als Programmiersprache und OSX als Plattform verwenden.

Ich fand viel mit UIApplication wie

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

Dies funktioniert jedoch nur unter iOS und nicht unter OSX

Und die Launch Services , die ich gefunden habe, haben keine Beispiele für schnelle und es gibt eine Menge veralteter für OSX 10.10

Jede Hilfe willkommen - danke.


1
Ich denke, das liegt daran, dass wir stattdessen die neuen Erweiterungen verwenden sollen ...
Michele De Pascalis

1
Ich habe upvoted, weil ich wissen muss, wie man das in iOS nur xd macht
Josh

Antworten:


129

Swift 3 oder höher

import Cocoa

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

}

44

Für MacOS können Sie Folgendes verwenden:

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

Für iOS können Sie Folgendes verwenden:

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

Sie müssen NSURL auspacken.


9
Warum hat dies 23 positive Stimmen? Off Topic zur Frage und sollte entfernt werden.
Xandermonkey

2
Dies ist irreführend, da es für die in der Frage verwendete Plattform nicht funktioniert.
KoCMoHaBTa

5
Beschuldigen Sie Google, dass diese Seite auf diese Weise indiziert wurde und alle Suchanfragen nach iOS-
Bleihasen

Wenn die URL Null ist, weil die Zeichenfolge keine gültige URL sein konnte, stürzt dieser Code ab. Sie müssen in Swift vorsichtig sein, wenn Sie Ausrufezeichen verwenden oder das gesamte Programm abstürzt.
Kaydell

@ Kaydell Wenn Sie ein String-Literal oder eine Konstante zur Kompilierungszeit verwenden, um die URL zu erstellen, ist das erzwungene Auspacken vollkommen in Ordnung. In diesen Fällen macht es keinen Sinn, Fehlerbehandlungscode hinzuzufügen. Wenn der Wert Null ist, bedeutet dies nur, dass Sie einen Tippfehler gemacht haben.
Peter Schorn

12

Mac OS:

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

iOS:

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

Gute Referenz für frühere Versionen von Swift (ich bin auf 2.3)
Stefano Buora

2
Bitte beschreiben Sie, dass der zweite Codeblock für iOS ist
Lachezar Todorov

11

Wenn Sie Swift 3 verwenden , können Sie eine Webseite im Standardbrowser wie folgt öffnen:

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

In der oben akzeptierten Antwort können Sie eine URL auch mit Swift 3 überprüfen, indem Sie Folgendes eingeben:

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

Ich hoffe, dass diese Informationen jedem helfen, für den sie gelten.


Da dies Swift 3 ist, denke ich nicht, dass NSURL mehr notwendig ist - verwenden Sie einfach die URL: NSWorkspace.shared (). Open (URL (Zeichenfolge: " google.com")! ) Und lassen Sie checkURL = URL (Zeichenfolge: " google.com" ) {if NSWorkspace.shared (). open (checkURL) {print ("URL erfolgreich geöffnet")}} else {print ("Ungültige URL")}
gepree

10

xCode 9-Update

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

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

3
Dies ist für iOS und nicht für MacOS
Grumme

8

Nur ein Bonus. Wenn Sie eine URL in einem bestimmten Browser öffnen möchten (auch in einem anderen Client, der diese URL verarbeiten kann), finden Sie hier den Swift 3- Code, der unter Xcode 8.2.1 und macOS 10.12.2 getestet wurde.

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

5

Für Swift 5 , Xcode 10 und MAC OS :

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

1
Verwenden Sie einfach URL, nicht sowohl URL als auch NSURL. Zum Beispiel:if let url = URL(string: "https://www.lichess.org") { NSWorkspace.shared.open(url) }
gepree

3

MacOS Xcode 10 Swift 4.2 Update

NSWorkspace.shared.open(URL(string: "https://www.google.com")!)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.