openURL
đã bị phản đối trong Swift3. Bất cứ ai cũng có thể cung cấp một số ví dụ về cách openURL:options:completionHandler:
hoạt động của sự thay thế khi cố gắng mở một url?
openURL
đã bị phản đối trong Swift3. Bất cứ ai cũng có thể cung cấp một số ví dụ về cách openURL:options:completionHandler:
hoạt động của sự thay thế khi cố gắng mở một url?
Câu trả lời:
Tất cả bạn cần là:
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)
}
String
trênURL
Câu trả lời trên là chính xác nhưng nếu bạn muốn kiểm tra bạn canOpenUrl
hay không thử như thế này.
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)")
})
}
Lưu ý: Nếu bạn không muốn xử lý hoàn thành, bạn cũng có thể viết như thế này.
UIApplication.shared.open(url, options: [:])
Không cần phải viết completionHandler
vì nó chứa giá trị mặc định nil
, kiểm tra tài liệu apple để biết thêm chi tiết.
Nếu bạn muốn mở bên trong ứng dụng thay vì rời khỏi ứng dụng, bạn có thể nhập SafariService và giải quyết nó.
import UIKit
import SafariServices
let url = URL(string: "https://www.google.com")
let vc = SFSafariViewController(url: url!)
present(vc, animated: true, completion: nil)
Phiên bản 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)
}
}
replacingOccurrences
.
Tôi đang sử dụng macOS Sierra (v10.12.1) Xcode v8.1 Swift 3.0.1 và đây là những gì đã làm việc với tôi trong ViewContoder.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.
}
};