如何从 iOS 8 开始获取浏览器 UserAgent 字符串?

Posted

技术标签:

【中文标题】如何从 iOS 8 开始获取浏览器 UserAgent 字符串?【英文标题】:How to get browser UserAgent string from iOS 8 onwards? 【发布时间】:2015-12-17 18:13:18 【问题描述】:

除了使用以下方法之外,还有其他方法可以获取 ios 浏览器 UserAgent 字符串吗?请帮忙。

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
[webView loadhtmlString:@"<html></html>" baseURL:nil];

[webView evaluatejavascript:@"navigator.userAgent" completionHandler:^(id __nullable userAgent, NSError * __nullable error) 
        NSLog(@"%@", userAgent);
];

【问题讨论】:

您获取 userAgent 的方法是我们想出的最佳方法,@arango_86。我们绝对不会尝试将 UIWebView 用户代理与 WKWebView 用户代理进行匹配。 【参考方案1】:

试试这个:

UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

【讨论】:

嗨@Renandus,我打算使用“WKWebView”。但这种方式似乎是一种黑客行为。不是标准的。我的问题是还有其他方法可以做到这一点。而不是破解“navigator.userAgent”。 我认为没有其他办法,因为我们只能从 UIWebView 获取用户代理 为什么这是一个黑客行为? navigator.userAgent 值正是 webview 将用于请求的值。所以是最准确的。我唯一的建议是改用WKWebView,因为不能保证UIWebView 的用户代理与WKWebView 完全相同。 同意。我想知道苹果为什么要这样做。如果有 API 来设置 customUserAgent ,为什么他们不能有 API 来获取“defaultUserAgent”。

以上是关于如何从 iOS 8 开始获取浏览器 UserAgent 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过Qt5获取ios文档/库路径?

如何从扩展 iOS 8 获取 NSManagedObjectContext 实例

如何从HttpServletRequest request里面获取客户端提交的post内容

如何在 swift [iOS] 中从特定时间开始发送本地通知 UNTimeInterval

在 iOS 8.3 上获取 CellID、LAC、...

如何根据ios中的特定键从数组中获取字典