programing

Swift에서 URL을 여는 방법

stoneblock 2023. 4. 9. 21:01

Swift에서 URL을 여는 방법

openURL는 Swift 3에서 폐지되었습니다.

대체가 어떻게 이루어지는지 예를 들어줄 수 있는 사람이 있나요?openURL:options:completionHandler:작동합니까?

필요한 것은 다음과 같습니다.

guard let url = URL(string: "http://www.google.com") else {
  return //be safe
}

if #available(iOS 10.0, *) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
    UIApplication.shared.openURL(url)
}

위 답변은 맞지만, 만약 당신이 당신을 확인하고 싶다면canOpenUrl아니면 이렇게 하지 마세요.

let url = URL(string: "http://www.facebook.com")!
if UIApplication.shared.canOpenURL(url) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
    //If you want handle the completion block than 
    UIApplication.shared.open(url, options: [:], completionHandler: { (success) in
         print("Open url : \(success)")
    })
}

주의: 완료를 처리하고 싶지 않은 경우 다음과 같이 쓸 수도 있습니다.

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

쓸 필요 없음completionHandler디폴트값이 포함되어 있기 때문에nil자세한 것은, Apple 의 메뉴얼을 참조해 주세요.

앱을 종료하지 않고 앱 내부에서 열고 싶다면 Safari Services를 Import하여 해결할 수 있습니다.

import UIKit
import SafariServices

let url = URL(string: "https://www.google.com")
let vc = SFSafariViewController(url: url!)
present(vc, animated: true, completion: nil)

Swift 3 버전

import UIKit

protocol PhoneCalling {
    func call(phoneNumber: String)
}

extension PhoneCalling {
    func call(phoneNumber: String) {
        let cleanNumber = phoneNumber.replacingOccurrences(of: " ", with: "").replacingOccurrences(of: "-", with: "")
        guard let number = URL(string: "telprompt://" + cleanNumber) else { return }

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

macOS Sierra (v10.12.1) Xcode v8.1 Swift 3.0.1을 사용하고 있는데 ViewController.swift에서는 다음과 같이 작동합니다.

//
//  ViewController.swift
//  UIWebViewExample
//
//  Created by Scott Maretick on 1/2/17.
//  Copyright © 2017 Scott Maretick. All rights reserved.
//

import UIKit
import WebKit

class ViewController: UIViewController {

    //added this code
    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Your webView code goes here
        let url = URL(string: "https://www.google.com")
        if UIApplication.shared.canOpenURL(url!) {
            UIApplication.shared.open(url!, options: [:], completionHandler: nil)
            //If you want handle the completion block than
            UIApplication.shared.open(url!, options: [:], completionHandler: { (success) in
                print("Open url : \(success)")
            })
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


};

언급URL : https://stackoverflow.com/questions/39546856/how-to-open-an-url-in-swift