gpt4 book ai didi

ios - 使用 iOS9 更改的 UIWebView Navigator userAgent 属性不起作用

转载 作者:行者123 更新时间:2023-11-28 15:15:41 28 4
gpt4 key购买 nike

我有 UIWebView,我需要在其中更改 Navigator userAgent 属性。

对于 iOS 版本 10+,下面的代码完美运行:

func webViewDidFinishLoad(_ webView: UIWebView) {
let script = "window.navigator.__defineGetter__('userAgent', function() " +
"{ return '+keys +thatIs +neededTo +add'; });"
webView.stringByEvaluatingJavaScript(from: script)
}

但在 iOS9 中这不起作用。有人有什么主意吗?在 Info.plist 中,我已将 NSAllowsArbitraryLoads 设置为 true。

最佳答案

用户代理需要在UserDefaults中设置。您可以使用以下代码进行设置。

func setUserAgent(as userAgentString: String) {
UserDefaults.standard.register(defaults: ["UserAgent": userAgentString])
}

用法:

let userAgentString = "USER AGENT STRING HERE"
setUserAgent(as: userAgentString)

编辑:

我看到您想将一些字符串附加到当前的 UserAgent。为此,您需要读取当前用户代理的值,存储它,添加您的自定义字符串,然后存储新的用户代理。用法保持不变。

func setUserAgent(as value: String) {

let webView = UIWebView(frame: CGRect(width: 0, height: 0))
let defaultUserAgentString = webView.stringByEvaluatingJavaScript(from: "navigator.userAgent")

UserDefaults.standard.register(defaults: ["UserAgent": defaultUserAgentString + " " + value])
// remove the " " space if you don't need it
}

编辑 2:

是的,改变它会改变你应用程序中的所有 WebView 。为避免这种情况,您可以...

func setUserAgent(as value: String) {

let webView = UIWebView()
Constants.defaultUserAgentString = webView.stringByEvaluatingJavaScript(from: "navigator.userAgent") ?? ""

UserDefaults.standard.register(defaults: ["UserAgent": defaultUserAgentString + " " + value])
}

func resetUserAgent() {

if let defaultString = Constants.defaultUserAgentString {
UserDefaults.standard.register(defaults: ["UserAgent": defaultString])
}
}

Constants 这里是一个struct/class,用来存储全局常量,如果你有自己的struct/class,你可以替换它。只需添加静态变量 defaultUserAgentString 即可跟踪默认用户代理。完成后使用 resetUserAgent() 切换回默认用户代理。也许将它添加到 ViewController 上的 viewWillDisappear() 处理需要修改用户代理的 WebView

关于ios - 使用 iOS9 更改的 UIWebView Navigator userAgent 属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46905518/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com