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

Posted

技术标签:

【中文标题】如何在使用自定义用户代理的 SwiftUI 中创建 Safari 视图?【英文标题】:How do I create a Safari View in SwiftUI that uses a custom user agent? 【发布时间】:2021-01-14 00:29:28 【问题描述】:

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

【问题讨论】:

这能回答你的问题吗? Force SFSafariViewController to load the desktop version of a website 【参考方案1】:

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

【讨论】:

以上是关于如何在使用自定义用户代理的 SwiftUI 中创建 Safari 视图?的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中创建一个包含自定义类数组的列表

如何修复自定义按钮在 SwiftUI(IOS) 中的交互?

如何在 SwiftUI 中添加自定义容器视图

SwiftUI - 多选列表(不是自定义列表)

如何在 VSCode 中创建自定义对话框?

如何在 WordPress 插件安装中创建 MySql 用户自定义函数?