Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> iOS

Cách mở trang web trong trình duyệt Safari từ ứng dụng iOS

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".

Cách mở trang web trong trình duyệt Safari từ ứng dụng iOS

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:

Cách mở trang web trong trình duyệt Safari từ ứng dụng iOS

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)