Giới thiệu
Bài viết này minh họa cách mở một trang web trong trình duyệt mặc định (Safari) từ ứng dụng iOS bằng UIApplication.shared.open.
Các bước thực hiện
Bước 1: Tạo dự án
Xcode → New Project → Single View Application → Tên "OpenBrowser".
Bước 2: Thêm Button vào Storyboard
Đặt tiêu đề button là "Mở Facebook".

Bước 3: Tạo IBAction
@IBAction func openBrowser(_ sender: Any) { }
Bước 4: Viết code mở URL
@IBAction func openBrowser(_ sender: Any) {
let url = URL(string: "https://www.facebook.com")!
// Kiểm tra có thể mở URL không
if UIApplication.shared.canOpenURL(url) {
// Mở URL (iOS 10+)
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
print("Không thể mở URL: \(url)")
}
}
Giải thích
canOpenURL(_:): Kiểm tra hệ thống có app xử lý URL scheme này không.open(_:options:completionHandler:): Mở URL bất đồng bộ (iOS 10+).options[:]: Từ điển tùy chọn (ví dụ:[.universalLinksOnly: true]).completionHandler: Closure gọi khi mở xong (success/failure).
Bước 5: Chạy thử
Bấm button → Safari mở trang Facebook:

Mở URL với Scheme tùy chỉnh (Custom URL Scheme)
Để mở app khác (nếu cài đặt):
// Mở ứng dụng Zalo (nếu có cài)
let zaloURL = URL(string: "zalo://")!
if UIApplication.shared.canOpenURL(zaloURL) {
UIApplication.shared.open(zaloURL)
} else {
// Chuyển đến App Store tải Zalo
let appStoreURL = URL(string: "https://apps.apple.com/app/id...")!
UIApplication.shared.open(appStoreURL)
}
Lưu ý quan trọng (iOS 9+)
Cần khai báo **LSApplicationQueriesSchemes** trong Info.plist để canOpenURL hoạt động cho custom scheme:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>zalo</string>
<string>fb</string>
<string>twitter</string>
</array>
Nếu không khai báo, canOpenURL luôn trả về false và in log cảnh báo.
Phiên bản cũ (iOS 9 trở xuống - deprecated)
// Deprecated từ iOS 10 UIApplication.shared.openURL(url)