首页 > 解决方案 > 如何在使用自定义用户代理的 SwiftUI 中创建 Safari 视图?

问题描述

我正在尝试使用 SafariServices 框架创建一个使用 Safari 视图的 SwiftUI 应用程序,并为该视图分配一个自定义用户代理,以便网站相信 Web 浏览器是 macOS 的 Safari,而我真的在使用 Safari for 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 函数中添加一些东西,但我不知道我需要使用什么属性。有人能帮助我吗?

标签: iosswiftsafariswiftuisafariservices

解决方案


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


推荐阅读