Подтвердить что ты не робот

Открывающий URL OSX Swift в браузере по умолчанию

Как открыть URL-адрес в системном браузере по умолчанию, используя Swift как язык программирования и OSX в виде plattform.

Я нашел много с помощью UIApplication, например

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

но это работает только на iOS, а не на OSX

И Launch Services, я нашел, нет примеров для быстрого и много устарел для OSX 10.10

Любая помощь приветствуется - спасибо.

4b9b3361

Ответ 1

Swift 3 или позже

import Cocoa

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

}

Ответ 2

Для 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.

Ответ 3

MacOS:

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

IOS:

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

Ответ 4

При использовании Swift 3 вы можете открыть веб-страницу в браузере по умолчанию, используя следующее:

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

В принятом ответе выше вы также можете проверить URL-адрес с помощью Swift 3, введя следующее:

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

Я надеюсь, что эта информация поможет кому бы то ни было.

Ответ 5

Обновление xCode 9

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

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

Ответ 6

Просто бонус. Если вы хотите открыть URL-адрес в определенном браузере (даже для другого клиента, который может обрабатывать этот URL-адрес), вот код Swift 3, протестированный на Xcode 8.2.1 и 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
  )
}

Ответ 7

Для Swift 5, Xcode 10 и MAC OS:

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

Ответ 8

Обновление MacOS Xcode 10 Swift 4.2

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

Ответ 9

Swift 4

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

Ответ 10

Лучше всего безопасно развернуть необязательные переменные:

guard let url = URL(string: "https://www.google.com") else {
  return
}
NSWorkspace.shared.open(url)

Ответ 11

Для iOS лучше всего проверять все необходимые параметры

if let url = URL(string: "https://somurl.com/xyz"),
        UIApplication.shared.canOpenURL(url)
    {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(url)
        }
    }