OSX Swift open URL in default browser

前端 未结 8 1150
情话喂你
情话喂你 2020-12-04 14:10

How to open a url in system default browser by using Swift as programming language and OSX as plattform.

I found a lot with UIApplication like

UIAppl         


        
相关标签:
8条回答
  • 2020-12-04 14:45

    For MacOS, you can use this:

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

    For iOS, you can use the following:

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

    You have to unwrap NSURL.

    0 讨论(0)
  • 2020-12-04 14:50

    xCode 9 update

    let url = URL(string: "https://www.google.com")!
    
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
    
    0 讨论(0)
  • 2020-12-04 14:50

    For Swift 5, Xcode 10 and MAC OS:

    NSWorkspace.shared.open(NSURL(string: "http://www.lichess.org")! as URL)
    
    0 讨论(0)
  • 2020-12-04 14:50

    MacOS Xcode 10 Swift 4.2 update

    NSWorkspace.shared.open(URL(string: "https://www.google.com")!)
    
    0 讨论(0)
  • 2020-12-04 14:53

    When using Swift 3, you can open a webpage in the default browser using the following:

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

    In the accepted answer above, you can also check a URL using Swift 3 by inputting the following:

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

    I hope that this information helps whomever it applies to.

    0 讨论(0)
  • 2020-12-04 15:01

    Just a bonus. If you want to open a URL in a specific browser(even other client who can handle that URL), here is the Swift 3 code tested on Xcode 8.2.1 and macOS 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
      )
    }
    
    0 讨论(0)
提交回复
热议问题