如何更改混合应用程序的 UIWebView (iOS) 的用户代理
How to change the User-Agent for UIWebView (iOS) of a hybrid application
使用 IBM MobileFirst Platform 7.0 我无法修改 UIWebView 的用户代理。我有一个混合应用程序(HTML/CSS、JS、Objective-C)并尝试了 UIWebView iOS5 changing user-agent(问答版本):
@implementation MyAppDelegate
+ (void)initialize
{
NSString* useragent = @"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0";
NSLog(@"Setting User-Agent to: %@", useragent);
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:useragent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
}
(...)
and/or
(...)
[request setValue:@"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0" forHTTPHeaderField:@"User-Agent"];
[webView loadRequest: request];
NSLog(@"Getting UA: %@", [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]);
(...)
但我的输出是:
Getting UA: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20130401 Firefox/31.0/Worklight/7.0.0.0
我试图在配置中的某处找到此令牌,但没有成功...
我能够通过将以上代码添加到 IBM Example, project "IncludeExternalPages" 来重现此问题。如果有帮助,我很乐意提供代码。
这在技术上可能是可行的,但请注意,MobileFirst Platform 的框架依赖于它提供的默认用户代理,因此不建议您更改它。
你应该问问自己:
- 为什么我需要更改它
- 我可以用不同的方式处理它吗(headers?通过代码?)
好的,唯一对我有用的是使用:
我)
NSString* useragent = @"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0";
NSLog(@"Setting User-Agent to: %@", useragent);
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:useragent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
ii)
在 AppDelegate
中 wlInitDidCompleteSuccessfully
的开头
三)
卸载并重新安装应用后
使用 IBM MobileFirst Platform 7.0 我无法修改 UIWebView 的用户代理。我有一个混合应用程序(HTML/CSS、JS、Objective-C)并尝试了 UIWebView iOS5 changing user-agent(问答版本):
@implementation MyAppDelegate
+ (void)initialize
{
NSString* useragent = @"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0";
NSLog(@"Setting User-Agent to: %@", useragent);
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:useragent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
}
(...)
and/or
(...)
[request setValue:@"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0" forHTTPHeaderField:@"User-Agent"];
[webView loadRequest: request];
NSLog(@"Getting UA: %@", [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]);
(...)
但我的输出是:
Getting UA: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20130401 Firefox/31.0/Worklight/7.0.0.0
我试图在配置中的某处找到此令牌,但没有成功...
我能够通过将以上代码添加到 IBM Example, project "IncludeExternalPages" 来重现此问题。如果有帮助,我很乐意提供代码。
这在技术上可能是可行的,但请注意,MobileFirst Platform 的框架依赖于它提供的默认用户代理,因此不建议您更改它。
你应该问问自己:
- 为什么我需要更改它
- 我可以用不同的方式处理它吗(headers?通过代码?)
好的,唯一对我有用的是使用:
我)
NSString* useragent = @"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0";
NSLog(@"Setting User-Agent to: %@", useragent);
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:useragent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
ii) 在 AppDelegate
中wlInitDidCompleteSuccessfully
的开头
三) 卸载并重新安装应用后