如何在使用自定义用户代理的 SwiftUI 中创建 Safari 视图?

问题描述

我正在尝试使用 SafariServices 框架创建一个使用 Safari 视图的 SwiftUI 应用程序,并为该视图分配一个自定义用户代理,以便网站相信 Web 浏览器是适用于 macOS 的 Safari,当我真正使用 Safari 时适用于 iPhone 上的 iOS。

这是我使用 UIKit 包装的 Safari 视图:

struct SafariView: UIViewControllerRepresentable {
    
    let url: String
    
    func makeUIViewController(context: UIViewControllerRepresentableContext<SafariView>) -> SFSafariViewController {
        
        var safariViewController = SFSafariViewController(url: URL.init(string: url)!)
        
        safariViewController.preferredBarTintColor = .systemBackground
        safariViewController.configuration.entersReaderIfAvailable = false
        safariViewController.dismissButtonStyle = .close
        
        return safariViewController

    }
    
    func updateUIViewController(_ uiViewController: SFSafariViewController,context: UIViewControllerRepresentableContext<SafariView>) {}
    
}

我似乎无法弄清楚应用自定义用户代理需要做什么。我确定我需要在 makeUIViewController 函数添加一些东西,但我不知道我需要使用什么属性。有人可以帮我吗?

解决方法

SFSafariViewController 确实是 Safari 的一个实例,可以完全访问其所有功能,因此您不能更改用户代理。但是,如果您需要此功能,您可以改用 WKWebView 并设置 customUserAgent