如何更改混合应用程序的 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 的开头

三) 卸载并重新安装应用后